如何基于Azure Function定时器触发器代码创建APIM API健康检查邮件警报
针对Azure Functions特定健康检查日志创建邮件警报的步骤
1. 确认日志已采集到Application Insights
消费型Azure Functions默认会关联Application Insights(创建函数时可指定),先确保你的函数输出的URL is not healthy. Status code: {statusCode}日志已被正确采集:
- 进入对应的Application Insights资源,左侧菜单打开Logs,搜索包含该字符串的日志,确认能查询到结果。
2. 编写自定义Kusto查询
在Application Insights的Logs页面,编写筛选目标日志的查询语句(根据日志记录级别调整severityLevel:3=Error,2=Warning,1=Information):
traces | where message contains "URL is not healthy. Status code:" | where severityLevel == 3 // 对应你记录日志时用的级别,比如用LogError就是3 | project timestamp, message, cloud_RoleName
执行查询,确保能返回目标日志条目。
3. 创建基于日志的警报规则
- 在Application Insights资源左侧菜单选择Alerts → Create → Alert rule
- 配置信号逻辑:
- 信号类型选择Custom log search
- 粘贴上述Kusto查询
- 设置警报逻辑:选择Number of results,条件设为Greater than 0;根据监控需求调整评估时间段(如5分钟)和频率(如5分钟)
- 配置动作组:
- 若无现成动作组,点击Create action group
- 填写动作组名称、资源组,添加Email/SMS/Push/Voice动作,输入收件邮箱后完成创建
- 选择刚创建的动作组
- 设置警报细节:
- 填写警报规则名称、描述,选择严重级别(如Critical)
- 保存警报规则
4. 验证警报触发
手动让APIM API返回错误状态码,触发函数输出目标日志,等待警报规则的评估周期,确认收件邮箱收到通知邮件。
额外注意事项
- 检查函数的
host.json日志配置,确保目标日志级别被允许发送到Application Insights:
若用{ "logging": { "applicationInsights": { "samplingSettings": { "isEnabled": true, "excludedTypes": "Request" } }, "logLevel": { "default": "Information", "Microsoft": "Warning" } } }_logger.LogError()记录目标日志,默认Error级别会被采集;若用其他级别,需对应调整logLevel或查询中的severityLevel。
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

