文档文档 (Documentation)

Telegram 事件处理程序

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

配置 (Configuration)

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 (聊天 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 时适用。

选项 (Options)

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

名称 (Name)类型 (Type)描述 (Description)
chat-id (聊天 ID)string (字符串)Telegram 用户/群组 ID,用于向其发布消息。如果为空,则使用配置中的 chat-id。
parse-mode (解析模式)string (字符串)解析节点,默认为 Markdown。如果为空,则使用配置中的 parse-mode。
disable-web-page-preview (禁用网页预览)bool (布尔值)网页预览。如果为空,则使用配置中的 disable-web-page-preview。
disable-notification (禁用通知)bool (布尔值)禁用通知。如果为空,则使用配置中的 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 设置

要求 (Requirements)

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

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

创建 Telegram 机器人

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

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

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


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


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

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

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

    @BotFather 将回复


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


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


    完成!恭喜您创建了新的机器人。您可以在 t.me/ 找到它. 您现在可以为您的机器人添加描述、关于部分和头像,请参阅 /help 获取命令列表。顺便说一句,当您完成创建酷机器人后,如果您想要更好的用户名,请 ping 我们的机器人支持。请确保机器人在您执行此操作之前完全运行。

    使用此令牌访问 HTTP API
    <API 访问令牌>

    有关 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. 发送 /token@BotFather

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


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

    有关 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() 事件处理程序向 Telegram 机器人发送消息“嘿,检查一下你的 CPU”,每当空闲 CPU 使用率降至 10% 以下时。它使用在 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 机器人发送告警

以下设置向聊天 ID 为 123456789 的 Telegram 机器人发送消息“嘿,检查一下你的 CPU”。

创建一个 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 中聊天 ID 为 123456789 的用户。

telegram_cpu_handler.yaml

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

添加处理程序

kapacitor define-topic-handler telegram_cpu_handler.yaml

此页内容是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像目前一样使用它,而无需对您的代码进行任何更改。

阅读更多 (Read more)

InfluxDB 3 开源版本现已发布公开 Alpha 版

InfluxDB 3 开源版本现已可用于 Alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 Alpha 版本的一部分。

InfluxDB 3 Core 是我们新的开源产品。它是一个用于时间序列和事件数据的最新数据引擎。InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询功能、读取副本、高可用性、可伸缩性和细粒度的安全性。

有关如何入门的更多信息,请查看