文档文档

MQTT 事件处理器

MQTT 是一种轻量级的消息传递协议,适用于小型传感器和移动设备。Kapacitor 可以配置为将警报消息发送到 MQTT 代理。

配置

MQTT 事件处理器的配置以及默认 选项 值在您的 kapacitor.conf 文件中设置。下面是一个示例配置

[[mqtt]]
  enabled = true
  name = "localhost"
  default = true
  url = "tcp://:1883"
  ssl-ca = "/etc/kapacitor/ca.pem"
  ssl-cert = "/etc/kapacitor/cert.pem"
  ssl-key = "/etc/kapacitor/key.pem"
  client-id = "xxxx"
  username = "xxxx"
  password = "xxxx"

可以通过重复 [[mqtt]] 部分来配置多个 MQTT 代理。name 用作每个已配置 MQTT 客户端的唯一标识符。

enabled

设置为 true 以启用 MQTT 事件处理器。

name

此代理配置的唯一名称。

default

在使用多个 MQTT 配置时,将当前配置设置为默认配置。

url

MQTT 代理的 URL。可能的协议包括

tcp - 原始 TCP 网络连接
ssl - TLS 保护的 TCP 网络连接
ws - Websocket 网络连接

ssl-ca

证书颁发机构 (CA) 文件的绝对路径。可以提供 CA 而无需密钥/证书对。

ssl-cert

PEM 编码证书文件的绝对路径。

ssl-key

PEM 编码密钥文件的绝对路径。

client-id

此 MQTT 客户端的唯一 ID。如果为空,则使用 name 的值。

username

MQTT 用户名。

password

MQTT 密码。

选项

以下 MQTT 事件处理器选项可以在 处理程序文件 中设置,或在使用 .mqtt() 在 TICKscript 中设置。

名称类型描述
broker-namestring发布警报时要使用的已配置 MQTT 代理的名称。如果为空,则默认为已配置的默认代理。
topicstring警报将分派到的 MQTT 主题
qosint64用于传递警报的 QoS。有效值包括

0 : 最多一次传递
1 : 至少一次传递
2 : 精确的一次传递
retainedbool指示此警报是否应传递给在警报发生时未连接到代理的客户端。

示例:处理程序文件

id: handler-id
topic: topic-name
kind: mqtt
options:
  broker-name: 'name'
  topic: 'topic-name'
  qos: 1
  retained: true

示例:TICKscript

|alert()
  // ...
  .mqtt('topic-name')
    .brokerName('name')
    .qos(1)
    .retained(TRUE)

使用 MQTT 事件处理器

MQTT 事件处理器可以在 TICKscripts 和处理程序文件中使用,将警报发送到 MQTT 代理。

以下示例使用 kapacitor.conf 中定义的以下 MQTT 代理配置

kapacitor.conf 中的 MQTT 设置

[[mqtt]]
  enabled = true
  name = "localhost"
  default = true
  url = "tcp://:1883"

[[mqtt]]
  enabled = true
  name = "alerts-broker"
  default = false
  url = "ssl://123.45.67.89:1883"
  ssl-ca = "/etc/kapacitor/ca.pem"
  ssl-cert = "/etc/kapacitor/cert.pem"
  ssl-key = "/etc/kapacitor/key.pem"
  client-id = "alerts-broker"
  username = "myuser"
  password = "mysupersecretpassw0rd"

从 TICKscript 将警报发送到 MQTT 代理

以下 TICKscript 使用 .mqtt() 事件处理器将警报发送到默认 MQTT 代理的 alerts MQTT 主题,该代理在空闲 CPU 使用率低于 10% 时在 kapacitor.confi 中定义。

log-cpu-alert.tick

stream
  |from()
    .measurement('cpu')
  |alert()
    .crit(lambda: "usage_idle" < 10)
    .message('{{ .Time }}: CPU usage over 90%')
    .mqtt('alerts')
      .qos(2)

将警报发送到 MQTT 代理(来自定义好的处理程序)

以下设置将警报发送到 cpu 主题。添加了一个 MQTT 处理程序,该处理程序订阅 cpu 主题,并在新消息发布时将消息发送到 alerts-brokeralerts MQTT 主题。

创建将警报消息发布到主题的 TICKscript。当空闲 CPU 使用率低于 10% 时,下面的 TICKscript 将警报消息发送到 cpu 主题。

cpu_alert.tick

stream
  |from()
    .measurement('cpu')
  |alert()
    .crit(lambda: "usage_idle" < 10)
    .message('{{ .Time }}: CPU usage over 90%')
    .topic('cpu')

添加并启用 TICKscript

kapacitor define cpu_alert -tick cpu_alert.tick
kapacitor enable cpu_alert

创建一个处理程序文件,该文件订阅 cpu 主题并使用 MQTT 事件处理器将警报发送到 alerts-broker

log_cpu_handler.yaml

id: log-cpu-alert
topic: cpu
kind: mqtt
options:
  broker-name: 'alerts-broker'
  topic: 'alerts'
  qos: 2
  retained: true

添加处理器

kapacitor define-topic-handler log_cpu_handler.yaml

此页面是否有帮助?

感谢您的反馈!


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