Using Kapacitor event handlers to send alert messages
This page documents an earlier version of Kapacitor. Kapacitor v1.6 is the latest stable version.
Kapacitor can be integrated into a monitoring system by sending alert messages to supported event handlers. Currently, Kapacitor can send alert messages to specific log files and specific URLs, as well as to many third party applications like Slack and HipChat.
This document offers step-by-step instructions for setting up event handlers with Kapacitor, including the relevant configuration options and TICKscript syntax. Currently, this document does not cover every supported event handler, but additional content should be added to this page over time. For a complete list of the supported event handlers and for additional information, please see the event handler presentation in the Alert node documentation.
HipChat setup
HipChat is Atlassian’s web service for group chat, video chat, and screen sharing. Kapacitor can be configured to send alert messages to a HipChat room.
Requirements
To configure Kapacitor with HipChat the following will be needed:
- A HipChat subdomain name
- A HipChat room name
- A HipChat API access token for sending notifications
HipChat API Access Token
The following steps describe how to create the API access token.
1. From the HipChat home page, access Account settings
by clicking on the
person icon in the top right corner.
2. Select API access
from the items in the left menu sidebar.
3. Under Create new token
, enter a label for the token (it can be anything).
4. Under Create new token
, select Send Notification
as the Scope.
5. Click Create
.
Your token appears in the table just above the Create new token
section:
Configuration
In the [hipchat]
section of the Kapacitor configuration file set:
enabled
totrue
subdomain
in theurl
setting to the HipChat subdomain
The optional configuration settings are:
room
Set to a HipChat room.
This serves as the default chat id if the TICKscript does not specify a chat id.
token
Set to a HipChat API access token.
This serves as the default token if the TICKscript does not specify an API access token.
global
Set to true
to send all alerts to HipChat without needing to specify HipChat in TICKscripts.
state-changes-only
Set to true
to send only an alert to HipChat if the alert state changes.
This setting only applies if the global
setting is also set to true
.
Sample configuration
[hipchat]
enabled = true
url = "https://my-subdomain.hipchat.com/v2/room"
room = "my-room"
token = "mytokentokentokentoken"
global = false
state-changes-only = false
TICKscript syntax
|alert()
.hipChat()
.room('<HipChat-room>')
.token('<HipChat-API-token>')
The .room()
and .token()
specifications are optional.
If they are not set in the TICKscript, they default to the room
and
token
settings in the [hipchat]
section of the configuration file.
Note that if global
is set to true
in the configuration file, there is no
need to specify .hipChat()
in the TICKscript; Kapacitor sends all alerts to HipChat
by default.
.room('<HipChat-room>')
Sets the HipChat room.
.token('<HipChat-API-token>')
Sets the HipChat API access token.
Examples
Example 1: Send alerts to the HipChat room set in the configuration file
Configuration file:
[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()
The setup sends Hey, check your CPU
to the my-alerts
room associated with
the testest
subdomain.
Example 2: Send alerts to the HipChat room set in the TICKscript
Configuration file:
[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')
The setup sends Hey, check your CPU
to the random
room associated with
the testest
subdomain.
Notice that .room()
in the TICKscript overrides the room
setting in the
configuration file.
Telegram setup
Telegram is a messaging app. Configure Kapacitor to send alert messages to a Telegram bot.
Requirements
To configure Kapacitor with Telegram, the following will be needed:
- a Telegram bot
- a Telegram API access token
- a Telegram chat id
Telegram bot
The following steps describe how to create a new Telegram bot. > **1.** Search for the `@BotFather` username in your Telegram application > **2.** Click `Start` to begin a conversation with `@BotFather` > **3.** Send `/newbot` to `@BotFather` > `@BotFather` responds: > Alright, a new bot. How are we going to call it? Please choose a name for your bot. > `@BotFather` will prompt you through the rest of the bot-creation process; feel free to follow his directions or continue with our version of the steps below. Both setups result in success! > **4.** Send your bot's name to `@BotFather` > Your bot's name can be anything. Note that this is not your bot's Telegram `@username`; you'll create the username in step 5. > `@BotFather` responds: > Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot. > **5.** Send your bot's username to `@BotFather` > Your bot's username must end in `bot`. For example: `mushroomKap_bot`. > `BotFather` responds: > Done! Congratulations on your new bot. You will find it at t.me/
The following section describes how to identify or create the API access token. > Telegram's `@BotFather` bot sent you an API access token when you created your bot. See the `@BotFather` response in step 5 of the previous section for where to find your token. > If you can't find the API access token, create a new token with the steps below. > **1.** Send `/token` to `@BotFather` > **2.** Select the relevant bot at the bottom of your Telegram application > `@BotFather` responds with a new API access token: > You can use this token to access HTTP API:
The following steps describe how to identify your chat ID. > **1.** Paste the following link in your browser > Replace `
Configuration
In the [telegram]
section of the Kapacitor configuration file set:
enabled
totrue
token
to an API access token
The default url
setting (https://api.telegram.org/bot
) requires no additional configuration.
The optional configuration settings are:
chat_id
Set to a Telegram chat id. This serves as the default chat id if the TICKscript does not specify a chat id.
parse-mode
Set to Markdown
or HTML
for markdown-formatted or HTML-formatted alert messages. The default parse-mode
is Markdown
.
disable-web-page-preview
Set to true
to disable link previews in alert messages.
disable-notification
.
Set to true
to disable notifications on iOS devices and disable sounds on Android devices. When set to true
, Android users continue to receive notifications.
global
Set to true
to send all alerts to Telegram without needing to specify Telegram in TICKscripts.
state-changes-only
Set to true
to only send an alert to Telegram if the alert state changes. This setting only applies if the global
setting is also set to true
.
Sample configuration
[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 syntax
|alert()
.telegram()
.chatId('<chat_id>')
.disableNotification()
.disableWebPagePreview()
.parseMode(['Markdown' | 'HTML'])
The .chatId()
, .disableNotification()
, .disableWebPagePreview()
, and .parseMode()
specifications are optional.
If they are not set in the TICKscript, they default to the chat-id
, disable-notification
, disable-web-page-preview
, and parse-mode
settings in the [telegram]
section of the configuration file.
Note that if global
is set to true
in the configuration file, there is no need to specify .telegram()
in the TICKscript; Kapacitor sends all alerts to Telegram by default.
.chatId('<chat_id>')
Sets the Telegram chat id.
.disableNotification()
Disables notifications on iOS devices and disables sounds on Android devices. Android users continue to receive notifications.
.disableWebPagePreview()
Disables link previews in alert messages.
.parseMode(['Markdown' | 'HTML'])
Sets Markdown
or HTML
as the format for alert messages.
Examples
Example 1: Send alerts to the Telegram chat id set in the configuration file
Configuration file:
[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()
The setup sends Might want to check your CPU
to the Telegram bot associated with the chat id 123456789
and API access token abcdefghi:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
.
Example 2: Send alerts to the Telegram chat ID set in the TICKscript
Configuration file:
[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')
The setup sends Might want to check your CPU
to the Telegram bot associated with the chat id 123456789
and API access token abcdefghi:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
.
Was this page helpful?
Thank you for your feedback!
Support and feedback
Thank you for being part of our community! We welcome and encourage your feedback and bug reports for Kapacitor and this documentation. To find support, use the following resources: