乐趣区

关于云计算:无数据告警最佳实践

背景

在对 SLS 的 Logstore 和 Metricstore 进行监控的过程中,有时候会呈现一些无数据的状况,例如

  • 数据采集阶段呈现故障

Logtail 采集异样、数据导入工作异样或者 SDK 写入数据出错等状况都有可能导致日志库中没有数据。

  • 业务零碎呈现问题

例如用户的业务日志中有某个零碎模块的日志,在一段时间内,因为该零碎模块呈现故障,导致没有日志产生,从而在 SLS 的日志库中也没有相干的日志数据。

  • 服务器宕机

SLS 也能够采集和存储指标类数据,如果被采集指标的服务器呈现宕机的状况,那么就会导致时序库中呈现没有数据的状况。

因而,监控 SLS 的存储库中无数据的状况,是保证数据胜利上传到 SLS 的一个重要伎俩,本文将介绍无数据告警的常见配置办法。

操作步骤

办法一

SLS 提供了无数据告警这个高级性能,当创立一个监控规定时,能够抉择开启该性能,当查问剖析语句执行的后果为空时就会触发无数据的告警。无数据告警的标注能够独自配置,并且当有数据时,仍然走的是评估触发条件的逻辑,因而,开启这个性能后,不会影响原有的告警监测内容,只是在无数据时独自执行了一条逻辑。

  • 查问语句

在 Metric 库中抉择工夫范畴为 5 分钟(绝对),执行如下 PromQL 语句,查问 5 分钟内服务器的 CPU 使用率。cpu_util{hostname=”hostname0″}

  • 告警监控规定

基于上述语句的查问后果创立告警,查看频率设置为固定距离 1 分钟,触发条件设置有数据匹配 value > 80,示意当 CPU 使用率超过 80% 就会触发该告警。在高级配置中开启无数据告警,参考创立日志告警监控规定,重大度设置为中,示意当没有 CPU 的指标数据上传到 SLS 触发无数据告警。

  • 告诉内容

当 CPU 的指标数据 1 分钟内没有上传到 SLS 时,就会触发无数据告警,钉钉群中的告诉内容如下所示。

办法二

本办法不必开启无数据告警,而是创立一个专门用于监测是否有数据的告警。

  • 查问语句

抉择工夫范畴为 15 分钟(绝对),执行如下语句,查问 15 分钟内的日志条数。 | select count() as cnt

  • 告警监控规定

基于上述语句的查问后果创立告警监控规定,设置触发条件为有数据匹配 cnt===0。

  • 告警告诉

当日志库中 15 分钟内没有日志写入的时候,就会触发该告警,钉钉群中的告警告诉如下。

常见问题

通过设置有特定条数据满足肯定条件来示意无数据告警

想要创立无数据告警的时候,用户因为不晓得有无数据告警这个高级性能开关,所以间接将触发条件设置成有特定条数据等于 0 来示意无数据的状况。(同样的还有设置为有特定条数据小于等于 0、有特定条数据小于 1 等状况)

在无数据的状况下,告警监控并不会走到判断有特定条数据这个评估逻辑中,只会去判断有没有开无数据告警这个性能,因而无数据的状况下上述的触发条件并不会触发告警。

开启无数据告警,没数据也没有触发告警

如果有剖析语句,并且开启了无数据告警性能,那么在无数据的状况下也是有可能不会触发告警的。例如查问剖析语句如下所示:error | select count(*) as cnt 这种状况下如果没有数据,那么这条语句执行的后果其实是不为空的,而是会有一条后果,如下所示:

[
    {"cnt": 0}
]

因而就不会去判断是否开启了无数据告警这个性能,也就不会触发无数据告警了。

原文链接

本文为阿里云原创内容,未经容许不得转载。

退出移动版