基于层级抑制 Kapacitor 警报
Kapacitor 允许您构建一个具有多个“级别”或“层级”警报的强大监控和警报解决方案。然而,当一个事件同时触发高层级和低层级警报时,就会出现问题,最终您会收到来自不同上下文的多个警报。AlertNode 的 .inhibit() 方法允许您在触发警报时抑制其他警报。
例如,假设您正在监控一个服务器集群。作为您的警报架构的一部分,您有主机级别的警报,例如 CPU 使用率警报、RAM 使用率警报、磁盘 I/O 等。您还必须具备集群级别的警报,用于监控网络健康状况、主机正常运行时间等。
如果集群中某台主机的 CPU 峰值导致该机器离线,那么您将不会收到 CPU 峰值的主机级别警报以及离线节点的集群级别警报,而只会收到一个警报——节点离线。集群级别警报将抑制主机级别警报。
使用 .inhibit() 方法抑制警报
.inhibit() 方法使用警报类别和标签来抑制或阻止其他警报。
// ...
|alert()
.inhibit('<category>', '<tags>')category
此警报抑制或阻止警报的类别。
标签 (tags)
一系列逗号分隔的标签,必须匹配这些标签才能抑制或阻止警报。
示例层级警报抑制
以下 TICKscripts 代表分层警报架构中的两个警报。第一个是特定于主机的 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 警报。
此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 Kapacitor 和本文档提供反馈和错误报告。要获取支持,请使用以下资源: