Instantly share code, notes, and snippets.

Embed
What would you like to do?
Zabbix alerts via Telegram

Zabbix alerts via Telegram

Replace my_zabbix_bot and My Zabbix Bot below with your own names.

Create and test telegram bot

Add @BotFather contact in Telegram and press 'start',
then type:

/newbot
My Zabbix Bot
my_zabbix_bot

The bot will reply you with a token, which we will refer to as ${TOKEN} below.

Add a @my_zabbix_bot contact to your Telegram, press 'start' and send a random message.

Now we need to retrieve a chat_id for this conversation.

$ curl "https://api.telegram.org/bot${TOKEN}/getUpdates"
{"ok":true,"result":[{"update_id":...,"message":{"message_id":...,"from":{...},"chat":{"id":<CHAT_ID>,...},"date":...,"text":...}}]}

The <CHAT_ID> above is what you need. It's the RESULT.result[0].message.chat.id key in JSON notation.

Test that it actually works:

$ curl -X POST --retry 5 --retry-delay 0 --retry-max-time 60 --data-urlencode "chat_id=${CHAT_ID}" --data-urlencode "text=Hello" "https://api.telegram.org/bot${TOKEN}/sendMessage?disable_web_page_preview=true"

Install zabbix media type

Find out your AlertScriptsPath from the zabbix_server.conf. It's ${datadir}/zabbix/alertscripts by default.

Put the telegram.sh file (attached) to that folder. Don't forget to chmod +x telegram.sh

Open your Zabbix web interface, navigate to 'Administration - Media types - Create',
Put in the form:

  • Name: Telegram
  • Type: Script
  • Script name: telegram.sh
  • Script parameters (Zabbix 3 only):
    • {ALERT.SENDTO}
    • {ALERT.SUBJECT}
    • {ALERT.MESSAGE}

Action

Ensure that you have an action (Configuration - Actions) which sends to the Telegram media type.

User

Navigate to 'Administration - Users - <Your user> - Media', add Telegram, in the 'Send to' field put your ${CHAT_ID} and ${TOKEN}, separated with space, for example: 12345678 123456789:AAaaaaAAAaaa_aAAaaAaA-aaAAa.

Refs:

#!/bin/sh
CHAT_ID=`echo "$1" | cut -d " " -f 1`
TOKEN=`echo "$1" | cut -d " " -f 2`
SUBJECT="$2"
MESSAGE="$3"
NL="
"
curl --silent -X POST --retry 5 --retry-delay 0 --retry-max-time 60 --data-urlencode "chat_id=${CHAT_ID}" --data-urlencode "text=Subject: ${SUBJECT}${NL}${NL}${MESSAGE}" "https://api.telegram.org/bot${TOKEN}/sendMessage?disable_web_page_preview=true" | grep -q '"ok":true'
@gitTerrence

This comment has been minimized.

gitTerrence commented Jun 7, 2018

Hi KostyaEsmukov expert,
Need your help, saw your post here to integrate telegram in Zabbix. But i have no idea how to do it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment