基于层级结构抑制 Kapacitor 警报
Kapacitor 允许您构建具有多个“级别”或“层级”警报的强大监控和警报解决方案。但是,当一个事件同时触发高级别和低级别警报,并且您最终从不同上下文收到多个警报时,就会出现问题。AlertNode 的 .inhibit()
方法允许您在触发警报时抑制其他警报。
例如,假设您正在监控一个服务器集群。作为警报架构的一部分,您具有主机级别的警报,例如 CPU 使用率警报、RAM 使用率警报、磁盘 I/O 等。您还具有集群级别的警报,用于监控网络健康状况、主机正常运行时间等。
如果集群中一台主机上的 CPU 峰值导致机器离线,那么您将收到一个警报,而不是收到 CPU 峰值的**主机级别**警报 *和* 离线节点的**集群级别**警报 – 即节点离线的警报。集群级别警报将抑制主机级别警报。
使用 .inhibit()
方法抑制警报
.inhibit()
方法使用警报类别和标签来抑制或阻止其他警报。
// ...
|alert()
.inhibit('<category>', '<tags>')
category
此警报抑制或阻止警报的类别。
tags
为了抑制或阻止警报,必须匹配的逗号分隔的标签列表。
分层警报抑制示例
以下 TICKscript 代表分层警报架构中的两个警报。第一个是特定于主机的 CPU 警报,每当空闲 CPU 使用率低于 10% 时,它会触发发送到 system_alerts
类别的警报。流式数据点按 host
标签分组,该标签标识数据点来自的主机。
cpu_alert.tick
stream
|from()
.measurement('cpu')
.groupBy('host')
|alert()
.category('system_alerts')
.crit(lambda: "usage_idle" < 10.0)
以下 TICKscript 是集群级别警报,用于监控集群中主机的正常运行时间。它使用 deadman()
函数在主机无响应或离线时创建警报。deadman 警报中的 .inhibit()
方法会抑制发送到 system_alerts
类别的所有警报,这些警报包含匹配的 host
标签,这意味着它们来自同一主机。
host_alert.tick
stream
|from()
.measurement('uptime')
.groupBy('host')
|deadman(0.0, 1m)
.inhibit('system_alerts', 'host')
使用此警报架构,主机可能由于 CPU 瓶颈而无响应,但由于 deadman 警报会抑制来自同一主机的系统警报,因此您不会收到 deadman 警报和高 CPU 使用率的警报通知;只有针对该特定主机的 deadman 警报。
此页是否对您有帮助?
感谢您的反馈!