文档文档

Kapacitor 告警概览

Kapacitor 允许以两种不同的方式处理告警消息。

  • 消息可以直接推送到通过 Alert 节点公开的事件处理器。
  • 消息可以发布到主题命名空间,一个或多个告警处理器可以订阅该命名空间。

无论使用哪种方法,都需要在配置文件中启用和配置处理器。如果处理器需要令牌和密码等敏感信息,也可以使用 Kapacitor HTTP API 进行配置。

推送到处理器

将消息推送到处理器是在 Kapacitor 入门 指南中介绍的基本方法。这涉及简单地调用通过 alert 节点提供的相关链式方法。消息可以推送到 log() 文件、email() 服务、httpOut() 缓存和许多 第三方服务

发布和订阅

告警主题只是一个用于分组告警的命名空间。当告警事件触发时,它可以发布到主题。多个处理器可以订阅(可以绑定)到该主题,并且所有处理器都处理该主题的每个告警事件。处理器通过 kapacitor 命令行客户端和处理器绑定文件绑定到主题。处理器绑定文件可以用 yamljson 编写。它们包含四个关键字段和一个可选字段。

  • topic: 声明处理器将订阅的主题。
  • id: 声明绑定的身份。
  • kind: 声明要使用的事件处理器的类型。请注意,这需要在 kapacitord 配置中启用。
  • match: (可选)声明用于过滤将要处理的告警事件的匹配表达式。请参阅下面的 匹配表达式 部分。
  • options: 特定于相关处理器的选项。这些在下面的 处理器列表 部分中列出

示例 1:用于 slack 处理器和 cpu 主题的处理器绑定文件

topic: cpu
id: slack
kind: slack
options:
  channel: '#kapacitor'

示例 1 可以保存到名为 slack_cpu_handler.yaml 的文件中。

然后可以通过命令行客户端将其生成为 Kapacitor 主题处理器。

$ kapacitor define-topic-handler slack_cpu_handler.yaml

处理器绑定也可以通过 HTTP API 创建。请参阅 HTTP API 文档的 创建处理器 部分。

有关定义和使用告警主题的演练,请参阅 使用告警主题 演练。

处理器

处理器对特定主题的传入告警事件采取操作。每个处理器仅对一个主题进行操作。

处理器列表

以下是可用告警事件处理器的列表

处理器描述
aggregate在指定的时间间隔内聚合告警消息。
Alerta将告警消息发布到 Alerta。
BigPanda将告警消息发送到 BigPanda。
Discord将告警消息发送到 Discord。
email发送包含告警数据的电子邮件。
exec执行命令,并通过 STDIN 传递告警数据。
HipChat将告警消息发布到 HipChat 房间。
Kafka将告警发送到 Apache Kafka 集群。
log将告警数据记录到文件。
Microsoft Teams将告警消息发送到 Microsoft Teams 频道。
MQTT将告警消息发布到 MQTT。
OpsGenie v1使用 v1 API 将告警发送到 OpsGenie。(已弃用
OpsGenie v2使用 v2 API 将告警发送到 OpsGenie。
PagerDuty v1使用 v1 API 将告警发送到 PagerDuty。(已弃用
PagerDuty v2使用 v2 API 将告警发送到 PagerDuty。
post通过 HTTP POST 将数据发送到指定的 URL。
publish将告警发布到多个 Kapacitor 主题。
Pushover将告警发送到 Pushover。
Sensu将告警消息发布到 Sensu 客户端。
ServiceNow将告警发送到 ServiceNow。
Slack将告警消息发布到 Slack 频道。
SNMPTrap触发 SNMP Trap。
tcp通过原始 TCP 将数据发送到指定的地址。
TelegramTelegram
VictorOps将告警消息发布到 Telegram 客户端。
ZenossVictorOps

将告警发送到 VictorOps。

Zenoss

将告警发送到 Zenoss。

匹配表达式

告警处理器支持匹配表达式,用于过滤处理器处理哪些告警事件。匹配表达式是 TICKscript lambda 表达式。触发告警的数据可用于匹配表达式,包括所有字段和标签。描述
除了触发告警的数据外,还提供了关于告警的元数据。此告警元数据通过各种函数可用。名称类型
级别整型事件的告警级别,为 ‘0’、‘1’、‘2’ 或 ‘3’ 之一,分别对应 ‘OK’、‘INFO’、‘WARNING’ 和 ‘CRITICAL’。
已更改布尔型指示此事件是否更改了告警级别。
名称布尔型字符串
返回触发数据的指标名称。返回触发数据的指标名称。任务名称

返回生成告警事件的任务名称。

持续时间

match: level() == CRITICAL

返回事件处于非 OK 状态的持续时间。

此外,已定义变量 OKINFOWARNINGCRITICAL 以对应于 level 函数的返回值。

match: changed() == TRUE

例如,要仅将严重告警发送到处理器,请使用此匹配表达式

match: level() >= WARNING

示例

match: "\"host\" == 's001.example.com'"

仅将已更改的事件发送到处理器

仅将 WARNING 和 CRITICAL 事件发送到处理器

告警处理器支持匹配表达式,用于过滤处理器处理哪些告警事件。描述
将标签“host”等于 s001.example.com 的事件发送到处理器告警事件数据
发送到处理器的每个告警事件都包含以下告警数据ID
告警的 ID,用户自定义。消息
告警消息,用户自定义。详情
告警详情,用户自定义 HTML 内容。时间
告警发生的时间。持续时间
告警的持续时间,以纳秒为单位。级别
OK、INFO、WARNING 或 CRITICAL 之一。数据

influxql.Result,包含触发告警的数据。

可恢复

|alert()
  // ...
  .message('{{ .ID }} is {{ .Level }} value:{{ index .Fields "value" }}, {{ if not .Recoverable }}non-recoverable{{ end }}')

指示告警是否可自动恢复。由 .noRecoveries() 属性确定。

此页是否对您有帮助?


请告诉我们如何做得更好

Flux 的未来

Flux 即将进入维护模式。您可以继续像现在这样使用它,而无需对代码进行任何更改。

阅读更多

现已全面上市