Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sensu-plugins/sensu-plugins-telegram
Telegram handler for sensu
https://github.com/sensu-plugins/sensu-plugins-telegram
sensu sensu-handler sensu-plugins telegram
Last synced: about 2 months ago
JSON representation
Telegram handler for sensu
- Host: GitHub
- URL: https://github.com/sensu-plugins/sensu-plugins-telegram
- Owner: sensu-plugins
- License: mit
- Created: 2016-03-18T12:32:30.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2021-04-28T21:40:17.000Z (over 3 years ago)
- Last Synced: 2024-11-18T02:32:46.245Z (about 2 months ago)
- Topics: sensu, sensu-handler, sensu-plugins, telegram
- Language: Ruby
- Homepage: http://sensu-plugins.io
- Size: 43 KB
- Stars: 6
- Watchers: 12
- Forks: 4
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
## Sensu-Plugins-telegram
[![Build Status](https://travis-ci.org/sensu-plugins/sensu-plugins-telegram.svg?branch=master)](https://travis-ci.org/sensu-plugins/sensu-plugins-telegram)
[![Gem Version](https://badge.fury.io/rb/sensu-plugins-telegram.svg)](http://badge.fury.io/rb/sensu-plugins-telegram)## Functionality
This plugin provides a handler to send notifications to a Telegram chat.
## Files
* bin/handler-telegram.rb## Usage
After installation, you have to set up a `pipe` type handler, like so:
```json
{
"handlers": {
"telegram": {
"type": "pipe",
"command": "handler-telegram.rb",
"filter": "occurrences"
}
}
}
```> Note: You need the `filter` key in there if you use the `occurrences` and/or the `refresh`
attributes in your [check definitions](https://docs.sensu.io/sensu-core/1.6/reference/checks/).This gem also expects a JSON configuration file with the following contents:
```json
{
"telegram": {
"bot_token": "YOUR_BOT_TOKEN",
"chat_id": -123123,
"error_file_location": "/tmp/telegram_handler_error"
}
}
```### Parameters:
- `bot_token`: your bot's token, as provided by
[@BotFather](https://telegram.me/botfather).
- `chat_id`: the chat to which the error message is to be sent.
The bot must be a member of this channel or group.
You can get the `chat_id` by adding the bot to the corresponding group,
sending a message like `/fakecmd @your-bot-username`, and then accessing
`https://api.telegram.org/bot/getUpdates`.
- `error_file_location` (optional): in case there is a failure sending the
message to Telegram (ie. connectivity issues), the exception mesage will
be written to a file in this location. You can then monitor this
location to detect any errors with the Telegram handler.
- `message_template` (optional): An ERB template to use to format messages
instead of the default. Supports the following variables:
- `action_name`
- `action_icon`
- `client_name`
- `check_name`
- `status`
- `status_icon`
- `output`
- `message_template_file` (optional): A file to read an ERB template from to
format messages. Supports the same variables as `message_template`.### Check configuration
You can then set up your checks to use the handler like this:
```
{
"checks": {
"sensu-website": {
"command": "check-http.rb -u https://sensuapp.org",
"subscribers": ["production"],
"interval": 60,
"handler": "telegram"
}
}
}
```For more information about configuring checks, see the
[Sensu documentation](https://docs.sensu.io/sensu-core/1.6/reference/checks).### Advanced configuration
By default, the handler assumes that the config parameters are specified in the
`telegram` top-level key of the JSON, as shown above. You also have the option
to make the handler fetch the config from a different key. To do this, pass the
`-j` option to the handler with the name of the desired key You can define
multiple handlers, and each handler can send notifications to a different chat
and from a different bot. You could, for example, have critical and non-critical
Telegram groups, and send the notifications to one or the other depending on the
check. For example:```json
{
"handlers": {
"critical_telegram": {
"type": "pipe",
"command": "handler-telegram.rb -j critical_telegram_options"
},
"non_critical_telegram": {
"type": "pipe",
"command": "handler-telegram.rb -j non_critical_telegram_options"
}
}
}
```This example will fetch the options from a JSON like this:
```json
{
"telegram": {
"bot_token": "YOUR_BOT_TOKEN"
},
"critical_telegram_options": {
"chat_id": -123123
},
"non_critical_telegram_options": {
"chat_id": -456456
}
}
```As you can see, you can specify the default config in the `telegram` key, and
the rest of the config in their own custom keys.You can also directly add the configuration parameters to the event data using a
mutator. For example:```ruby
#!/usr/bin/env ruby
require 'rubygems'
require 'json'
event = JSON.parse(STDIN.read, :symbolize_names => true)
event.merge!(chat_id: -456456)
puts JSON.dump(event)
```### Configuration precedence
The handler will load the config as follows (from least to most priority):
* Default `telegram` key
* Custom config keys
* Event data## Installation
[Installation and Setup](http://sensu-plugins.io/docs/installation_instructions.html)
## Notes