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 网页挂钩 URL。对于 新的 Slack 应用,请使用 https://slack.com/api/chat.postMessage。对于旧版 Slack 入站网页挂钩,请为 Kapacitor 添加一个新的网页挂钩,Slack 将提供该网页挂钩 URL。
token
与 新的 Slack 应用一起使用的 Slack OAuth 令牌。对于旧版入站网页挂钩,请将 token 设置为空字符串 ("")。
channel
消息的默认频道。
username
Slack 机器人用户名。
global
如果为 true,所有警报将发送到 Slack,而无需在 TICKscript 中显式指定 Slack。
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 的旧版入站网页挂钩将警报从 Kapacitor 发送到 Slack
- 登录到您的 Slack 工作区
- 为 Kapacitor 创建一个新的入站网页挂钩。
- 将生成的网页挂钩 URL 作为
url添加到kapacitor.conf的[[slack]]配置部分。
新的 Slack 应用
使用 新的 Slack 应用将警报从 Kapacitor 发送到 Slack
- 访问 https://api.slack.com/apps。
- 创建新应用或点击现有应用。
- 点击 **OAuth & Permissions** 查找令牌。
确保您的应用具有“chat:write”和“chat:write.public”权限。
使用 Slack 事件处理器
在 kapacitor.conf 中启用并配置了一个或多个 Slack 事件处理器后,使用 TICKscripts 中的 .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() 事件处理器,在空闲 CPU 使用率低于 20% 时,将消息“Hey, check your CPU”发送到 #alerts Slack 频道。
slack-cpu-alert.tick
stream
|from()
.measurement('cpu')
|alert()
.warn(lambda: "usage_idle" < 20)
.stateChangesOnly()
.message('Hey, check your CPU')
.slack()
.iconEmoji(':exclamation:')
从已定义的处理程序向 Slack 发送警报
以下设置将警报消息“Hey, check your CPU”发送到 cpu 主题。添加了一个订阅 cpu 主题并将所有警报消息发布到 Slack 的 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')
下面是一个 聚合 处理程序,它订阅 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 Slack 工作区的 Slack 处理程序
slack_500_errors_daily.yaml
id: slack-500-errors-daily
topic: 500-errors-24h
kind: slack
options:
workspace: error-reports此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 Kapacitor 和本文档提供反馈和错误报告。要获取支持,请使用以下资源: