如何结合告警丰富获取拨测失败的原因?_最佳实践

 如何结合告警丰富获取拨测失败的原因?_错误信息_02

本期最佳实践为您揭秘:

  1. 如何使用pongo2模板语言获取指定的字符串内容
  2. 如何结合告警丰富,过滤出有效的告警信息

「 背 景 」

在此前的最佳实践当中,我们为大家介绍了一个好的告警通知应该具备的条件。在一般的指标告警中,在告警信息回十分明确提示告警的原因是什么。然而在拨测告警中,告警信息的提示仅仅是拨测返回码不为0,而不为0的原因却无从得知。

我们希望,在每次拨测告警时,都会附带上拨测失败的原因,如下图所示:

 如何结合告警丰富获取拨测失败的原因?_字符串_03

从上图可知,拨测失败的原因是链接被拒绝,此时我们能够非常直观得了解到时进程崩溃退出而导致端口拨测失败。

此外,还有其他的原因如连接超时等。

那么,我们如何把错误信息丰富到告警通知里呢?

「 实 践 」

实际上,拨测任务下关联的拨测指标有三个关键的指标:

  • detect_code:拨测返回码,表示拨测结果成功与否
  • detect_time_cost:拨测耗时,用于衡量一次拨测的持续时长
  • detect_error:拨测错误信息,在拨测失败时有值,记录拨测失败的详情

因此,我们的思路是在针对detect_code告警的同时,将detect_error丰富到告警通知中。但是,detect_error的原始数据会比较长,形如:

 如何结合告警丰富获取拨测失败的原因?_错误信息_04

我们需要的只是最有效的提升,比如红色方框后面的部分。

我们看看如何配置:

  1. 1.添加丰富信息:添加丰富策略,指标选择detect_code,丰富的指标选择detect_error

 如何结合告警丰富获取拨测失败的原因?_错误信息_05

  1. 2.关键的一步,需要将丰富出来的错误信息,截取成我们关注的部分,这里需要使用到一些模板语言的配置逻辑:

以下配置表示以connect error:为分隔符,获取最后一段字符串,并复制给new_value,此时变量就存储了错误信息了

 如何结合告警丰富获取拨测失败的原因?_字符串_06

通过这个小技巧,可以获取到拨测错误的信息,并且基于此原理可以获取到任意希望获取的信息,很实用!