已有Azure Monitor Agent(Linux),如何用PM2日志接入Azure Monitor?
基于Azure Monitor Agent收集PM2日志并创建KQL指标与警报
一、配置Azure Monitor Agent采集PM2日志
已部署Linux版AMA的前提下,通过数据收集规则(DCR)配置日志采集:
- 找到目标Linux VM对应的数据收集规则,添加自定义日志数据源
- 指定PM2日志绝对路径:默认路径为
/home/[用户名]/.pm2/logs/[应用名]-out.log和/home/[用户名]/.pm2/logs/[应用名]-error.log,可使用通配符如/home/[用户名]/.pm2/logs/*.log匹配所有日志 - 设置日志格式为文本日志,若日志自带时间戳,配置对应的时间戳提取规则,确保
TimeGenerated字段对应日志实际生成时间 - 保存DCR,等待5-10分钟让配置生效,日志将流入
CustomLogs表(或自定义表名)
二、用KQL分析PM2日志
先运行基础查询确认日志采集状态:
CustomLogs | where TimeGenerated > ago(1h) | project TimeGenerated, RawData, Computer
针对业务需求编写细分查询:
1. 统计错误日志频次
CustomLogs | where RawData contains "ERROR" or _FileName contains "-error.log" | where TimeGenerated > ago(5m) | summarize ErrorCount = count() by bin(TimeGenerated, 1m), Computer
2. 统计应用重启次数
CustomLogs | where RawData contains "PM2 restart process" | where TimeGenerated > ago(1h) | summarize RestartCount = count() by Computer
3. 解析自定义业务错误码
若应用日志含格式如CODE:500的错误码:
CustomLogs | where RawData matches regex @"CODE:(\d+)" | parse RawData with * "CODE:" ErrorCode:int * | where TimeGenerated > ago(30m) | summarize ErrorCount = count() by ErrorCode, Computer
三、创建自定义指标
基于KQL查询生成可用于警报的指标:
- 在Azure Monitor日志界面运行目标KQL查询
- 点击顶部「新建警报规则」,进入配置流程
- 在「信号逻辑」中选择「自定义日志搜索」,粘贴查询语句,设置聚合方式(如计数、总和)、时间粒度与评估频率
- 保存为自定义指标,指标将同步至Azure Monitor指标库
四、配置警报规则
- 在警报规则配置页设置阈值:例如「5分钟内错误计数超过10次」触发警报
- 关联动作组:配置邮件、Teams消息、Webhook等通知方式(无动作组需先创建)
- 设置警报名称、描述与严重级别,保存规则
注意事项
- 确保AMA有日志读取权限:执行
sudo chmod o+r /home/[用户名]/.pm2/logs/*.log赋予azmonagent用户读取权限 - 若PM2日志无标准时间戳,需在DCR中调整时间提取规则,避免
TimeGenerated为采集时间而非日志生成时间 - KQL查询需根据实际日志格式调整,若日志为JSON格式,可使用
parse_json(RawData)解析结构化字段
内容的提问来源于stack exchange,提问作者EigenFool
相关产品推荐
相关产品推荐

