设置事件处理器
通过将警报消息发送到支持的事件处理器,将 Kapacitor 集成到您的监控系统中。目前,Kapacitor 可以将警报消息发送到特定的日志文件和特定的 URL,以及 Slack 和 HipChat 等应用程序。
本文档提供了有关使用 Kapacitor 设置事件处理器的分步说明,包括相关的配置选项和 TICKscript 语法。目前,本文档未涵盖所有支持的事件处理器,但我们将随着时间的推移继续向此页面添加内容。有关支持的事件处理器的完整列表和更多信息,请参阅事件处理器参考文档。
HipChat 设置
HipChat 是 Atlassian 的 Web 服务,用于群聊、视频聊天和屏幕共享。配置 Kapacitor 以将警报消息发送到 HipChat 房间。
要求
要使用 HipChat 配置 Kapacitor,您需要
- 您的 HipChat 子域名名称
- 您的 HipChat 房间名称
- 用于发送通知的 HipChat API 访问令牌
HipChat API 访问令牌
以下步骤描述了如何创建 API 访问令牌。
从 HipChat 主页,单击右上角的人物图标以访问 帐户设置。
从左侧菜单边栏的项目中选择 API 访问。
在 创建新令牌 下,输入令牌的标签(可以是任何内容)。
在 创建新令牌 下,选择 发送通知 作为范围。
单击 创建。
您的令牌将出现在 创建新令牌 部分正上方的表格中
配置
在 Kapacitor 配置文件的 [hipchat]
部分中,设置
enabled
为true
url
设置中的subdomain
为您的 HipChat 子域名
可选的配置设置是
room
设置为您的 HipChat 房间。如果 TICKscript 未指定聊天 ID,则用作默认聊天 ID。
token
设置为您的 HipChat API 访问令牌。如果 TICKscript 未指定 API 访问令牌,则用作默认令牌。
global
设置为 true
以将所有警报发送到 HipChat,而无需在 TICKscript 中指定 HipChat。
state-changes-only
设置为 true
以仅在警报状态更改时才向 HipChat 发送警报。此设置仅在 global
设置也设置为 true
时适用。
示例配置
[hipchat]
enabled = true
url = "https://my-subdomain.hipchat.com/v2/room"
room = "my-room"
token = "mytokentokentokentoken"
global = false
state-changes-only = false
TICKscript 语法
|alert()
.hipChat()
.room('<HipChat-room>')
.token('<HipChat-API-token>')
.room()
和 .token()
规范是可选的。如果它们未在 TICKscript 中设置,则它们默认为 kapacitor.conf
的 [hipchat]
部分中的 room
和 token
设置。
如果在配置文件中将
global
设置为true
,则无需在 TICKscript 中指定.hipChat()
。Kapacitor 默认将所有警报发送到 HipChat。
.room('<HipChat-room>')
设置 HipChat 房间。
.token('<HipChat-API-token>')
设置 HipChat API 访问令牌。
示例
将警报发送到配置文件中设置的 HipChat 房间
配置文件
[hipchat]
enabled = true
url = "https://testtest.hipchat.com/v2/room"
room = "my-alerts"
token = "tokentokentokentokentoken"
global = false
state-changes-only = true
TICKscript
stream
|from()
.measurement('cpu')
|alert()
.crit(lambda: "usage_idle" < 97)
.message('Hey, check your CPU')
.hipChat()
设置将 Hey, check your CPU
发送到与 testest
子域名关联的 my-alerts 房间。
将警报发送到 TICKscript 中设置的 HipChat 房间
配置文件
[hipchat]
enabled = true
url = "https://testtest.hipchat.com/v2/room"
room = "my-alerts"
token = "tokentokentokentokentoken"
global = false
state-changes-only = true
TICKscript
stream
|from()
.measurement('cpu')
|alert()
.crit(lambda: "usage_idle" < 97)
.message('Hey, check your CPU')
.hipChat()
.room('random')
设置将 Hey, check your CPU
发送到与 testest
子域名关联的 random 房间。请注意,TICKscript 中的 .room()
会覆盖配置文件中的 room
设置。
Telegram 设置
Telegram 是一款消息应用程序。配置 Kapacitor 以将警报消息发送到 Telegram 机器人。
要求
要使用 Telegram 配置 Kapacitor,您需要
- Telegram 机器人
- Telegram API 访问令牌
- 您的 Telegram 聊天 ID
Telegram 机器人
以下步骤描述了如何创建新的 Telegram 机器人。
在您的 Telegram 应用程序中搜索 @BotFather 用户名。
单击 开始 以开始与 @BotFather 的对话。
发送
/newbot
到 @BotFather。@BotFather 回复
好的,一个新的机器人。我们打算怎么称呼它?请为您的机器人选择一个名称。
@BotFather 将提示您完成机器人创建过程的其余部分;您可以随意按照他的指示进行操作,或者继续执行我们下面的步骤版本。两种设置都可以成功!
将您的机器人名称发送给 @BotFather。
您的机器人名称可以是任何名称。请注意,这不是您机器人的 Telegram
@username
;您将在步骤 5 中创建用户名。@BotFather 回复
好的。现在让我们为您的机器人选择一个用户名。它必须以
bot
结尾。例如,像这样:TetrisBot 或 tetris_bot。将您的机器人用户名发送给 @BotFather。
您的机器人用户名必须以
bot
结尾。例如:mushroomKap_bot
。BotFather
回复完成!祝贺您拥有了新的机器人。您可以在 t.me/ 找到它。
您现在可以为您的机器人添加描述、关于部分和个人资料图片,请参阅 /help 以获取命令列表。顺便说一句,当您完成创建酷炫机器人后,如果您想要更好的用户名,请 ping 我们的机器人支持。只需确保机器人在执行此操作之前完全正常运行即可。 使用此令牌访问 HTTP API
有关 Bot API 的描述,请参阅此页面:https://core.telegram.org/bots/api
开始与您的机器人对话。
单击 @BotFather 响应中的
t.me/<bot-username>
链接,然后在您的 Telegram 应用程序底部单击 开始。您新创建的机器人将出现在应用程序左侧的聊天列表中。
Telegram API 访问令牌
以下部分描述了如何识别或创建 API 访问令牌。
当您创建机器人时,Telegram 的 @BotFather 机器人向您发送了 API 访问令牌。请参阅上一节步骤 5 中的 @BotFather 响应,以查找您的令牌。如果您找不到 API 访问令牌,请使用以下步骤创建新令牌。
发送
/token
到 @BotFather在您的 Telegram 应用程序底部选择相关的机器人。
@BotFather 回复新的 API 访问令牌
您可以使用此令牌访问 HTTP API
有关 Bot API 的描述,请参阅此页面:https://core.telegram.org/bots/api
Telegram 聊天 ID
以下步骤描述了如何识别您的聊天 ID。
将以下链接粘贴到您的浏览器中。将
<API-access-token>
替换为您在上节中识别或创建的 API 访问令牌https://api.telegram.org/bot<API-access-token>/getUpdates?offset=0
在 Telegram 应用程序中向您的机器人发送消息。消息文本可以是任何内容;您的聊天记录必须至少包含一条消息才能获取您的聊天 ID。
刷新您的浏览器。
在浏览器中提供的 JSON 中识别数字聊天 ID。在下面的格式化示例中,聊天 ID 为
123456789
。{ "ok": true, "result": [ { "update_id": 101010101, "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" } } ] }
配置
在 Kapacitor 配置文件的 [telegram]
部分中设置
enabled
为true
token
为您的 API 访问令牌
默认的 url
设置 (https://api.telegram.org/bot
) 不需要额外的配置。
可选的配置设置是
chat_id
设置为您的 Telegram 聊天 ID。如果 TICKscript 未指定聊天 ID,则用作默认聊天 ID。
parse-mode
对于 Markdown 格式或 HTML 格式的警报消息,设置为 Markdown
或 HTML
。默认的 parse-mode
为 Markdown
。
disable-web-page-preview
设置为 true
以禁用警报消息中的链接预览。
disable-notification
设置为 true
以禁用 iOS 设备上的通知并禁用 Android 设备上的声音。当设置为 true
时,Android 用户将继续接收通知。
global
设置为 true
以将所有警报发送到 Telegram,而无需在 TICKscript 中指定 Telegram。
state-changes-only
设置为 true
以仅在警报状态更改时才向 Telegram 发送警报。此设置仅在 global
设置也设置为 true
时适用。
示例配置
[telegram]
enabled = true
url = "https://api.telegram.org/bot"
token = "abcdefghi:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
chat-id = "123456789"
parse-mode = Markdown
disable-web-page-preview = true
disable-notification = false
global = true
state-changes-only = true
TICKscript 语法
|alert()
.telegram()
.chatId('<chat_id>')
.disableNotification()
.disableWebPagePreview()
.parseMode(['Markdown' | 'HTML'])
.chatId()
、.disableNotification()
、.disableWebPagePreview()
和 .parseMode()
规范是可选的。如果它们未在 TICKscript 中设置,则它们默认为配置文件 [telegram]
部分中的 chat-id
、disable-notification
、disable-web-page-preview
和 parse-mode
设置。请注意,如果在配置文件中将 global
设置为 true
,则无需在 TICKscript 中指定 .telegram()
;Kapacitor 默认将所有警报发送到 Telegram。
.chatId('<chat_id>')
设置 Telegram 聊天 ID。
.disableNotification()
禁用 iOS 设备上的通知并禁用 Android 设备上的声音。Android 用户将继续接收通知。
.disableWebPagePreview()
禁用警报消息中的链接预览。
.parseMode(['Markdown' | 'HTML'])
将 Markdown
或 HTML
设置为警报消息的格式。
示例
将警报发送到配置文件中设置的 Telegram 聊天 ID
配置文件
[telegram]
enabled = true
url = "https://api.telegram.org/bot"
token = "abcdefghi:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
chat-id = "123456789"
parse-mode = "Markdown"
disable-web-page-preview = false
disable-notification = false
global = false
state-changes-only = false
TICKscript
stream
|from()
.measurement('cpu')
|alert()
.crit(lambda: "usage_idle" < 97)
.message('Might want to check your CPU')
.telegram()
设置将 Might want to check your CPU
发送到与聊天 ID 123456789
和 API 访问令牌 abcdefghi:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
关联的 Telegram 机器人。
将警报发送到 TICKscript 中设置的 Telegram 聊天 ID
配置文件
[telegram]
enabled = true
url = "https://api.telegram.org/bot"
token = "abcdefghi:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
chat-id = ""
parse-mode = "Markdown"
disable-web-page-preview = false
disable-notification = false
global = false
state-changes-only = false
TICKscript
stream
|from()
.measurement('cpu')
|alert()
.crit(lambda: "usage_idle" < 97)
.message('Might want to check your CPU')
.telegram()
.chatId('123456789')
设置将 Might want to check your CPU
发送到与聊天 ID 123456789
和 API 访问令牌 abcdefghi:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
关联的 Telegram 机器人。
此页面是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 Kapacitor 和本文档的反馈和错误报告。要获得支持,请使用以下资源