Discord 事件处理程序
Discord 是一个流行的聊天服务,主要面向游戏玩家,也被游戏之外的团队用作免费解决方案。要配置 Kapacitor 将警报消息发送到 Discord,请设置适用的配置选项。
配置
Discord 事件处理程序的配置以及默认 选项 值在您的 kapacitor.conf 中设置。以下是一个配置示例
[[discord]]
enabled = false
default = true
url = "https://discordapp.com/api/webhooks/xxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
workspace = "guild-channel"
timestamp = true
username = "Kapacitor"
avatar-url = "https://influxdata.github.io/branding/img/downloads/influxdata-logo--symbol--pool-alpha.png"
embed-title = "Kapacitor Alert"
global = false
state-changes-only = false
ssl-ca = "/path/to/ca.crt"
ssl-cert = "/path/to/cert.crt"
ssl-key = "/path/to/private-key.key"
insecure-skip-verify = false可以通过重复
[[discord]]部分来配置多个 Discord 客户端。workspace作为每个配置的 Discord 客户端的唯一标识符。
enabled
设置为 true 以启用 Discord 事件处理程序。
default
如果指定了多个 Discord 客户端配置,请将一个配置标识为默认配置。
workspace
Discord 工作区 ID。将此字符串设置为以识别此特定的 Discord 配置。例如,Discord 频道名称及其所属的服务器(guild),例如 <guild>-<channel>。
timestamp
布尔值,指示是否应在嵌入消息中显示时间戳。
url
Discord Webhook URL。这可以通过在频道设置中添加 webhook 来获得 - 有关完整指南,请参阅 Webhook 入门。Discord 将提供 webhook URL。
username
设置 Discord 机器人的用户名,以覆盖生成 webhook 时设置的用户名。
avatar-url
设置指定头像的 URL,以覆盖生成 webhook 时设置的头像。
embed-title
设置将在警报嵌入消息中显示的标题。如果为空,则不设置标题。
global
设置为 true 以将所有警报发送到 Discord,而无需在 TICKscript 中显式指定 Discord。
state-changes-only
将所有警报设置为仅状态更改模式,这意味着仅在警报状态更改时才会发送警报。仅当 global 为 true 时适用。
ssl-ca
设置证书颁发机构文件的路径。
ssl-cert
设置主机证书文件的路径。
ssl-key
设置私钥文件的路径。
insecure-skip-verify
设置为 true 以使用 SSL 但跳过证书链和主机验证。如果使用自签名证书,则需要此设置。
选项
在 处理程序文件 中或在使用 TICKscript 中的 .discord() 时,设置以下 Discord 事件处理程序选项。
| 名称 | 类型 | 描述 |
|---|---|---|
| workspace | string | 指定在使用多个 Discord 配置时要使用哪个配置。 |
| timestamp | bool | 指定是否在嵌入页脚中显示时间戳。如果为空,则使用配置中的选择。 |
| username | string | Discord 机器人的用户名。如果为空,则使用配置中的用户名。 |
| avatar-url | string | 用作 webhook 头像的图片 URL。如果为空,则使用配置中的 URL。 |
| embed-title | string | 发布到 webhook 的警报嵌入消息的标题。如果为空,则使用配置中设置的标题。 |
示例:处理程序文件
id: handler-id
topic: topic-name
kind: discord
options:
workspace: 'guild-channel'
username: 'Kapacitor'
avatar-url: 'https://influxdata.github.io/branding/img/downloads/influxdata-logo--symbol--pool-alpha.png'
timestamp: true
embed-title: 'Kapacitor Alert'示例:TICKscript
|alert()
// ...
.discord()
.workspace('guild-channel')
.username('Kapacitor')
.avatarUrl('https://influxdata.github.io/branding/img/downloads/influxdata-logo--symbol--pool-alpha.png')
.timestamp(true)
.embedTitle('Kapacitor Alert')设置 Guild
要允许 Kapacitor 向 Discord 发送警报,请从 Discord 获取 webhook URL - 请参阅 Webhook 入门。然后,将生成的 webhook URL 添加到 kapacitor.conf 的 [[discord]] 配置部分的 url 中。
使用 Discord 事件处理程序
在您的 kapacitor.conf 中启用并配置了一个或多个 Discord 事件处理程序后,请在您的 TICKscript 中使用 .discord() 属性将警报发送到 Discord,或者定义一个订阅主题并向 Discord 发送已发布警报的 Discord 处理程序。
为避免每个警报间隔都发布一条消息,请使用 AlertNode.StateChangesOnly,以便仅发送警报状态发生变化的事件到 Discord。
请参阅下面的示例,了解在 kapacitor.conf 中定义的示例 Discord 配置。
kapacitor.conf 中的 Discord 设置
[[discord]]
enabled = true
default = true
url = "https://discordapp.com/api/webhooks/xxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
workspace = "guild-alerts"
timestamp = true
username = "AlertBot"
avatar-url = "https://influxdata.github.io/branding/img/downloads/influxdata-logo--symbol--pool-alpha.png"
embed-title = "Alert"
global = false
state-changes-only = false
[[discord]]
enabled = true
default = false
url = "https://discordapp.com/api/webhooks/xxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
workspace = "guild-errors"
timestamp = true
username = "StatsBot"
avatar-url = "https://influxdata.github.io/branding/img/downloads/influxdata-logo--symbol--pool-alpha.png"
embed-title = "Errors"
global = false
state-changes-only = false从 TICKscript 发送警报到 Discord
在 TICKscript 中使用 .discord() 事件处理程序发送警报。例如,此配置将在空闲 CPU 使用率下降到 20% 以下时,将一条消息为“嘿,看看你的 CPU”的警报发送到 Discord 频道。
discord-cpu-alert.tick
stream
|from()
.measurement('cpu')
|alert()
.warn(lambda: "usage_idle" < 20)
.stateChangesOnly()
.message('Hey, check your CPU')
.discord()
.embedTitle('Uh Oh!')
从已定义的处理程序发送警报到 Discord
通过创建发布警报消息到主题的 TICKscript,添加一个订阅 cpu 的 Discord 处理程序。例如,此配置将发送一条消息为“嘿,看看你的 CPU”的警报。然后添加一个订阅 cpu 主题并将所有警报消息发布到 Discord 的 Discord 处理程序。
创建发布警报消息到主题的 TICKscript。下面的 TICKscript 在空闲 CPU 使用率下降到 5% 以下时,将一条严重警报消息发送到 cpu 主题。
cpu_alert.tick
stream
|from()
.measurement('cpu')
|alert()
.crit(lambda: "usage_idle" < 5)
.stateChangesOnly()
.message('Hey, check your CPU')
.topic('cpu')添加并启用 TICKscript
kapacitor define cpu_alert -tick cpu_alert.tick
kapacitor enable cpu_alert创建订阅 cpu 主题并使用 Discord 事件处理程序将警报发送到 Discord 的处理程序文件。此处理程序正在使用非默认的 Discord 处理程序“critical-alerts”,该处理程序将消息发送到 Discord 中的 #critical-alerts 频道。
discord_cpu_handler.yaml
id: discord-cpu-alert
topic: cpu
kind: discord
options:
workspace: 'guild-alerts'
embed-title: 'Hey, Listen!'添加处理器
kapacitor define-topic-handler discord_cpu_handler.yaml使用多个 Discord 配置
Kapacitor 可以使用多个 Discord 集成,每个集成通过 workspace 配置的值来标识。下面的 TICKscript 说明了如何使用多个 Discord 集成。
在上面的 kapacitor.conf 中,有两个 Discord 配置;一个用于警报,另一个用于每日统计。每个 Discord 配置的 workspace 配置充当唯一标识符。
下面的 TICKscript 将警报发送到 alerts Discord 工作区。
discord-cpu-alert.tick
stream
|from()
.measurement('cpu')
|alert()
.crit(lambda: "usage_idle" < 5)
.stateChangesOnly()
.message('Hey, I think the machine is on fire.')
.discord()
.workspace('alerts')
.embedTitle('AAAAAAAAAAAAAAAAAAAAAA')错误率也存储在同一个 InfluxDB 实例中,并且我们希望将 500 错误的每日报告发送到 error-reports Discord 工作区。下面的 TICKscript 收集 500 错误计数并将其发布到 500-errors 主题。
500_errors.tick
stream
|from()
.measurement('errors')
.groupBy('500')
|alert()
.info(lambda: 'count' > 0)
.noRecoveries()
.topic('500-errors')
下面是一个 聚合 处理程序,它订阅 500-errors 主题,在 24 小时内聚合 500 错误的数量,然后将聚合消息发布到 500-errors-24h 主题。
500_errors_24h.yaml
id: 500-errors-24h
topic: 500-errors
kind: aggregate
options:
interval: 24h
topic: 500-errors-24h
message: '{{ .Count }} 500 errors last 24 hours.'最后,一个订阅 500-errors-24h 主题并将聚合计数消息发布到 error-reports Discord 工作区的 Discord 处理程序。
discord_500_errors_daily.yaml
id: discord-500-errors-daily
topic: 500-errors-24h
kind: discord
options:
workspace: guild-errors此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 Kapacitor 和本文档提供反馈和错误报告。要获取支持,请使用以下资源: