|
|
||
|---|---|---|
| templates | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| .pydocstyle | ||
| config.example.json | ||
| config.schema.json | ||
| Dockerfile | ||
| LICENSE | ||
| nagios.cfg | ||
| notify-by-telegram.py | ||
| README.md | ||
| requirements.txt | ||
notify-by-telegram
Send Nagios notifications to a Telegram Messenger channel.
Telegram bot
This tutorial 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. Some commands might slightly change depending on your distribution.
Clone the repository:
git clone https://git.riou.xyz/jriou/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 Telegramauth_key: key used to authenticate on Telegramhost_template(optional): path to Markdown template file used for sending host notificationsservice_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 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 directory.
They can be overriden in the configuration file:
{
"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