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 (解析模式)
指定用于格式化消息的语法。选项为 Markdown
或 HTML
,允许 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 机器人
在您的 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
的 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
此页内容是否对您有帮助?
感谢您的反馈!