文档文档

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 模式,这意味着仅当警报状态更改时才会发送警报。仅当 globaltrue 时适用。

ssl-ca

证书颁发机构文件的路径。

ssl-cert

主机证书文件的路径。

ssl-key

证书私钥文件的路径。

insecure-skip-verify

使用 SSL 但跳过链和主机验证。如果使用自签名证书,则这是必需的。

选项

以下 Slack 事件处理器选项可以在处理程序文件中设置,或者在使用 TICKscript 中的 .slack() 时设置。

名称类型描述
workspacestring指定在有多个 Slack 配置时要使用的 Slack 配置。
channelstring要在其中发布消息的 Slack 频道。如果为空,则使用配置中的频道。
usernamestringSlack 机器人的用户名。如果为空,则使用配置中的用户名。
icon-emojistringIconEmoji 是用“:”字符包围的表情符号名称。表情符号图像将替换 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

  1. 登录到您的 Slack 工作区
  2. 为 Kapacitor 创建一个新的 incoming webhook
  3. 将生成的 webhook URL 作为 kapacitor.conf[[slack]] 配置部分中的 url 添加。

新的 Slack 应用

要使用新的 Slack 应用从 Kapacitor 发送警报到 Slack

  1. 访问 https://api.slack.com/apps
  2. 创建一个新的应用或单击现有应用。
  3. 单击 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

此页面是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。 您可以继续像现在一样使用它,而无需对代码进行任何更改。

了解更多

InfluxDB 3 开源版本现已发布公开 Alpha 版

InfluxDB 3 开源版本现已可用于 alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 alpha 版本的一部分。

InfluxDB 3 Core 是我们的新开源产品。 它是用于时间序列和事件数据的最新数据引擎。 InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询功能、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何开始使用的更多信息,请查看