「 背 景 」

当某个资源发生异常时,运维团队需要快速定位问题源头,并获取全面准确的上下文信息以便进行高效的问题排查与修复。传统的告警系统通常仅提供基本的指标触发告警功能,但在实际操作中,仅仅知道某个指标超出阈值是不够的。例如,应用层面的告警可能涉及多维度的信息,包括但不限于应用的环境配置、关联的服务、责任人、历史变更记录等。这些信息通常存储在CMDB(配置管理数据库)中,如果能将CMDB中的上下文数据与实时告警事件相结合,将会极大地提高运维团队的工作效率和响应速度。

我们希望在告警信息中附加出这样的信息,在应用服务端口触发告警时,可以从中获知关联的应用名:

我们看看如何配置和使用。

「 实 践 」

首先,获取告警上下文的前提是CMDB中已经维护好目标资源的上下文数据了,我们配置的目的是将其中的部门数据丰富到告警通知消息中。

1.在告警规则配置中,新建一条告警分析策略

2.填写策略名称,并且选择丰富的信息为:资源信息丰富

3.选择添加字段:

这里选择的关系是应用,并且将应用这个模型的应用中文名称属性丰富出来以添加到告警通知中。

注意:配置的目标资源是【HTTP服务】模型,这个模型与【应用】模型存在关联关系,因此通过选择模型,和模型下的属性,即可获取到和目标资源相关的上下文信息。

4.步骤3配置后,说明这个上下文已经获取到,最后一步就是把上下文添加到通知模板中,写法如下:

「 效 果 解 释 」

这个配置的关键有两步:

  1. 建立资源丰富策略,见步骤3

  2. 添加资源丰富的表达式,见步骤4

这里针对表达式作关键说明:

  • 配置的关键是$.application[*].name,这段字符串中$表示当前模型,也即是HTTP_SERVICE@ONEMODEL。

  • 而$.application表示获取当前模型的关系模型,其中关系id为application,此时$.application表示【应用】模型。

  • 最后获取该模型下所有实例的name属性,这会自动获取到仅和告警关联的【HTTP服务】模型下的实例,关联的【应用】模型的实例的name属性。

如此实现了告警资源信息上下文的丰富。

根据上述的配置原理,我们可以配置任意的资源信息到告警通知当中,比如负责人,关联的应用系统等。通过资源信息丰富,我们可提升故障定位效率,可以根据提供的信息优化协作沟通,以进一步缩短MTTR。