文档文档

基于层级抑制 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 警报。


此页面是否有帮助?

感谢您的反馈!


InfluxDB 3.8 新特性

InfluxDB 3.8 和 InfluxDB 3 Explorer 1.6 的主要增强功能。

查看博客文章

InfluxDB 3.8 现已适用于 Core 和 Enterprise 版本,同时发布了 InfluxDB 3 Explorer UI 的 1.6 版本。本次发布着重于操作成熟度,以及如何更轻松地部署、管理和可靠地运行 InfluxDB。

更多信息,请查看

InfluxDB Docker 的 latest 标签将指向 InfluxDB 3 Core

在 **2026 年 2 月 3 日**,InfluxDB Docker 镜像的 latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。

如果使用 Docker 来安装和运行 InfluxDB,latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。例如,如果使用 Docker 运行 InfluxDB v2,请将 latest 版本标签替换为 Docker pull 命令中的特定版本标签 — 例如

docker pull influxdb:2