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 = falseenabled
设置为 true 以启用 Telegram 事件处理器。
url
Telegram 机器人 URL。_这通常不需要更改。
token
Telegram 机器人令牌。联系 @BotFather 获取机器人令牌。
chat-id
消息的默认接收者。在 Telegram 上联系 @myidbot 获取 ID。
parse-mode
指定用于格式化消息的语法。选项为 Markdown 或 HTML,它们允许 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-id | string | 要将消息发送到的 Telegram 用户/群组 ID。如果为空,则使用配置中的 chati-d。 |
| 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 设置
要求
要使用 Telegram 配置 Kapacitor,需要以下内容
- 一个 Telegram 机器人
- 一个 Telegram API 访问令牌
- 一个 Telegram 聊天 ID
创建 Telegram 机器人
在您的 Telegram 应用程序中搜索
@BotFather用户名点击
Start开始与@BotFather的对话向
@BotFather发送/newbot。@BotFather将会回复好的,一个新的机器人。我们该如何称呼它?请为您的机器人选择一个名称。
@BotFather将会引导您完成其余的机器人创建过程;您可以随意按照他的指示进行,或继续执行我们下面的步骤。两种设置都会成功!将您的机器人名称发送给
@BotFather。您的机器人名称可以是任何名称。请注意,这并不是您的机器人的 Telegram
@username。您将在第 5 步中创建用户名。@BotFather将会回复好的。现在让我们为您的机器人选择一个用户名。它必须以
bot结尾。例如:TetrisBot 或 tetris_bot。将您的机器人用户名发送给
@BotFather。BotFather将会回复完成!恭喜您拥有了新的机器人。您可以在 t.me/ 找到它
。您现在可以为您的机器人添加描述、关于信息和个人资料图片,请参阅 /help 获取命令列表。顺便说一句,在完成创建您的炫酷机器人后,如果您想要一个更好的用户名,请联系我们的 Bot Support。在此之前请确保机器人已完全投入运行。 使用此令牌访问 HTTP API
<API-access-token>有关 Bot API 的描述,请参阅此页面:https://core.telegram.org/bots/api
开始与您的机器人对话。点击
@BotFather回复中的t.me/<bot-username>链接,然后在您的 Telegram 应用程序底部点击Start。您新创建的机器人将出现在应用程序左侧的聊天列表中。
获取 Telegram API 访问令牌
Telegram 的 @BotFather 机器人会在您创建机器人时向您发送一个 API 访问令牌。请参阅上一节第 5 步中 @BotFather 的回复,了解在哪里可以找到您的令牌。如果您找不到 API 访问令牌,请按照下面的步骤创建一个新的令牌。
向
@BotFather发送/token在您的 Telegram 应用程序底部选择相关的机器人。
@BotFather将会回复一个新的 API 访问令牌您可以使用此令牌访问 HTTP API
<API-access-token>有关 Bot API 的描述,请参阅此页面:https://core.telegram.org/bots/api
获取您的 Telegram 聊天 ID
将以下链接粘贴到您的浏览器中。将
<API-access-token>替换为您在上一个部分中识别或创建的 API 访问令牌https://api.telegram.org/bot<API-access-token>/getUpdates?offset=0在 Telegram 应用程序中向您的机器人发送一条消息。消息文本可以是任何内容。您的聊天记录必须至少包含一条消息才能获取您的聊天 ID。
刷新您的浏览器。
通过查找
chatJSON 对象中的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此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 Kapacitor 和本文档提供反馈和错误报告。要获取支持,请使用以下资源: