文档文档

设置事件处理程序

通过将告警消息发送到支持的事件处理程序,将 Kapacitor 集成到您的监控系统中。目前,Kapacitor 可以将告警消息发送到特定的日志文件和特定的 URL,以及发送到诸如SlackHipChat 等应用程序。

本文档提供了使用 Kapacitor 设置事件处理程序的逐步说明,包括相关的配置选项和TICKscript 语法。目前,本文档并未涵盖所有支持的事件处理程序,但我们会随着时间的推移不断为该页面添加内容。有关支持的事件处理程序的完整列表以及更多信息,请参阅事件处理程序参考文档

HipChat 设置
Telegram 设置

HipChat 设置

HipChat 是 Atlassian 的一项 Web 服务,提供群聊、视频聊天和屏幕共享功能。配置 Kapacitor 以将告警消息发送到 HipChat 房间。

要求

要使用 HipChat 配置 Kapacitor,您需要

  • 您的 HipChat 子域名
  • 您的 HipChat 房间名称
  • 用于发送通知的 HipChat API 访问令牌

HipChat API 访问令牌

以下步骤将介绍如何创建 API 访问令牌。

  1. 在 HipChat 主页上,通过点击右上角的个人头像来访问账户设置

  2. 在左侧菜单栏的项目中选择API 访问

  3. 创建新令牌下,为您的令牌输入一个标签(可以是任何内容)。

  4. 创建新令牌下,选择发送通知作为范围。

  5. 点击创建

    您的令牌将出现在创建新令牌部分上方的表中

    HipChat token

配置

在 Kapacitor 配置文件中的 [hipchat] 部分,设置

  • enabledtrue
  • url 设置中的 subdomain 为您的 HipChat 子域名

可选的配置设置有

room
设置为您的 HipChat 房间。如果 TICKscript 未指定聊天 ID,则此设置将作为默认聊天 ID。

token
设置为您的 HipChat API 访问令牌。如果 TICKscript 未指定 API 访问令牌,则此设置将作为默认令牌。

global
设置为 true 可将所有告警发送到 HipChat,而无需在 TICKscript 中指定 HipChat。

state-changes-only
仅当告警状态发生变化时,才设置为 true 以将告警发送到 HipChat。此设置仅在 global 设置也为 true 时适用。

示例配置

[hipchat]
  enabled = true
  url = "https://my-subdomain.hipchat.com/v2/room"
  room = "my-room"
  token = "mytokentokentokentoken"
  global = false
  state-changes-only = false

TICKscript 语法

|alert()
  .hipChat()
    .room('<HipChat-room>')
    .token('<HipChat-API-token>')

.room().token() 规范是可选的。如果它们未在 TICKscript 中设置,则它们将默认为 kapacitor.conf[hipchat] 部分中的 roomtoken 设置。

如果在配置文件中将 global 设置为 true,则无需在 TICKscript 中指定 .hipChat()。Kapacitor 默认将所有告警发送到 HipChat。

.room('<HipChat-room>')
设置 HipChat 房间。

.token('<HipChat-API-token>')
设置 HipChat API 访问令牌

示例

将告警发送到配置文件中设置的 HipChat 房间

配置文件

[hipchat]
  enabled = true
  url = "https://testtest.hipchat.com/v2/room"
  room = "my-alerts"
  token = "tokentokentokentokentoken"
  global = false
  state-changes-only = true

TICKscript

stream
  |from()
    .measurement('cpu')
  |alert()
    .crit(lambda: "usage_idle" <  97)
    .message('Hey, check your CPU')
    .hipChat()

此设置将 Hey, check your CPU 发送到与 testest 子域名关联的 my-alerts 房间。

将告警发送到 TICKscript 中设置的 HipChat 房间

配置文件

[hipchat]
  enabled = true
  url = "https://testtest.hipchat.com/v2/room"
  room = "my-alerts"
  token = "tokentokentokentokentoken"
  global = false
  state-changes-only = true

TICKscript

