121 lines
3.2 KiB
Markdown
121 lines
3.2 KiB
Markdown
# notify-by-telegram
|
|
Send Nagios notifications to a [Telegram Messenger](https://telegram.org/) channel.
|
|
|
|
|
|
## Telegram bot
|
|
|
|
This [tutorial](https://takersplace.de/2019/12/19/telegram-notifications-with-nagios/) explains how to create a Telegram bot. You'll need the `chat_id` and `auth_key` for the next section.
|
|
|
|
## Installation
|
|
|
|
_This guide has been written for [Debian](https://www.debian.org/). Some commands might slightly change depending on your distribution._
|
|
|
|
Clone the repository:
|
|
```
|
|
git clone https://github.com/jouir/notify-by-telegram.git /opt/notify-by-telegram
|
|
```
|
|
|
|
Install dependencies using pip:
|
|
```
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
Or via the package manager:
|
|
```
|
|
sudo apt install python3-jinja2 python3-requests python3-jsonschema
|
|
```
|
|
|
|
## Configuration
|
|
|
|
Copy and update the configuration file example:
|
|
```
|
|
cp -p config.example.json telegram.json
|
|
vim telegram.json
|
|
sudo mv telegram.json /etc/nagios4/telegram.json
|
|
sudo chown root:nagios /etc/nagios4/telegram.json
|
|
sudo chmod 640 /etc/nagios4/telegram.json
|
|
```
|
|
|
|
Ensure Nagios reads the configuration file:
|
|
```
|
|
echo "cfg_file=/opt/notify-by-telegram/nagios.cfg" >> /etc/nagios4/nagios.cfg
|
|
```
|
|
|
|
Then reload service:
|
|
```
|
|
systemctl reload nagios4
|
|
```
|
|
|
|
## Configuration file
|
|
|
|
Format used is JSON with the following keys:
|
|
|
|
* `chat_id`: where to send message on Telegram
|
|
* `auth_key`: key used to authenticate on Telegram
|
|
* `host_template` (optional): path to Markdown template file used for sending host notifications
|
|
* `service_template` (optional): path to Markdown template file used for sending service notifications
|
|
|
|
## Logging
|
|
|
|
Errors logs can be set with the `--logfile` argument.
|
|
|
|
Example:
|
|
```
|
|
tail -f /var/log/nagios4/telegram.log
|
|
```
|
|
|
|
Log level can be raised using `--verbose` or even more with `--debug` arguments.
|
|
|
|
|
|
## Message format
|
|
|
|
`notify-by-telegram` script uses the `MarkdownV2` format to generate Telegram messages.
|
|
|
|
[Jinja](https://jinja.palletsprojects.com) is used for templating (eg. replace `{{host_name}}` placeholders by the value submitted by Nagios).
|
|
|
|
Default **host** and **service** templates can be found in the [templates](templates) directory.
|
|
|
|
They can be overriden in the configuration file:
|
|
|
|
```json
|
|
{
|
|
"host_template": "/etc/nagios4/host.md.j2",
|
|
"service_template": "/etc/nagios4/service.md.j2"
|
|
}
|
|
```
|
|
|
|
Both options are optional.
|
|
|
|
### Host variables
|
|
|
|
Variables replaced in the host template:
|
|
* `notification_type` (= `$NOTIFICATIONTYPE$`)
|
|
* `host_name` (= `$HOSTNAME$`)
|
|
* `host_state` (= `$HOSTSTATE$`)
|
|
* `host_address` (= `$HOSTADDRESS$`)
|
|
* `host_output` (= `$HOSTOUTPUT$`)
|
|
* `long_date_time` (= `$LONGDATETIME$`)
|
|
|
|
### Service variables
|
|
|
|
Variables replaced in the service template:
|
|
* `notification_type` (= `$NOTIFICATIONTYPE$`)
|
|
* `service_desc` (= `$SERVICEDESC$`)
|
|
* `host_alias` (= `$HOSTALIAS$`)
|
|
* `host_address` (= `$HOSTADDRESS$`)
|
|
* `service_state` (= `$SERVICESTATE$`)
|
|
* `long_date_time` (= `$LONGDATETIME$`)
|
|
* `service_output` (= `$SERVICEOUTPUT$`)
|
|
|
|
## How to contribute
|
|
|
|
Contributions are welcomed! Feel free to update the code and create a pull-request.
|
|
|
|
Be sure to lint the code before:
|
|
```
|
|
docker build -t pre-commit .
|
|
docker run -it -v $(pwd):/mnt/ --rm pre-commit bash
|
|
# cd /mnt/
|
|
# pre-commit run --all-files
|
|
# exit
|
|
```
|