文档文档

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() 时设置。

名称类型描述
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 的旧版入站网页挂钩将警报从 Kapacitor 发送到 Slack

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

新的 Slack 应用

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

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

此页面是否有帮助?

感谢您的反馈!


InfluxDB 3.8 新特性

InfluxDB 3.8 和 InfluxDB 3 Explorer 1.6 的主要增强功能。

查看博客文章

InfluxDB 3.8 现已适用于 Core 和 Enterprise 版本,同时发布了 InfluxDB 3 Explorer UI 的 1.6 版本。本次发布着重于操作成熟度,以及如何更轻松地部署、管理和可靠地运行 InfluxDB。

更多信息,请查看

InfluxDB Docker 的 latest 标签将指向 InfluxDB 3 Core

在 **2026 年 2 月 3 日**,InfluxDB Docker 镜像的 latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。

如果使用 Docker 来安装和运行 InfluxDB,latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。例如,如果使用 Docker 运行 InfluxDB v2,请将 latest 版本标签替换为 Docker pull 命令中的特定版本标签 — 例如

docker pull influxdb:2