https://github.com/diegosmaia/zabbix-telegram
Se descarga el script en el directorio AlertScriptsPath directory.
se le da permisos de ejecución
chmod +x zabbix-telegram.sh
En el script hay que modificarlo para añadir los parámetros correspondientes a nuestra configuración. En mi caso particular he modificado el script que te descargas desde la página de https://github.com/diegosmaia/zabbix-telegram y he modificado alguna de las llamadas a curl añadiendo la opción –noproxy '*' para evitar errores de ejecución ya que mi servidor utiliza un proxy para salir a internet.
Para hacer una prueba ejecutamos el siguiente comando desde la consola situandonos en el directorio donde está localizado el script
./zabbix-telegram.sh -123456789 "prueba 12:43" "Item Graphic: [37502]". Al ejecutarlo debería de llegarnos varios mensajes y un gráfico
Creamos un nuevo Media Types zabbix→Administration→Media types→Create Media type.
En la casilla de Script Parameters pinchamos en Add y añadimos los siguientes parámetros
En la casilla de Event Source seleccionamos Triggers y pulsamos sobre el botón Create action o bien modificamos una de las acciones existentes.
En nuestro caso creamos una nueva acción con los siguientes datos
Trigger:{TRIGGER.NAME}
Trigger status:{TRIGGER.STATUS}
Trigger severity:{TRIGGER.SEVERITY}
Trigger URL:{TRIGGER.URL}
Item values:
1.{ITEM.NAME1}({HOST.NAME1}:{ITEM.KEY1}):{ITEM.VALUE1}
Item Graphic:[{ITEM.ID1}]
#!/bin/bash
##########################################################################
# Zabbix-Telegram envio de alerta por Telegram com graficos dos eventos
# Filename: zabbix-telegram.sh
# Revision: 2.1
# Date: 24/04/2016
# Author: Diego Maia - diegosmaia@yahoo.com.br Telegram - @diegosmaia
# Aproveitei algumas coisas:
# Script getItemGraph.sh Author: Qicheng
# https://github.com/GabrielRF/Zabbix-Telegram-Notification @GabrielRF
# Obs.: Se añade la opción de usar el script en caso de estar detras de un proxy (wiki.intrusos.info)
##########################################################################
MAIN_DIRECTORY="/usr/lib/zabbix/alertscripts/"
USER=$1
SUBJECT=$2
SUBJECT="${SUBJECT//,/ }"
MESSAGE="chat_id=${USER}&text=$3"
GRAPHID=$3
GRAPHID=$(echo $GRAPHID | grep -o -E "(Item Graphic: \[[0-9]{7}\])|(Item Graphic: \[[0-9]{6}\])|(Item Graphic: \[[0-9]{5}\])|(Item Graphic: \[[0-9]{4}\])|(Item Graphic: \[[0-9]{3}\])")
GRAPHID=$(echo $GRAPHID | grep -o -E "([0-9]{7})|([0-9]{6})|([0-9]{5})|([0-9]{4})|([0-9]{3})")
ZABBIXMSG="/tmp/zabbix-message-$(date "+%Y.%m.%d-%H.%M.%S").tmp"
#############################################
# URL donde esta el Zabbix (modificar)
#############################################
ZBX_URL="http://192.168.0.102/zabbix"
##############################################
# Usuario y clave para logearse en el Zabbix (modificar)
##############################################
USERNAME="admin"
PASSWORD="zabbix"
############################################
# Bot-Token de ejemplo (modificar)
############################################
BOT_TOKEN='161080402:AAGah3HIxM9jUr0NX1WmEKX3cJCv9PyWD58'
#############################################
# Si enviar o no GRAFICOS / ENVIA_GRAFICO = 0
# Si enviar o no MESAJES / ENVIA_MESSAGE = 0
#############################################
ENVIA_GRAFICO=1
ENVIA_MESSAGE=1
# Se não receber o valor de GRAPHID ele seta o valor de ENVIA_GRAFICO para 0
case $GRAPHID in
''|*[!0-9]*) ENVIA_GRAFICO=0 ;;
*) ENVIA_GRAFICO=1 ;;
esac
##############################################
# Graficos
##############################################
WIDTH=800
CURL="/usr/bin/curl"
COOKIE="/tmp/telegram_cookie-$(date "+%Y.%m.%d-%H.%M.%S")"
PNG_PATH="/tmp/telegram_graph-$(date "+%Y.%m.%d-%H.%M.%S").png"
############################################
# Periodo do grafico em minutos Exp: 10800min/3600min=3h
############################################
PERIOD=10800
###########################################
# Verifica se foi passado os 3 parametros
# para o script
###########################################
if [ "$#" -lt 3 ]
then
exit 1
fi
############################################
# Envio Mensaje de Alerta usando proxy
############################################
echo "$MESSAGE" > $ZABBIXMSG
${CURL} -x http://ipproxy:puerto -k -s -c ${COOKIE} -b ${COOKIE} -s -X GET "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage?chat_id=${USER}&text=\"${SUBJECT}\"" > /dev/null
if [ "$ENVIA_MESSAGE" -eq 1 ]
then
${CURL} -x http://ipproxy:puerto -k -s -c ${COOKIE} -b ${COOKIE} --data-binary @${ZABBIXMSG} -X GET "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" > /dev/null
fi
############################################
# Envio dos graficos
############################################
# Se ENVIA_GRAFICO=1 ele envia o gráfico.
if [ $(($ENVIA_GRAFICO)) -eq '1' ]; then
############################################
# Zabbix logando com o usuário no site
############################################
# Zabbix - Ingles - Verifique no seu Zabbix se na tela de login se o botao de login é "Sign in".
# Obs.: Caso queira mudar, abra a configuração do usuário Guest e mude a linguagem para Portugues, se fizer isso comente (#) a linha abaixo e descomente a linha Zabbix-Portugues.
${CURL} --noproxy '*' -k -s -c ${COOKIE} -b ${COOKIE} -d "name=${USERNAME}&password=${PASSWORD}&autologin=1&enter=Sign%20in" ${ZBX_URL}"/index.php" > /dev/null
# Zabbix - Portugues - Verifique no seu Zabbix se na tela de login se o botao de login é "Conectar-se".
# ${CURL} -k -s -c ${COOKIE} -b ${COOKIE} -d "name=${USERNAME}&password=${PASSWORD}&autologin=1&enter=Conectar-se" ${ZBX_URL}"/index.php" > /dev/null
# Download do gráfico e envio
${CURL} --noproxy '*' -k -s -c ${COOKIE} -b ${COOKIE} -d "itemids=${GRAPHID}&period=${PERIOD}&width=${WIDTH}" ${ZBX_URL}"/chart.php" -o "${PNG_PATH}"
${CURL} -x http://ipproxy:puerto -k -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendPhoto" -F chat_id="${USER}" -F photo="@${PNG_PATH}" > /dev/null
fi
############################################
# DEBUG
############################################
# Verificar valores recebidos do Zabbix ou do prompt
# cat /tmp/telegram-debug.txt
# echo "User-Telegram=$USER | Subject=$SUBJECT | Menssage=$MESSAGE | GraphID=${GRAPHID} | Period=${PERIOD} | Width=${WIDTH}" >/tmp/telegram-debug.txt
# Teste com curl tentando baixar o gráfico
# Verifique o arquivo /tmp/telegram-graph.png no seu computador para ver se o grafico esta sendo gerado corretamente
#${CURL} --noproxy '*' -k -c ${COOKIE} -b ${COOKIE} -d "graphid=51179&itemids=51179&period=10800&width=800" 172.19.3.202/zabbix/chart.php > /tmp/telegram-graph2.png
#Verificando o envio da msg
# Envio da msg de texto
# Gera uma saída no script com algo parecido com isso {"ok":true,"result":{"message_id":xxx,"from":{"id":xxxx,"first_name":"xxx","username":"xxxx"},"chat":{"id":xxxxx,"first_name":"xxx","last_name":"xxx","username":"xxxxx","type":"private"},"date":xxxx,"text":"teste"}}
# Se gerar uma saida diferente verifique o seu BOT_TOKEN ou então o UserID ou Group-ID para qual a msg esta sendo enviada
# ${CURL} -k -c ${COOKIE} -b ${COOKIE} -X GET "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage?chat_id=${USER}&text=${SUBJECT}"
# Envio do Grafico
#${CURL} -k -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendPhoto" -F chat_id="${USER}" -F photo="@${PNG_PATH}"
############################################
# Apagando os arquivos utilizados no script
############################################
rm -f ${COOKIE}
rm -f ${PNG_PATH}
rm -f ${ZABBIXMSG}
exit 0
Utilizando el siguiente script podemos enviar mensajes directamente con curl
#!/bin/bash TOKEN=tutoken CHAT_ID=id del chat MESSAGE="Hola Mundo" URL="https://api.telegram.org/bot$TOKEN/sendMessage" curl -s -X POST $URL -d chat_id=$CHAT_ID -d text="$MESSAGE"
https://github.com/ableev/Zabbix-in-Telegram
Instalamos en el servidor python
yum install python yum install python-pip
Instalamos el módulo request necesario para ejecutar los scripts
pip install requests
y otro para los grupos