Slack 事件处理器
Slack 是一种广泛使用的“数字工作空间”,方便团队成员之间的沟通。Kapacitor 可以配置为向 Slack 发送警报消息。
配置
Slack 事件处理器的配置以及默认选项值在您的 kapacitor.conf
中设置。以下是一个配置示例
[[slack]]
enabled = true
default = true
workspace = "example.slack.com"
url = "https://slack.com/api/chat.postMessage"
token = "mY5uP3Rs3CrE7t0keN"
channel = "#alerts"
username = "kapacitor"
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
可以通过重复 [[slack]]
部分来配置多个 Slack 客户端。workspace
充当每个配置的 Slack 客户端的唯一标识符。
enabled
设置为 true
以启用 Slack 事件处理器。
default
如果存在多个 Slack 配置,则将其中一个 Slack 配置标识为默认配置。
workspace
Slack 工作区 ID。这可以是标识此特定 Slack 配置的任何字符串。一个合理的选择是 Slack 工作区的名称,例如 <workspace>.slack.com
。
url
Slack webhook URL。 对于新的 Slack 应用,请使用 https://slack.com/api/chat.postMessage
。 对于旧版 Slack Incoming Webhooks,为 Kapacitor 添加一个新的 webhook,Slack 将提供 webhook URL。
token
与新的 Slack 应用一起使用的 Slack OAuth token。 对于旧版 Incoming Webhooks,请将 token
留空 (""
)。
channel
消息的默认频道。
username
Slack 机器人用户名。
global
如果为 true,则所有警报都将发送到 Slack,而无需在 TICKscript 中显式指定 Slack。
state-changes-only
将所有警报设置为 state-changes-only 模式,这意味着仅当警报状态更改时才会发送警报。仅当 global
为 true
时适用。
ssl-ca
证书颁发机构文件的路径。
ssl-cert
主机证书文件的路径。
ssl-key
证书私钥文件的路径。
insecure-skip-verify
使用 SSL 但跳过链和主机验证。如果使用自签名证书,则这是必需的。
选项
以下 Slack 事件处理器选项可以在处理程序文件中设置,或者在使用 TICKscript 中的 .slack()
时设置。
名称 | 类型 | 描述 |
---|---|---|
workspace | string | 指定在有多个 Slack 配置时要使用的 Slack 配置。 |
channel | string | 要在其中发布消息的 Slack 频道。如果为空,则使用配置中的频道。 |
username | string | Slack 机器人的用户名。如果为空,则使用配置中的用户名。 |
icon-emoji | string | IconEmoji 是用“:”字符包围的表情符号名称。表情符号图像将替换 slack 机器人的正常用户图标。 |
示例:处理程序文件
id: handler-id
topic: topic-name
kind: slack
options:
workspace: 'workspace.slack.com'
channel: '#alerts'
username: 'kapacitor'
icon-emoji: ':smile:'
示例:TICKscript
|alert()
// ...
.slack()
.workspace('workspace.slack.com')
.channel('#alerts')
.username('kapacitor')
.iconEmoji(':smile:')
Slack 设置
旧版 Slack 应用
要使用 Slack 的旧版 incoming webhooks 从 Kapacitor 发送警报到 Slack
- 登录到您的 Slack 工作区
- 为 Kapacitor 创建一个新的 incoming webhook。
- 将生成的 webhook URL 作为
kapacitor.conf
的[[slack]]
配置部分中的url
添加。
新的 Slack 应用
要使用新的 Slack 应用从 Kapacitor 发送警报到 Slack
- 访问 https://api.slack.com/apps。
- 创建一个新的应用或单击现有应用。
- 单击 OAuth & 权限 查找 token。
确保您的应用具有“chat:write”和“chat:write.public”权限。
使用 Slack 事件处理器
在一个或多个 Slack 事件处理器在您的 kapacitor.conf
中启用和配置后,在您的 TICKscript 中使用 .slack()
属性向 Slack 发送警报,或定义一个 Slack 处理程序,该处理程序订阅主题并将发布的警报发送到 Slack。
为避免在每个警报间隔发布消息,请使用AlertNode.StateChangesOnly,以便仅在警报状态更改的事件发送到 Slack。
以下示例使用在 kapacitor.conf
中定义的以下 Slack 配置
kapacitor.conf 中的 Slack 设置
[[slack]]
enabled = true
default = true
workspace = "alerts"
url = "https://slack.com/api/chat.postMessage"
token = "mY5uP3Rs3CrE7t0keN1"
channel = "#alerts"
username = "AlertBot"
global = false
state-changes-only = false
[[slack]]
enabled = true
default = false
workspace = "error-reports"
url = "https://slack.com/api/chat.postMessage"
token = "mY5uP3Rs3CrE7t0keN2"
channel = "#error-reports"
username = "StatsBot"
global = false
state-changes-only = false
从 TICKscript 向 Slack 发送警报
以下 TICKscript 使用 .slack()
事件处理器向 #alerts
Slack 频道发送消息“嘿,检查你的 CPU”,每当空闲 CPU 使用率降至 20% 以下时。
slack-cpu-alert.tick
stream
|from()
.measurement('cpu')
|alert()
.warn(lambda: "usage_idle" < 20)
.stateChangesOnly()
.message('Hey, check your CPU')
.slack()
.iconEmoji(':exclamation:')
从定义的处理程序向 Slack 发送警报
以下设置向 cpu
主题发送一条警报,消息为“嘿,检查你的 CPU”。 添加了一个 Slack 处理程序,该处理程序订阅 cpu
主题并将所有警报消息发布到 Slack。
创建一个 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
主题并使用 Slack 事件处理器向 Slack 发送警报。 此处理程序使用非默认的 Slack 处理程序“critical-alerts”,该处理程序将消息发送到 Slack 中的 #critical-alerts 频道。
slack_cpu_handler.yaml
id: slack-cpu-alert
topic: cpu
kind: slack
options:
workspace: 'alerts'
icon-emoji: ':fire:'
添加处理程序
kapacitor define-topic-handler slack_cpu_handler.yaml
使用多个 Slack 配置
Kapacitor 可以使用多个 Slack 集成,每个集成都由 workspace
配置的值标识。 以下 TICKscript 说明了如何使用多个 Slack 集成。
在 上面的 kapacitor.conf
中,有两个 Slack 配置; 一个用于警报,另一个用于每日统计信息。 每个 Slack 配置的 workspace
配置充当唯一标识符。
以下 TICKscript 向 alerts
Slack 工作区发送警报。
slack-cpu-alert.tick
stream
|from()
.measurement('cpu')
|alert()
.crit(lambda: "usage_idle" < 5)
.stateChangesOnly()
.message('Hey, I think the machine is on fire.')
.slack()
.workspace('alerts')
.iconEmoji(':fire:')
错误率也存储在同一个 InfluxDB 实例中,我们希望将 500
错误的每日报告发送到 error-reports
Slack 工作区。 以下 TICKscript 收集 500
错误发生次数,并将它们发布到 500-errors
主题。
500_errors.tick
stream
|from()
.measurement('errors')
.groupBy('500')
|alert()
.info(lambda: 'count' > 0)
.noRecoveries()
.topic('500-errors')
以下是一个aggregate 处理程序,它订阅 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.'
最后,但并非最不重要,一个 Slack 处理程序,它订阅 500-errors-24h
主题并将聚合的计数消息发布到 error-reports
Slack 工作区
slack_500_errors_daily.yaml
id: slack-500-errors-daily
topic: 500-errors-24h
kind: slack
options:
workspace: error-reports
此页面是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子! 我们欢迎并鼓励您提供关于 Kapacitor 和本文档的反馈和错误报告。 要获得支持,请使用以下资源