文档文档

Discord 事件处理程序

Discord 是一个流行的聊天服务,主要面向游戏玩家,也被游戏之外的团队用作免费解决方案。要配置 Kapacitor 将警报消息发送到 Discord,请设置适用的配置选项。

配置

Discord 事件处理程序的配置以及默认 选项 值在您的 kapacitor.conf 中设置。以下是一个配置示例

[[discord]]
  enabled = false
  default = true
  url = "https://discordapp.com/api/webhooks/xxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  workspace = "guild-channel"
  timestamp = true
  username = "Kapacitor"
  avatar-url = "https://influxdata.github.io/branding/img/downloads/influxdata-logo--symbol--pool-alpha.png"
  embed-title = "Kapacitor Alert"
  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

可以通过重复 [[discord]] 部分来配置多个 Discord 客户端。workspace 作为每个配置的 Discord 客户端的唯一标识符。

enabled

设置为 true 以启用 Discord 事件处理程序。

default

如果指定了多个 Discord 客户端配置,请将一个配置标识为默认配置。

workspace

Discord 工作区 ID。将此字符串设置为以识别此特定的 Discord 配置。例如,Discord 频道名称及其所属的服务器(guild),例如 <guild>-<channel>

timestamp

布尔值,指示是否应在嵌入消息中显示时间戳。

url

Discord Webhook URL。这可以通过在频道设置中添加 webhook 来获得 - 有关完整指南,请参阅 Webhook 入门。Discord 将提供 webhook URL。

username

设置 Discord 机器人的用户名,以覆盖生成 webhook 时设置的用户名。

avatar-url

设置指定头像的 URL,以覆盖生成 webhook 时设置的头像。

embed-title

设置将在警报嵌入消息中显示的标题。如果为空,则不设置标题。

global

设置为 true 以将所有警报发送到 Discord,而无需在 TICKscript 中显式指定 Discord。

state-changes-only

将所有警报设置为仅状态更改模式,这意味着仅在警报状态更改时才会发送警报。仅当 globaltrue 时适用。

ssl-ca

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

ssl-cert

设置主机证书文件的路径。

ssl-key

设置私钥文件的路径。

insecure-skip-verify

设置为 true 以使用 SSL 但跳过证书链和主机验证。如果使用自签名证书,则需要此设置。

选项

处理程序文件 中或在使用 TICKscript 中的 .discord() 时,设置以下 Discord 事件处理程序选项。

名称类型描述
workspacestring指定在使用多个 Discord 配置时要使用哪个配置。
timestampbool指定是否在嵌入页脚中显示时间戳。如果为空,则使用配置中的选择。
usernamestringDiscord 机器人的用户名。如果为空,则使用配置中的用户名。
avatar-urlstring用作 webhook 头像的图片 URL。如果为空,则使用配置中的 URL。
embed-titlestring发布到 webhook 的警报嵌入消息的标题。如果为空,则使用配置中设置的标题。

示例:处理程序文件

id: handler-id
topic: topic-name
kind: discord
options:
  workspace: 'guild-channel'
  username: 'Kapacitor'
  avatar-url: 'https://influxdata.github.io/branding/img/downloads/influxdata-logo--symbol--pool-alpha.png'
  timestamp: true
  embed-title: 'Kapacitor Alert'

示例:TICKscript

|alert()
  // ...
  .discord()
    .workspace('guild-channel')
    .username('Kapacitor')
    .avatarUrl('https://influxdata.github.io/branding/img/downloads/influxdata-logo--symbol--pool-alpha.png')
    .timestamp(true)
    .embedTitle('Kapacitor Alert')

设置 Guild

要允许 Kapacitor 向 Discord 发送警报,请从 Discord 获取 webhook URL - 请参阅 Webhook 入门。然后,将生成的 webhook URL 添加到 kapacitor.conf[[discord]] 配置部分的 url 中。

使用 Discord 事件处理程序

