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
指定用于格式化消息的语法。选项为 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
对话发送
/newbot
给@BotFather
。@BotFather
将回复好的,一个新的机器人。我们打算怎么称呼它?请为您的机器人选择一个名称。
@BotFather
将提示您完成机器人创建过程的其余部分;随意按照他的指示进行操作,或继续执行我们版本的以下步骤。两种设置都会成功!将您的机器人的名称发送给
@BotFather
。您的机器人的名称可以是任何内容。请注意,这不是您机器人的 Telegram
@username
。您将在步骤 5 中创建用户名。@BotFather
将回复好的。现在让我们为您的机器人选择一个用户名。它必须以
bot
结尾。例如,像这样:TetrisBot 或 tetris_bot。将您的机器人的用户名发送给
@BotFather
。BotFather
将回复完成!恭喜您创建了新的机器人。您可以在 t.me/ 找到它
。您现在可以为您的机器人添加描述、关于部分和个人资料图片,请参阅 /help 获取命令列表。顺便说一句,当您完成创建酷炫机器人后,如果您想要更好的用户名,请 ping 我们的机器人支持。只需确保机器人在您执行此操作之前完全正常运行即可。 使用此令牌访问 HTTP API
<API 访问令牌>有关 Bot API 的描述,请参阅此页面:https://core.telegram.org/bots/api
开始与您的机器人对话。单击
@BotFather
响应中的t.me/<bot-username>
链接,然后在 Telegram 应用程序底部单击Start
。您新创建的机器人将出现在应用程序左侧的聊天列表中。
获取 Telegram API 访问令牌
当您创建机器人时,Telegram 的 @BotFather
机器人向您发送了一个 API 访问令牌。请参阅上一节步骤 5 中的 @BotFather
响应,以查找您的令牌。如果您找不到 API 访问令牌,请按照以下步骤创建新令牌。
发送
/token
给@BotFather
在您的 Telegram 应用程序底部选择相关的机器人。
@BotFather
将回复一个新的 API 访问令牌您可以使用此令牌访问 HTTP API
<API 访问令牌>有关 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。
刷新您的浏览器。
通过在
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
此页是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 Kapacitor 和本文档的反馈和错误报告。要获得支持,请使用以下资源