文档文档

Telegram 事件处理器

Telegram 是一款注重安全性和速度的消息应用。Kapacitor 可以配置为向 Telegram 机器人发送警报消息。

配置

Telegram 警报处理器的配置以及默认 选项 值在您的 kapacitor.conf 文件中设置。下面是一个配置示例

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

enabled

设置为 true 以启用 Telegram 事件处理器。

url

Telegram 机器人 URL。_这通常不需要更改。

token

Telegram 机器人令牌。联系 @BotFather 获取机器人令牌。

chat-id

消息的默认接收者。在 Telegram 上联系 @myidbot 获取 ID。

parse-mode

指定用于格式化消息的语法。选项为 MarkdownHTML,它们允许 Telegram 应用在警报消息中显示粗体、斜体、固定宽度文本或内联 URL。

disable-web-page-preview

禁用此消息中链接的链接预览。

disable-notification

静默发送消息。iOS 用户将不会收到通知。Android 用户将收到无声通知。

global

如果设置为 true,所有警报将发送到 Telegram,而无需在 TICKscript 中明确指定 Telegram。

state-changes-only

如果设置为 true,只有当警报状态发生变化时,警报才会发送到 Telegram。这仅在 global 也设置为 true 时适用。

选项

以下 Telegram 事件处理器选项可以在 处理器文件 中设置,或在使用 TICKscript 中的 .telegram() 时设置。

名称类型描述
chat-idstring要将消息发送到的 Telegram 用户/群组 ID。如果为空,则使用配置中的 chati-d。
parse-modestring解析节点,默认为 Markdown。如果为空,则使用配置中的 parse-mode。
disable-web-page-previewbool网页预览。如果为空,则使用配置中的 disable-web-page-preview。
disable-notificationbool禁用通知。如果为空,则使用配置中的 disable-notification。

示例:处理程序文件

topic: topic-name
id: handler-id
kind: telegram
options:
  chat-id: '123456789'
  parse-mode: 'Markdown'
  disable-web-page-preview: false
  disable-notification: false

示例:TICKscript

|alert()
  // ...  
  .telegram()
    .chatId('123456789')
    .disableNotification()
    .disableWebPagePreview()
    .parseMode('Markdown')

Telegram 设置

要求

要使用 Telegram 配置 Kapacitor,需要以下内容

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

创建 Telegram 机器人

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

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

  3. @BotFather 发送 /newbot@BotFather 将会回复


    好的,一个新的机器人。我们该如何称呼它?请为您的机器人选择一个名称。


    @BotFather 将会引导您完成其余的机器人创建过程;您可以随意按照他的指示进行,或继续执行我们下面的步骤。两种设置都会成功!

  4. 将您的机器人名称发送给 @BotFather。您的机器人名称可以是任何名称。

    请注意,这并不是您的机器人的 Telegram @username。您将在第 5 步中创建用户名。

    @BotFather 将会回复


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


  5. 将您的机器人用户名发送给 @BotFatherBotFather 将会回复


    完成!恭喜您拥有了新的机器人。您可以在 t.me/ 找到它。您现在可以为您的机器人添加描述、关于信息和个人资料图片,请参阅 /help 获取命令列表。顺便说一句,在完成创建您的炫酷机器人后,如果您想要一个更好的用户名,请联系我们的 Bot Support。在此之前请确保机器人已完全投入运行。

    使用此令牌访问 HTTP API
    <API-access-token>

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


  6. 开始与您的机器人对话。点击 @BotFather 回复中的 t.me/<bot-username> 链接,然后在您的 Telegram 应用程序底部点击 Start。您新创建的机器人将出现在应用程序左侧的聊天列表中。

获取 Telegram API 访问令牌

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

  1. @BotFather 发送 /token

  2. 在您的 Telegram 应用程序底部选择相关的机器人。@BotFather 将会回复一个新的 API 访问令牌


    您可以使用此令牌访问 HTTP API
    <API-access-token>

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


获取您的 Telegram 聊天 ID

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

    https://api.telegram.org/bot<API-access-token>/getUpdates?offset=0
  2. 在 Telegram 应用程序中向您的机器人发送一条消息。消息文本可以是任何内容。您的聊天记录必须至少包含一条消息才能获取您的聊天 ID。

  3. 刷新您的浏览器。

  4. 通过查找 chat JSON 对象中的 id 来识别数字聊天 ID。在下面的示例中,聊天 ID 是 123456789

    {  
       "ok":true,
       "result":[  
          {  
             "update_id":XXXXXXXXX,
             "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"
             }
          }
       ]
    }

使用 Telegram 事件处理器

在启用并配置好 kapacitor.conf 中的 Telegram 事件处理器后,您可以在 TICKscript 中使用 .telegram() 属性将消息发送到您的 Telegram 机器人,或者定义一个订阅主题并向您的 Telegram 机器人发送已发布警报的 Telegram 处理器。

为避免每次警报间隔都发布一条消息,请使用 AlertNode.StateChangesOnly,这样只有当警报状态发生变化的事件才会发送到 Telegram。

下面的示例使用了 kapacitor.conf 中定义的以下 Telegram 配置

kapacitor.conf 中的 Telegram 设置

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

从 TICKscript 将警报发送到 Telegram 机器人

以下 TICKscript 使用 .telegram() 事件处理器发送消息“嘿,检查你的 CPU”,当空闲 CPU 使用率低于 10% 时,将此消息发送到 Telegram 机器人。它使用了 kapacitor.conf 中定义的默认 Telegram 设置。

telegram-cpu-alert.tick

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

从已定义的处理器将警报发送到 Telegram 机器人

以下设置将消息“嘿,检查你的 CPU”发送到使用 123456789 聊天 ID 的 Telegram 机器人。

创建一个将警报消息发布到主题的 TICKscript。下面的 TICKscript 在 CPU 空闲使用率低于 10% 时(或 CPU 使用率高于 90%)cpu 主题发送警报消息。

cpu_alert.tick

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

添加并启用 TICKscript

kapacitor define cpu_alert -tick cpu_alert.tick
kapacitor enable cpu_alert

创建一个订阅 cpu 主题并使用 Telegram 事件处理器将警报发送到 Telegram 中 123456789 聊天 ID 的处理器文件。

telegram_cpu_handler.yaml

id: telegram-cpu-alert
topic: cpu
kind: telegram
options:
  chat-id: '123456789'

添加处理器

kapacitor define-topic-handler telegram_cpu_handler.yaml

此页面是否有帮助?

感谢您的反馈!


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