文档文档

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 令牌。对于旧版 Incoming Webhooks,请将 token 留空 ("")。

channel

消息的默认频道。

username

Slack 机器人用户名。

global

如果为 true,则所有告警都将发送到 Slack,而无需在 TICKscript 中显式指定 Slack。

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 是用 ‘:’ 字符包围的 emoji 名称。emoji 图像将替换 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 的旧版传入 webhook 从 Kapacitor 发送告警到 Slack

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

新的 Slack 应用

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

  1. 访问 https://api.slack.com/apps
  2. 创建一个新的应用或单击现有应用。
  3. 单击 OAuth & 权限 以查找令牌。

确保您的应用具有 ‘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() 事件处理器将消息 “Hey, check your CPU” 发送到 #alerts Slack 频道,每当空闲 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 主题,消息为 “Hey, check your 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')  

以下是一个聚合处理程序,它订阅 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 Core 和 Enterprise

快速启动。更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、近实时数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。InfluxDB 3 Enterprise 构建在 Core 的基础上,增加了高可用性、读取副本、增强的安全性以及数据压缩,从而实现更快的查询和优化的存储。InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

更多信息,请查看