Documentation

Kapacitor 警报概述

Kapacitor使得以两种不同方式处理警报消息成为可能。

  • 消息可以直接推送到通过Alert节点暴露的事件处理程序。
  • 消息可以发布到一个主题名称空间,多个警报处理程序可以订阅。

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

推送到处理程序

将消息推送到处理程序是开始使用Kapacitor指南中介绍的基本方法。这仅涉及通过alert节点调用相关的链接方法。消息可以推送到log()文件、email()服务、httpOut()缓存以及许多 треть-party services

发布与订阅

警报主题仅仅是一个命名空间,用于分组警报。当警报事件触发时,它可以被发布到一个主题。多个处理程序可以订阅(可以绑定)到该主题,所有处理程序针对该主题处理每个警报事件。处理程序通过 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文档。

有关定义和使用警报主题的详细说明,请参阅 Using Alert Topics 的操作指南。

处理程序

处理器对特定主题的传入警报事件采取行动。
每个处理器恰好操作一个主题。

处理程序列表

以下是可用的警报事件处理程序列表:

处理器描述
aggregate在指定的时间间隔内聚合警报消息。
告警向告警系统发送告警信息。
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陷阱。
tcp通过原始 TCP 将数据发送到指定地址。
Telegram将警报消息发送到Telegram客户端。
VictorOps向VictorOps发送警报。
Zenoss向 Zenoss 发送警报。

匹配表达式

警报处理器支持匹配表达式,以过滤处理的警报事件。

匹配表达式是一个TICKscript lambda表达式。触发警报的数据可以被匹配表达式访问,包括所有字段和标签。

除了触发警报的数据之外,关于警报的元数据也是可用的。 该警报元数据可以通过各种函数获取。

名称类型描述
级别int事件的警报级别,其中之一为‘0’,‘1’,‘2’,或‘3’,对应‘正常’,‘信息’,‘警告’,和‘严重’。
changedbool指示警报级别是否因该事件而改变。
名称字符串返回触发数据的测量名称。
任务名称字符串返回触发警报事件的任务名称。
持续时间持续时间返回事件在非正常状态下的持续时间。

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

例如,发送仅限于关键警报到处理程序,请使用此匹配表达式:

match: level() == CRITICAL

示例

仅将更改的事件发送到处理程序:

match: changed() == TRUE

仅将警告和严重事件发送到处理程序:

match: level() >= WARNING

将标签为“host”等于 s001.example.com 的事件发送到处理程序:

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

警报事件数据

发送到处理程序的每个警报事件包含以下警报数据:

名称描述
ID警报的ID,用户定义。
消息警报消息,用户定义。
详细信息警报详细信息,用户定义的HTML内容。
时间警报发生的时间。
持续时间警报持续的时间(以纳秒为单位)。
级别可以是 OK、INFO、WARNING 或 CRITICAL 之一。
数据包含触发警报的数据的 influxql.Result。
可恢复指示警报是否可以自动恢复。由.noRecoveries()属性决定。

这些数据被 事件处理器 在处理警报事件时使用。

警报消息使用 Golang Template 并且可以访问警报数据。

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


Flux的未来

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

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

InfluxDB 3 核心,是我们新的开源产品。 它是一个用于时间序列和事件数据的实时数据引擎。 InfluxDB 3 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

有关如何开始的更多信息,请查看: