You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Azure Event Hubs/Functions未收到指定数据的告警规则

Azure Event Hubs/Functions 特定数据缺失告警配置方法

你之前配置的总计数、异常类告警用的是平台自带的聚合指标,这类指标不包含单条消息的内容字段,要实现指定内容的缺失检测,按以下步骤操作即可,你的7天消息保留期完全覆盖查询窗口要求,不需要调整保留策略。

前置准备

要查询消息里的studentId字段,你需要先把对应日志投递到Log Analytics工作区,二选一即可:

  • 给Event Hubs开启诊断设置,将「接收事件」类别的日志投递到你现有告警使用的Log Analytics工作区,开启后日志会包含消息属性与可解析的消息体
  • 如果你已经用Azure Functions消费Event Hubs消息,直接用Functions自带的日志即可,不需要额外开Event Hubs诊断:只需要在Functions处理消息的代码里,加一条打印studentId的日志即可,成本更低

核心查询语句

在Log Analytics里用Kusto查询语句统计指定时间窗口内,目标studentId的消息数量,数量为0就代表未收到对应数据。

场景1:过去6小时未收到studentId=1的消息(Event Hubs侧查询)

let targetStudentId = "1";
let checkTimeRange = 6h;
EHReceivedEvents
| where TimeGenerated >= ago(checkTimeRange)
| extend messagePayload = parse_json(Body)
| where tostring(messagePayload.studentId) == targetStudentId
| summarize msgCount = count()

场景2:过去6小时未收到studentId=1的消息(Azure Functions侧查询)

let targetStudentId = "1";
let checkTimeRange = 6h;
FunctionAppLogs
| where TimeGenerated >= ago(checkTimeRange)
| where LogLevel == "Information"
| where Message has strcat("studentId=", targetStudentId)
| summarize msgCount = count()

场景3:当日未收到studentId=1的消息

把上面查询里的checkTimeRange替换为now() - startofday(now())即可,统计范围自动覆盖当日0点到当前时间。

告警规则配置

  • 新建Log Analytics告警规则,条件选择自定义日志搜索,粘贴上面对应场景的查询语句
  • 告警逻辑设置为:度量值msgCount小于1
  • 评估周期和查询窗口保持一致(比如6小时窗口就设评估周期为6小时,检查频率设为30分钟/1小时即可,避免不必要的资源消耗)
  • 配置你需要的告警通知渠道即可

注意:如果用Event Hubs诊断日志查询消息体,会产生少量的日志存储费用,消息量级不大的话成本几乎可以忽略;如果对成本敏感,优先用Azure Functions侧的日志做校验,不需要额外解析Event Hubs消息体。

内容的提问来源于stack exchange,提问作者sreddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 13:54:25