【Azure Event Hub】关于Event Hub指标 ConsumerLag 的解释 - LuBu0505/My-Code GitHub Wiki

问题描述

在使用Azure Event Hub的过程中,需要监控消费端是否正常消费数据?而常规的指标只有 Incoming Message, Outgoing Message,是否指标能表明当前Event Hub消费滞后,即 Incoming 数量远远大于 Outgoing呢?

  • IncomingMessages :发布到事件中心的消息数。
  • OutgoingMessages :从事件中心使用的消息数。

常规思路是用 Incoming  - Outgoing, 但如果Event Hub有多个消费组消费的时候(比如5个),那么 Outgoing 会是 Incoming的5倍。而且消费一条消息的时候,可能会出现重复多次消费的情况,所以Outgoing 会远远大于Incoming。 image.png

问题解答

通过查看资料,发现在"高级"和“专用”的Event Hub中,有一个ConsumerLag指标,就是表示Incoming和Outgoing之间的延迟。但是,它有两种情况为0的时候:

1)如果当时没有消费的consumer和event hub连接的话,它的值是0。

2)如果消息被及时消费,没有积压数据,值为0。

第一种情况的0为异常状态,第二种情况的0为正常状态。

所以如果使用0作为一个指标条件,则会出现误判。

但是在根据 Incoming Message > 0 或  Outgoing  Message = 0 条件结合,则可以满足 Event Hub是否有滞后的判断。

参考资料

Azure 事件中心的监视数据参考 : https://learn.microsoft.com/zh-cn/azure/event-hubs/monitor-event-hubs-reference#application-metrics-logs

当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!