【Azure Event Hub】自定义告警(Alert Rule)用来提示Event Hub的消息incoming(生产)与outgoing(消费)的异常情况

简介: 【Azure Event Hub】自定义告警(Alert Rule)用来提示Event Hub的消息incoming(生产)与outgoing(消费)的异常情况

问题描述

在使用Azure Service Bus的时候,我们可以根据Queue中目前存在的消息数来判断当前消息是否有积压的情况。

但是,在Event Hub中,因为所有消息都会被存留到预先设定的保留时间(默认是7天), 所以无法通过消息数来判断当前的消息是否有积压或者是有多余重复消费。

当消费端出现异常情况,在没有incoming的情况下,还是存在大量的outgoing,这种情况如何来提前预警呢?是否可以通过设置告警规则来及时通知运维人员呢?

如下图这样Outgoing 大于 incoming的情况

 

 

问题解答

在Azure服务中,PaaS资源都可以根据指标数据来设置告警,但是这是基于该服务有这类型指标的情况。

 

如现在Event Hub中 Outgoing Message 和Incoming Message不匹配的情况,由于Event Hub自身的指标中,并没有一个指标表示 Outgoing 与 Incoming 之间的差距值。 如果需要知道两个指标间的差值,就需要从收集的Metrics指标中进行自定义查询语句,并根据结果进行阈值设定。

 

主要的步骤有:

1)收集Event Hub Metrics指标到Log A中

  • 设置诊断日志,日志发送到Log Analytics Workspace中

详细步骤,可参考官网:https://docs.azure.cn/zh-cn/event-hubs/monitor-event-hubs#log-analytics

 

2)自定义查询语句,在Kusto中进行行列转换,绝对值转换

示例Kusto语句

AzureMetrics 
| where ResourceProvider =="MICROSOFT.EVENTHUB" 
| where MetricName =="EHOUTMSGS"  
| project TimeGenerated,EHOUTMSGS=MetricName, OutMsgTotal=Total
| join kind = leftouter
(
    AzureMetrics 
    | where ResourceProvider =="MICROSOFT.EVENTHUB" 
    | where MetricName =="EHINMSGS" 
    | project TimeGenerated,EHINMSGS=MetricName, InMsgTotal=Total
) on  $left.TimeGenerated ==  $right.TimeGenerated
| project  TimeGenerated,EHINMSGS,EHOUTMSGS,OutMsgTotal,InMsgTotal
|extend OutMsgTotal=case(isnull(OutMsgTotal),0.0,OutMsgTotal), InMsgTotal=case(isnull(InMsgTotal),0.0,InMsgTotal) 
| project TimeGenerated, AlertValue = abs(OutMsgTotal - InMsgTotal)

说明:

1: EHOUTMSGS 表示Event Hub Outgoing Messages 统计值

2: EHINMSGS表示 Event Hub Incoming Messages 统计值

3: 使用 Left Outer Join的方式,把 EHOUTMSGS 和 ENINMSGS 的值组合在一行中,并且通过 EXTEND  CASE  补齐数据,缺少的行用0代替。

4:AlertValue = abs(EHOUTMSGS - EHINMSGS), 计算差值并取绝对值,然结果显示为正

 

3)设置自定义指标

  • 选择 Signal Name 为 Custom Log search
  • 输入第二步中的Kusto Query 语句
  • 在Measurement选择 AlertVaule, Average, 并以5分钟为一个时间周期进行判断

4)设置阈值

在Alert Logic 部分中,这是阈值即可。这里也是触发Alert的关键点,需要根据实际情况来决定一个合理的值。

 

 

【结束】

 

附录:为什么pivot 语句中特意的添加了 输出格式的结构体呢?

| evaluate pivot(MetricName,sum(Total)):(TimeGenerated:datetime, EHOUTMSGS:long, EHINMSGS:long,AlertValue:long)

添加OutputSchema的目的就为了避免查询结构体中缺少了需要统计的字段值而报错('project' operator: Failed to resolve scalar expression named 'EHINMSGS' I)。

如下效果对比:

 

附录二: PIVOT 示例

pivot 函数执行把多行数据转换为多列。此处通过MetricsName的值的不同而转换为 EHOUTMSGS 和 EHINMSGS 两列,并且根据TimeGenerated时间值进行Total统计。在同一个时间点的数据归并为一行数据。

PIVOT使用的前后对比效果:

相关文章
|
Prometheus 监控 Cloud Native
夜莺自定义告警模板
夜莺自定义告警模板
|
消息中间件 测试技术
通过轻量消息队列(原MNS)主题HTTP订阅+ARMS实现自定义数据多渠道告警
轻量消息队列(原MNS)以其简单队列模型、轻量化协议及按量后付费模式,成为阿里云产品间消息传输首选。本文通过创建主题、订阅、配置告警集成等步骤,展示了该产品在实际应用中的部分功能,确保消息的可靠传输。
374 2
|
运维 Serverless API
Serverless 应用引擎产品使用合集之sls日志告警调用函数计算,出现抛出的结果异常,是什么原因
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
SQL 消息中间件 分布式计算
基于阿里云 CloudMonitor云监控自定义监控大盘对 EMR 自定义监控实践
本文旨在分享 EMR 平台大数据服务基于阿里云 CloudMonitor 的监控实践,给客户提供除了 EMR 平台默认监控以外,自建监控方式,适用于统一多个阿里云服务的监控监控场景。
1152 2
基于阿里云 CloudMonitor云监控自定义监控大盘对 EMR 自定义监控实践
|
存储 监控 索引
SLS告警最佳实践——自定义分析告警历史
在SLS告警评估、触发到通知的整个生命周期过程中,都会有一些日志记录,通过这些日志我们可以借助告警对系统的整体健康状况、稳定性等有一个相对全面的了解。
804 0
|
弹性计算 监控 应用服务中间件
云监控之自定义监控
云监控之自定义监控
|
JSON 数据格式 Python
基于elasticsearch的自定义业务告警的设计思路
基于elasticsearch的自定义业务告警的设计思路
448 0
|
监控
云监控 --- 自定义监控
自定义监控为您提供了自定义监控项和报警规则的功能,您可以通过上报监控数据接口,将自己关心的业务指标上报至云监控,并在云监控上添加监控图标和设置报警规则,对于故障指标发送报警通知,便于您及时处理故障,保障业务的正常运行。
733 0
云监控 --- 自定义监控
|
存储 弹性计算 运维
SLS新版告警入门-监控主机CPU异常
随着用户量的增加,后台服务经常需要部署在多台服务器或者集群中来提高性能和增强可用性,在提供服务的过程中,由于程序bug或者业务徒增导致CPU飙高,如果CPU持续飙高,可能会导致机器down机,对服务造成不可用。 本文以此为背景,在主机监控时序数据中,配置SLS告警,来监控主机CPU飙高,并且在CPU飙高时发出告警到钉钉机器人。
821 0
|
监控 Linux Docker
阿里云容器Kubernetes监控(六) - 使用eventer与npd实时告警节点异常
前言 在开始给大家讲解如何通过eventer与npd来实现节点异常告警之前,要稍微给大家解释一下为什么用三篇的篇幅来介绍eventer。在kubernetes中,会将交付场景中的大部分实体都抽象为一个逻辑的概念,例如:接入层抽象为Service,存储层抽象为PV/PVC,不同种类的应用抽象为Deployment、StatefulSet等等。
5944 0

热门文章

最新文章

下一篇
开通oss服务