stream
  |from()
    .measurement('cpu')
  |alert()
    .crit(lambda: "usage_idle" <  97)
    .message('Hey, check your CPU')
    .hipChat()
    .room('random')

此设置将 Hey, check your CPU 发送到与 testest 子域名关联的 random 房间。请注意,TICKscript 中的 .room() 会覆盖配置文件中的 room 设置。

Telegram 设置

Telegram 是一款即时通讯应用。配置 Kapacitor 以将告警消息发送到 Telegram 机器人。

要求

要使用 Telegram 配置 Kapacitor,您需要

  • 一个 Telegram 机器人
  • 一个 Telegram API 访问令牌
  • 您的 Telegram 聊天 ID

Telegram 机器人

以下步骤将介绍如何创建一个新的 Telegram 机器人。

  1. 在您的 Telegram 应用程序中搜索 @BotFather 用户名。

  2. 点击 Start 开始与 @BotFather 对话。

  3. @BotFather 发送 /newbot

    @BotFather 回复

    好的,一个新机器人。我们要怎么称呼它?请为您的机器人选择一个名字。

    @BotFather 将引导您完成机器人创建过程的其余部分;您可以随意遵循它的指示,或者继续我们下面的步骤。两种设置都会成功!

  4. 将您的机器人名称发送给 @BotFather

    您的机器人名称可以是任何内容。请注意,这不是您的机器人的 Telegram @username;您将在步骤 5 中创建用户名。

    @BotFather 回复

    好的。现在让我们为您的机器人选择一个用户名。它必须以 bot 结尾。例如:TetrisBot 或 tetris_bot。

  5. 将您的机器人用户名发送给 @BotFather

    您的机器人用户名必须以 bot 结尾。例如:mushroomKap_bot

    BotFather 回复

    完成!恭喜您拥有了新机器人。您可以在 t.me/ 上找到它。. 您现在可以为您的机器人添加描述、关于部分和个人资料图片,有关命令列表,请参阅 /help。顺便说一句,当您完成创建酷炫的机器人后,如果您想要一个更好的用户名,请联系我们的 Bot Support。只需确保机器人完全正常运行后再执行此操作。

    使用此令牌访问 HTTP API

    有关 Bot API 的描述,请参阅此页面:https://core.telegram.org/bots/api

  6. 开始与您的机器人对话。

    点击 @BotFather 回复中的 t.me/<bot-username> 链接,然后在 Telegram 应用程序底部点击 Start

    您新创建的机器人将出现在应用程序左侧的聊天列表中。

Telegram API 访问令牌

以下部分将介绍如何识别或创建 API 访问令牌。

Telegram 的 @BotFather 机器人在您创建机器人时会向您发送一个 API 访问令牌。请参阅上一节第 5 步中的 @BotFather 回复,以查找您的令牌。如果您找不到 API 访问令牌,请按照以下步骤创建一个新令牌。

  1. @BotFather 发送 /token

  2. 在 Telegram 应用程序底部选择相应的机器人。

    @BotFather 回复一个新 API 访问令牌

    您可以使用此令牌访问 HTTP API

    有关 Bot API 的描述,请参阅此页面:https://core.telegram.org/bots/api

Telegram 聊天 ID

以下步骤将介绍如何识别您的聊天 ID。

  1. 将以下链接粘贴到您的浏览器中。将 <API-access-token> 替换为您在上一个部分中识别或创建的 API 访问令牌。

    https://api.telegram.org/bot<API-access-token>/getUpdates?offset=0

  2. 在 Telegram 应用程序中向您的机器人发送消息。消息文本可以是任何内容;您的聊天记录必须包含至少一条消息才能获取您的聊天 ID。

  3. 刷新您的浏览器。

  4. 在浏览器提供的 JSON 中找到数字聊天 ID。在下面的格式化示例中,聊天 ID 为 123456789

    {
      "ok": true,
      "result": [
        {
          "update_id": 101010101,
          "message": {
            "message_id": 2,
            "from": {
              "id": 123456789,
              "first_name": "Mushroom",
              "last_name": "Kap"
            },
            "chat": {
              "id": 123456789,
              "first_name": "Mushroom",
              "last_name": "Kap",
              "type": "private"
            },
            "date": 1487183963,
            "text": "hi"
          }
        }
      ]
    }

