背景
在对 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}
]
因而就不会去判断是否开启了无数据告警这个性能,也就不会触发无数据告警了。
原文链接
本文为阿里云原创内容,未经容许不得转载。