在您的 kapacitor.conf 中启用并配置了一个或多个 Discord 事件处理程序后,请在您的 TICKscript 中使用 .discord() 属性将警报发送到 Discord,或者定义一个订阅主题并向 Discord 发送已发布警报的 Discord 处理程序。

为避免每个警报间隔都发布一条消息,请使用 AlertNode.StateChangesOnly,以便仅发送警报状态发生变化的事件到 Discord。

请参阅下面的示例,了解在 kapacitor.conf 中定义的示例 Discord 配置。

kapacitor.conf 中的 Discord 设置

[[discord]]
  enabled = true
  default = true
  url = "https://discordapp.com/api/webhooks/xxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  workspace = "guild-alerts"
  timestamp = true
  username = "AlertBot"
  avatar-url = "https://influxdata.github.io/branding/img/downloads/influxdata-logo--symbol--pool-alpha.png"
  embed-title = "Alert"
  global = false
  state-changes-only = false

[[discord]]
  enabled = true
  default = false
  url = "https://discordapp.com/api/webhooks/xxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  workspace = "guild-errors"
  timestamp = true
  username = "StatsBot"
  avatar-url = "https://influxdata.github.io/branding/img/downloads/influxdata-logo--symbol--pool-alpha.png"
  embed-title = "Errors"
  global = false
  state-changes-only = false

从 TICKscript 发送警报到 Discord

在 TICKscript 中使用 .discord() 事件处理程序发送警报。例如,此配置将在空闲 CPU 使用率下降到 20% 以下时,将一条消息为“嘿,看看你的 CPU”的警报发送到 Discord 频道。

discord-cpu-alert.tick

stream
  |from()
    .measurement('cpu')
  |alert()
    .warn(lambda: "usage_idle" < 20)
    .stateChangesOnly()
    .message('Hey, check your CPU')
    .discord()   
      .embedTitle('Uh Oh!')  

从已定义的处理程序发送警报到 Discord

通过创建发布警报消息到主题的 TICKscript,添加一个订阅 cpu 的 Discord 处理程序。例如,此配置将发送一条消息为“嘿,看看你的 CPU”的警报。然后添加一个订阅 cpu 主题并将所有警报消息发布到 Discord 的 Discord 处理程序。

创建发布警报消息到主题的 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 主题并使用 Discord 事件处理程序将警报发送到 Discord 的处理程序文件。此处理程序正在使用非默认的 Discord 处理程序“critical-alerts”,该处理程序将消息发送到 Discord 中的 #critical-alerts 频道。

discord_cpu_handler.yaml

id: discord-cpu-alert
topic: cpu
kind: discord
options:
  workspace: 'guild-alerts'
  embed-title: 'Hey, Listen!'

添加处理器

kapacitor define-topic-handler discord_cpu_handler.yaml

使用多个 Discord 配置

Kapacitor 可以使用多个 Discord 集成,每个集成通过 workspace 配置的值来标识。下面的 TICKscript 说明了如何使用多个 Discord 集成。

在上面的 kapacitor.conf ,有两个 Discord 配置;一个用于警报,另一个用于每日统计。每个 Discord 配置的 workspace 配置充当唯一标识符。

下面的 TICKscript 将警报发送到 alerts Discord 工作区。

discord-cpu-alert.tick

stream
  |from()
    .measurement('cpu')
  |alert()
    .crit(lambda: "usage_idle" < 5)
    .stateChangesOnly()
    .message('Hey, I think the machine is on fire.')
    .discord()
      .workspace('alerts')
      .embedTitle('AAAAAAAAAAAAAAAAAAAAAA')

错误率也存储在同一个 InfluxDB 实例中,并且我们希望将 500 错误的每日报告发送到 error-reports Discord 工作区。下面的 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 Discord 工作区的 Discord 处理程序。

discord_500_errors_daily.yaml

id: discord-500-errors-daily
topic: 500-errors-24h
kind: discord
options:
  workspace: guild-errors

此页面是否有帮助?

感谢您的反馈!


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