配置

在 Kapacitor 配置文件中的 [telegram] 部分设置

默认的 url 设置(https://api.telegram.org/bot)无需额外配置。

可选的配置设置有

chat_id

设置为您的 Telegram 聊天 ID。如果 TICKscript 未指定聊天 ID,则此设置将作为默认聊天 ID。

parse-mode

设置为 MarkdownHTML 以实现 Markdown 格式或 HTML 格式的告警消息。默认的 parse-modeMarkdown

disable-web-page-preview

设置为 true 以在告警消息中禁用 链接预览

disable-notification

设置为 true 可在 iOS 设备上禁用通知,并在 Android 设备上禁用声音。设置为 true 时,Android 用户仍会收到通知。

global

设置为 true 以将所有告警发送到 Telegram,而无需在 TICKscript 中指定 Telegram。

state-changes-only

仅当告警状态发生变化时,才设置为 true 以将告警发送到 Telegram。此设置仅在 global 设置也为 true 时适用。

示例配置

[telegram]
  enabled = true
  url = "https://api.telegram.org/bot"
  token = "abcdefghi:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  chat-id = "123456789"
  parse-mode = Markdown
  disable-web-page-preview = true
  disable-notification = false
  global = true
  state-changes-only = true

TICKscript 语法

|alert()
  .telegram()
    .chatId('<chat_id>')
    .disableNotification()
    .disableWebPagePreview()
    .parseMode(['Markdown' | 'HTML'])

.chatId().disableNotification().disableWebPagePreview().parseMode() 规范是可选的。如果它们未在 TICKscript 中设置,则它们将默认为配置文件 [telegram] 部分中的 chat-iddisable-notificationdisable-web-page-previewparse-mode 设置。请注意,如果在配置文件中将 global 设置为 true,则无需在 TICKscript 中指定 .telegram();Kapacitor 默认将所有告警发送到 Telegram。

.chatId('<chat_id>')
设置 Telegram 聊天 ID

.disableNotification()
在 iOS 设备上禁用通知,并在 Android 设备上禁用声音。Android 用户仍会收到通知。

.disableWebPagePreview()
在告警消息中禁用 链接预览

.parseMode(['Markdown' | 'HTML'])
MarkdownHTML 设置为告警消息的格式。

示例

将告警发送到配置文件中设置的 Telegram 聊天 ID

配置文件

[telegram]
  enabled = true
  url = "https://api.telegram.org/bot"
  token = "abcdefghi:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  chat-id = "123456789"
  parse-mode  = "Markdown"
  disable-web-page-preview = false
  disable-notification = false
  global = false
  state-changes-only = false

TICKscript

stream
  |from()
    .measurement('cpu')
  |alert()
    .crit(lambda: "usage_idle" < 97)
    .message('Might want to check your CPU')
    .telegram()

此设置将 Might want to check your CPU 发送到与聊天 ID 123456789 和 API 访问令牌 abcdefghi:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 关联的 Telegram 机器人。

将告警发送到 TICKscript 中设置的 Telegram 聊天 ID

配置文件

[telegram]
  enabled = true
  url = "https://api.telegram.org/bot"
  token = "abcdefghi:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  chat-id = ""
  parse-mode  = "Markdown"
  disable-web-page-preview = false
  disable-notification = false
  global = false
  state-changes-only = false

TICKscript

stream
  |from()
    .measurement('cpu')
  |alert()
    .crit(lambda: "usage_idle" < 97)
    .message('Might want to check your CPU')
    .telegram()
      .chatId('123456789')

此设置将 Might want to check your CPU 发送到与聊天 ID 123456789 和 API 访问令牌 abcdefghi:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 关联的 Telegram 机器人。


此页面是否有帮助?

感谢您的反馈!


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