文档文档

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

已启用

设置为 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. 发送 /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 的 Telgram 机器人发送消息“嘿,检查你的 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 即将进入维护模式。您可以继续像现在这样使用它,而无需对您的代码进行任何更改。

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

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

有关更多信息,请查看