诊断天蓝色事件网格中的故障?

时间:2019-02-06 21:57:58

标签: azure azure-eventgrid

在azure事件网格中,我没有发现很多解决事件丢失情况的方法。

因此,我要问与以下情况有关的问题:

  1. 我们的代码将事件发布到域中。
  2. 事件将传递到订阅中已配置的Web挂钩。
  3. 这工作了一段时间。
  4. 消费者(拥有Web挂钩端点)抱怨他没有收到一些事件,但大多数事件都通过了。
  5. 我们查看已配置的死信队列,发现没有事件。已经超过一天,因此所有重试都已用尽。
  6. 因此,我们假设所有事件都已交付,因为指标中没有失败的交付事件。
  7. 我们还确保我们确实将这些神秘事件提交给了网格。
  8. 但是消费者坚持要解决这个问题,并证明他这一边没有错。
  9. 现在,我们需要确定事件网格是否正在吞噬其中一些事件。

如何解决这种情况?

1 个答案:

答案 0 :(得分:0)

AEG的当前版本未集成到诊断设置功能,这对于流式传输度量标准和日志非常有帮助。

对于基于事件域的方案(仍在公共预览中,请参见limits)可以帮助Azure Monitoring REST API查看事件域中特定的所有指标。

有效指标是:

PublishSuccessCount,PublishFailCount,PublishSuccessLatencyInMs,MatchedEventCount,DeliveryAttemptFailCount,DeliverySuccessCount,DestinationProcessingDurationInMs,DroppedEventCount,DeadLetteredCount

以下示例是一个REST GET请求,用于获取事件域中特定时间跨度和间隔的所有指标值:

https://management.azure.com/subscriptions/{mySubId}/resourceGroups/{myRG}/providers/Microsoft.EventGrid/domains/{myDomain}/providers/Microsoft.Insights/metrics?api-version=2018-01-01&interval=PT1H&aggregation=count,total&timespan=2019-02-06T07:58:12Z/2019-02-07T08:58:12Z&metricnames=PublishSuccessCount,PublishFailCount,PublishSuccessLatencyInMs,MatchedEventCount,DeliveryAttemptFailCount,DeliverySuccessCount,DestinationProcessingDurationInMs,DroppedEventCount,DeadLetteredCount

基于响应值,您可以从发布者端查看AEG行为的度量以及向订阅者传递事件的度量。对于您的生产版本,我建议您使用轮询技术从AEG获取所有指标并将其推送到事件中心以进行流分析,警报等。基于查询参数(例如时间跨度,间隔等) ,它可以接近实时。如果AEG支持诊断设置,则该轮询和发布所有指标都将被废弃,并且可以继续对分析流作业进行小的修改。

另一点是将事件模型扩展为审核部分。我确实建议以下内容:

  1. 添加域范围订阅以捕获事件域中的所有事件,并将其推送到事件中心以进行流传输。请注意,该事件域内的任何已发布事件都应在此已发布流管道中。

  2. 为死信消息添加存储订阅,并将其推送到同一事件中心以进行流传输。

  3. (可选),将死信存储的诊断设置(某些指标)添加到同一事件中心,以进行流传输。请注意,在尝试将死信消息存储在Blob容器中4小时后,该消息被删除。对于失败的进程,没有任何日志消息,只有度量计数器。

对于客户端,我确实建议每个订阅者都创建一条日志消息(例如标头+事件消息),以进行审核和故障排除。它应该存储在Blob容器中或本地存储,然后再上传等。重点是,此参考对于分析流作业以快速找出问题所在可能非常有用。

除了事件模型外,发布者还应定期(例如每小时一次)探测事件域端点,并且还应向探测主题发送探测事件消息以进行测试。该探测主题的事件订阅将配置一个死信选项。订阅者Webhook处理程序应始终失败,并显示错误代码= HttpStatusCode.BadRequest ,例如没有重试操作。请注意,将死信消息存储在存储器中时,会有300秒的延迟时间。换句话说,探测事件+ 5分钟后,死信消息应该在流管道中。您的事件模型中的这种探测场景将从视图的发布者和交付点探测AEG的功能。

上述解决方案显示在以下屏幕片段中:

enter image description here