meta data de esta página
  •  

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
seguridad:monitorizacion:zabbix3:telegram [2016/11/03 12:20] – [Con un script bash] lcseguridad:monitorizacion:zabbix3:telegram [2023/01/18 14:46] (actual) – editor externo 127.0.0.1
Línea 17: Línea 17:
 para obtener el id usuario y el id grupo. El token te llega en un mensaje de telegram para obtener el id usuario y el id grupo. El token te llega en un mensaje de telegram
 </note> </note>
 +<note warning>Ojo el bot tiene su propio id, que es distinto del id para el grupo</note>
 +
 +
 +
  
 Para hacer una prueba ejecutamos el siguiente comando desde la consola situandonos en el directorio donde está localizado el script Para hacer una prueba ejecutamos el siguiente comando desde la consola situandonos en el directorio donde está localizado el script
 <sxh>./zabbix-telegram.sh -123456789 "prueba 12:43"  "Item Graphic: [37502]" </sxh> . Al ejecutarlo debería de llegarnos varios mensajes y un gráfico <sxh>./zabbix-telegram.sh -123456789 "prueba 12:43"  "Item Graphic: [37502]" </sxh> . Al ejecutarlo debería de llegarnos varios mensajes y un gráfico
 <note>-123456789 hay que cambiarlo por nuestro id de grupo que debemos obtener anteriormente</note> <note>-123456789 hay que cambiarlo por nuestro id de grupo que debemos obtener anteriormente</note>
-Configuramos  el zabbix para que envie las alarmas + 
-  Añadimos en zabbix->Administration->Media types->Create Media type. +==== Configuración del zabbix para que envie las alarmas ==== 
 +Creamos un nuevo **Media Types **   zabbix->Administration->Media types->Create Media type.  
 + 
 +  * Como nombre ponemos telegram, tipo script, y en Script name ponemos el nombre de nuestro script **zabbix-telegram.sh** y marcamos la casilla **Enabled**. 
 +En la casilla de Script Parameters pinchamos en **Add**  y añadimos los siguientes parámetros 
 + 
 +{{ :seguridad:monitorizacion:zabbix3:parametrostelegram.png?nolink&600 |}}
  
   *  Ahora vamos a zabbix->Administration->User. Elegimos el usuario con el que enviamos las alarmas y pinchamos sobre el menú **Media**  y después en **add** para añadir los parámetros de configuración   *  Ahora vamos a zabbix->Administration->User. Elegimos el usuario con el que enviamos las alarmas y pinchamos sobre el menú **Media**  y después en **add** para añadir los parámetros de configuración
-{{ :seguridad:monitorizacion:zabbix3:zabbix-telegram1.png?600 |}} +{{ :seguridad:monitorizacion:zabbix3:telegramuser.png?nolink&600 |}} 
-  * Por último vamos al menú zabbix->Configuration->Actions y pulsamos sobre el botón **Create action** o modificamos una de las acciones existentes. En nuestro caso creamos una nueva acción con los siguientes datos+ 
 +  * Por último vamos al menú zabbix->Configuration->Actions   
 + 
 +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
     -  Name -> Enviar alarmas por telegram     -  Name -> Enviar alarmas por telegram
     - Default subject -> {HOSTNAME}:{TRIGGER.NAME}-Status-{TRIGGER.STATUS}     - Default subject -> {HOSTNAME}:{TRIGGER.NAME}-Status-{TRIGGER.STATUS}
Línea 45: Línea 60:
  {{ :seguridad:monitorizacion:zabbix3:zabbix-telegram2.png?direct&600 |}}  {{ :seguridad:monitorizacion:zabbix3:zabbix-telegram2.png?direct&600 |}}
 <note>para saber si las alarmas se están enviado correctamente ir a:  Zabbix->Reports->Action log</note> <note>para saber si las alarmas se están enviado correctamente ir a:  Zabbix->Reports->Action log</note>
 +
 +==== Script Modificado para usar proxy ====
 +<sxh bash>
 +#!/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
 +</sxh>
 +==== Mediante curl ====
 +Utilizando el siguiente script podemos enviar mensajes directamente con curl
 +<sxh>
 +#!/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"
 +</sxh>
 +
 ==== Con un script en python === ==== Con un script en python ===
 https://github.com/ableev/Zabbix-in-Telegram https://github.com/ableev/Zabbix-in-Telegram
Línea 65: Línea 248:
   y otro para los grupos   y otro para los grupos
  
 +===== Referencias =====
 +  * http://zabbixecuador.blogspot.com.es/2016/05/integrar-telegram-en-zabbix.html
 +  * https://www.zabbix.com/forum/showthread.php?t=45600
 +  * [[https://github.com/ableev/Zabbix-in-Telegram|Zabbix Notifications with graphs in Telegram]]