--- Alias: ["Monit 2 Telegram"] Tag: [""] Date: 2022-03-10 DocType: Hierarchy: TimeStamp: location: Source: https://github.com/matriphe/monit2telegram CollapseMetaTable: Yes --- Parent:: [[Selfhosting]], [[VPS Console Dialogue|VPS command-line]], [[Configuring Monit|monit]] ---   ```button name Save type command action Save current file id Save ``` ^button-GitHubmatriphemonit2telegramAsimplescriptNSave   # GitHub - matriphemonit2telegram A simple script to send Monit alerts using Telegram bot.   ```ad-abstract title: Summary collapse: open Note Description ```   ```toc style: number ```   ---   A simple script to send Monit alerts using Telegram bot. By default, Monit only sends alert notifications via email. But we can also set [a hook to execute a script](https://mmonit.com/monit/documentation/monit.html#action). When executing the script, Monit sets a few environment variables about the alert. This tiny script transforms those variables into a text message and pipes them to Telegram using a bash script for delivery. This script is inspired by [Monit2Twilio](https://github.com/alexdunae/monit2twilio).   ---   ## Requirements - Bash - CURL - [jq](https://stedolan.github.io/jq/) - [[Configuring Telegram bots|Telegram bot]] - [[Configuring Monit|monit]]   ---   ## Create Telegram Bot If you don't have a Telegram Bot, just [create one](https://core.telegram.org/bots#create-a-new-bot). By using a Telegram bot you don’t have to use a real Telegram client or reuse your Telegram account.   ### Getting Bot Token You will get a **Telegram Bot Token** after bot created. Keep this token, we will use it later. The bot token is looked like this. 123456789:aBcDeFgHiJkLmN-OpQrStUvWXyZ12345678   ### Getting Chat ID To send messages to a Telegram chat, you must first needs to start a chat with the bot. Clicking on the bot link after creation should be enough, it will automatically send a message of `/start` to the bot. To get the **Chat ID** from Telegram bot, execute this command using [getUpdates](https://core.telegram.org/bots/api#getupdates) function of Telegram API. ```ad-command title: Get Chat ID ~~~bash curl --silent "https://api.telegram.org/bot{TOKEN}/getUpdates" | jq ~~~ ```   ```ad-code title: Output ~~~javascript { "ok": true, "result": [ { "update_id": 17082016, "message": { "message_id": 17, "from": { "id": 22031984, "first_name": "User" }, "chat": { "id": 22031984, "first_name": "User", "type": "private" }, "date": 1471402800, "text": "Hello from the other side~" } } ] } ~~~ ``` In this example the **Chat ID** to look out for is **22031984**. Replace `{TOKEN}` with your Telegram bot token.   ---   ## Usage Clone this repo or download the zipped file. ```ad-command ~~~bash git clone https://github.com/matriphe/monit2telegram.git cd monit2telegram ~~~ ``` Put your Telegram Bot ID and Chat ID in `telegramrc` and save it to the `/etc` directory (`/etc/telegramrc`). ```ad-command ~~~bash cp telegramrc /etc/telegramrc ~~~ ``` Put `sendtelegram.sh` and `monit2telegram.sh` to `/usr/local/bin` and make them executable. ```ad-command ~~~bash cp sendtelegram.sh /usr/local/bin/sendtelegram chmod +x /usr/local/bin/sendtelegram cp monit2telegram.sh /usr/local/bin/monit2telegram chmod +x /usr/local/bin/monit2telegram ~~~ ``` Test the `sendtelegram` script by running this command. ```ad-command ~~~bash sendtelegram -c /etc/telegramrc -m "Hello from the other side!" ~~~ ```   ```ad-command title: output ~~~bash Sending message 'Hello from the other side!' to 22031984 Done! ~~~ ``` You should see Telegram message sent by your Telegram bot.   ---   ## Set Up Monit Now you can add Monit alert by adding this line to Monit configuration file. ```ad-code title: monitrc ~~~bash check file nginx.pid with path /var/run/nginx.pid if changed pid then exec "/usr/local/bin/monit2telegram" ~~~ ```