如何将Azure App Service自定义日志导入Azure Monitor并配置告警
一、自定义日志配置正确性校验
- 确认自定义日志的路径配置是否匹配Web App的实际日志路径:Azure Web App的Windows宿主站点根目录是
D:\home\site\wwwroot,Linux是/home/site/wwwroot,你配置的自定义日志路径必须写全绝对路径,支持通配符比如D:\home\site\wwwroot\logs\*.log,禁止使用相对路径。 - 如果你配置了Serilog日志滚动输出(按天/按大小切割文件),要确保自定义日志路径用了通配符匹配所有滚动生成的日志文件,不要固定写死单个日志文件名。
- 校验日志收集的时间戳提取规则:如果你的Serilog日志里带自定义时间戳,要确保自定义日志配置里的时间提取格式和你日志里的时间格式完全匹配,配置错误时日志会被判定为过期直接丢弃,不会入库。
- 检查自定义日志的行分隔规则:确保你配置的换行识别逻辑和Serilog输出的日志格式对齐,比如如果你的Serilog会输出多行异常栈,要确认配置里开启了多行匹配,否则会出现单条日志拆分、识别失败的问题。
二、Web App侧代理配置校验
- 确认你已经给Web App开启了对应代理:优先使用新版Azure Monitor Agent(AMA),不要用旧版Microsoft Monitoring Agent,Windows宿主需要在
诊断设置中开启自定义日志相关代理,Linux宿主需要确认已安装Log Analytics代理扩展。 - 检查Web App的网络配置:如果你的Web App开启了VNet集成或者出站流量限制,要确保代理可以出站访问Azure Monitor服务端点,不需要开放公网出站的话可以将Azure Monitor服务端点配置到对应VNet中。
- 验证日志文件的读取权限:确保Log Analytics代理有权限读取Serilog输出的日志文件,Azure Web App默认的运行身份和代理身份具备wwwroot目录读取权限,如果你手动修改过目录权限需要还原。
三、日志入库延迟与查询逻辑校验
- 自定义日志从采集到入库最多存在15分钟的延迟,刚配置完至少等待20分钟再执行查询,不要配置完成后立刻查询。
- 查询时要确认你选的表名是你自定义日志配置时指定的表名,默认会带
_CL后缀,比如你配置的表名叫AppSerilogLog,实际查询的表是AppSerilogLog_CL。 - 确认查询时选择的时间范围正确,不要选择早于自定义日志配置完成时间的范围,该时间段内无历史数据会返回空结果。
四、后续告警配置参考
日志可以正常查询后,直接在Log Analytics中编写匹配错误关键字的查询语句即可,示例如下:
AppSerilogLog_CL | where RawData has "自定义错误关键字" or RawData has "Exception" | where TimeGenerated > ago(5m)
基于该查询创建告警规则,在告警动作组中添加邮件接收人即可实现触发错误时自动发邮件通知的需求。
内容的提问来源于stack exchange,提问作者GREGGROUNDHOG
相关产品推荐
相关产品推荐

