告警通知信息是监控实践中非常关键的一环,在众多的告警消息中,如何让管理员快速识别关键信息,从而提升故障响应效率?
本期EasyOps产品使用最佳实践,我们将为您揭晓:
- 一个称得上”好“的告警通知应该是怎样的?
- 如何为告警通知穿上“华丽”的衣服,让它更加直观和显眼?
背 景
开头有说到,告警通知信息是监控实践中非常关键的一环,它可以帮助管理员快速发现和解决潜在问题,提高故障处理效率,以保障系统的稳定性和可靠性。因此,一个“好“的告警通知能让我们的监控实践事半功倍。
下面将探讨一个称得上”好“的告警通知应该是怎样的,以及它是如何在监控实践中发挥着它的“好处”。
众所周知,一个“好”的告警通知应该具备以下几种能力:
- 清晰明了的主题:能一目了然描述告警内容;
- 详细的告警内容:能提供足够的详细信息,包括具体的异常情况,触发条件和告警级别;
- 相关的上下文信息:提供必要的告警上下文信息,包括指标信息的丰富,告警对象的配置信息丰富等;
- 相关的时间戳:包含首次告警时间戳,告警持续时间戳;
- 关联的事件详情:提供告警事件的详情和告警规则的详情;
- 多种通知媒介:不同的告警级别可能基于不同媒介通知给不同人;
- 好的可读性:添加合适的样式和格式编排,以提高管理员阅读告警通知效率,提高传递效果和信息传递效率。
同时,我们希望告警通知可以设计成可复用的模板,方便在不同监控场景中进行配置和使用,减少重复劳动。
下面我们将以一个特定监控场景为背景,针对某个监控指标,描述了在大禹监控平台中,如何配置出一个符合上述条件的告警通知。
场 景 说 明
我们在日常监控中关注的最基础的场景之一可能就是内存使用情况的监控。内存作为计算机系统的关键资源之一,对系统的性能和稳定性有着直接影响。当内存使用率超过告警阈值,发出告警通知时,我们希望从通知中获知一些关键信息。
配 置
1.告警条件设置
我们先针对目标主机配置一条告警规则,具体的配置过程不赘述,这里让我们只关注内存使用情况的监控。
我们设定这样一个告警条件:
- 警告级别:主机内存使用率大于80% 且可用内存小于5GiB
我们编辑告警条件策略,告警来源选择从【阈值判断 · 所有条件】产生,告警指标选择实际内存使用百分比,实际空闲内存。如下图所示:
在告警阈值中,我们配置对应的策略:
点击保存。
2.告警通知设置
这里我们建立一条告警通知策略,作为主机的通用通知组,并且基于钉钉机器人的通知媒介去发送告警通知。
最后,我们编辑告警模板。
这里需要说明的是,为了在不同监控场景中进行配置和使用,告警通知设计成可复用的模板,并且基于内置变量为管理员提供更加通用的模板设计能力。平台已经内置一个通知模板,我们可以拿来即用。如下图所示:
实际使用后,它通知出来的效果可能是这样的:
很明显,这种朴素文本信息存在可读性差,信息传递不直观的问题。我们希望设置告警主题为标题的样式,并且为告警信息,告警持续时长等关键信息添加颜色,加粗等样式。
值得一提的是,告警通知模板支持markdown格式的样式渲染,因此我们以表格的方式呈现出告警信息,并添加必要样式,会让通知内容来得更加“好看”。
比如下图所示:
通过上面的告警通知,我们得知告警的对象是什么,对应的告警级别,告警首次出现时长,告警持续了多久还有相关的告警事件详情和策略详情。并且,通过加标题,加颜色和加粗的样式让关键信息更加突出。比如红色代表告警产生,绿色代表告警解除;另外,通过添加表格编排的方式让信息组织得更有条理。
到此为止,我们实现了开头所提到的一个“好”的告警通知具备的几个条件。
附上相关模板
- 告警模板
{{time|ts2str:'%Y-%m-%d %H:%M'}} 产生告警事件</font></h2>
| 事件类型 | SLO事件 |
| --- | --- |
| 首次发生时间 | {{startTime|ts2str:'%Y-%m-%d %H:%M'}} |
| 告警等级 | {{levelName}} |
| 告警资源 | {{t*****}} |
| 告警信息 | {{originContent}} |
| 持续时长 | {{duration|duration_format:'zh'}} |
| 事件详情 | [请点击](http://*****.******.*****/next/events/{{eventId}}/detail) |
| 策略详情 | [请点击](http://*****.******.*****/next/events/alert-rule/alert-rule/{{ruleId}}/edit) |
- 告警解除模板:
{{time|ts2str:'%Y-%m-%d %H:%M'}} 告警事件解除</font></h2>
| 事件类型 | SLO事件 |
| --- | --- |
| 首次发生时间 | {{startTime|ts2str:'%Y-%m-%d %H:%M'}} |
| 告警等级 | {{levelName}} |
| 告警资源 | {{t*****}} |
| 告警信息 | {{originContent}} |
| 持续时长 | {{duration|duration_format:'zh'}} |
| 事件详情 | [请点击](http://*****.******.*****/next/events/{{eventId}}/detail) |
| 策略详情 | [请点击](http://*****.******.*****/next/events/alert-rule/alert-rule/{{ruleId}}/edit) |
看到这里,细心的小伙伴会发现,「提供必要的告警上下文信息」这一项好像缺漏了。这一块涉及到告警指标丰富和告警信息丰富,并让我们了解告警通知如何消费CMDB数据。这些内容我们下一期再来谈,敬请期待。