MQTT 事件处理器
MQTT 是一种轻量级消息协议,适用于小型传感器和移动设备。Kapacitor 可以配置为将警报消息发送到 MQTT 代理。
配置
MQTT 事件处理器的配置以及默认 选项 值在您的 kapacitor.conf
中设置。以下是一个配置示例
[[mqtt]]
enabled = true
name = "localhost"
default = true
url = "tcp://localhost: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 客户端的唯一标识符。
已启用
设置为 true
以启用 MQTT 事件处理器。
名称
此代理配置的唯一名称。
默认
当使用多个 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 事件处理器选项可以在 处理程序文件 中设置,或者在使用 TICKscript 中的 .mqtt()
时设置。
名称 | 类型 | 描述 |
---|---|---|
broker-name | string | 配置的 MQTT 代理的名称,用于发布警报。如果为空,则默认为配置的默认代理。 |
topic | string | 警报将被分派到的 MQTT 主题 |
qos | int64 | 将用于传递警报的 QoS。有效值包括0 : 最多一次传递1 : 至少一次传递2 : 恰好一次传递 |
retained | bool | 指示是否应将此警报传递给在警报发生时未连接到代理的客户端。 |
示例:处理程序文件
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 事件处理器可以在 TICKscript 和处理程序文件中使用,以将警报发送到 MQTT 代理。
以下示例使用在 kapacitor.conf
中定义的以下 MQTT 代理配置
kapacitor.conf 中的 MQTT 设置
[[mqtt]]
enabled = true
name = "localhost"
default = true
url = "tcp://localhost: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()
事件处理器,以便在空闲 CPU 使用率降至 10% 以下时,将警报发送到 kapacitor.conf
中定义的默认 MQTT 代理的 alerts
MQTT 主题。
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-broker
的 alerts
MQTT 主题。
创建一个将警报消息发布到主题的 TICKscript。以下 TICKscript 在空闲 CPU 使用率降至 10% 以下时,将警报消息发送到 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
此页是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 Kapacitor 和本文档的反馈和错误报告。要获得支持,请使用以下资源