Diferencias

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

Enlace a la vista de comparación

Próxima revisión
Revisión previa
integracion_de_telegram_en_alertas_de_zabbix [2016/05/12 15:50]
10.12.12.129 creado
integracion_de_telegram_en_alertas_de_zabbix [2017/03/28 13:06] (actual)
10.12.12.129
Línea 3: Línea 3:
 Recursos en: Recursos en:
 [[https://​github.com/​GabrielRF/​Zabbix-Telegram-Notification#​userid]] [[https://​github.com/​GabrielRF/​Zabbix-Telegram-Notification#​userid]]
 +
 [[https://​medium.com/​chatfuel-blog/​how-to-create-an-automated-bot-on-telegram-without-coding-using-zapier-and-paquebot-5a635a3b867b#​.iw2d2zz47]] [[https://​medium.com/​chatfuel-blog/​how-to-create-an-automated-bot-on-telegram-without-coding-using-zapier-and-paquebot-5a635a3b867b#​.iw2d2zz47]]
 +
 +
 +===== Crear Bot de Telegram =====
 +
  
 Lo primero que necesitamos es crear un bot de Telegram si aún no lo tenemos. Lo primero que necesitamos es crear un bot de Telegram si aún no lo tenemos.
Línea 21: Línea 26:
   /newbot   /newbot
   ​   ​
 +BotFather nos preguntará por el nombre y un subnombreque queremos darle al bot.
 +Éste tiene que acabar con la palabra bot. En nuestro caso hemos elegido zabbixmerkatu_bot
 +
 + ​zabbixmerkatu_bot
 +  ​
 +Cuando registre el nuevo bot, nos devolverá el token que utilizaremos para añadirlo a nuestro script de python que haremos en el servidor más tarde. (ejemplo el token que nos han dado para zabbixmerkatu_bot):​
 +
 +  Use this token to access the HTTP API: 348816857:​AAFnvD017g6PhfbIkHkaNbSi1bCjstXTEFo
 +  ​
 +Podemos salir de la conversación con GodFather, ya tenemos el token.
 +
 +Otros comandos de BotFather:
 +
 +  /newbot – Create a new bot.
 +  /token – Generate authorization token.
 +  /revoke – Revoke bot access token.
 +  /setname – Change a bot’s name.
 +  /​setdescription – Change bot description.
 +  /​setabouttext – Change bot about info.
 +  /setuserpic – Change bot profile photo.
 +  /​setcommands – Change bot commands list.
 +  /​setjoingroups – Can your bot be added to groups?
 +  /setprivacy – What messages does your bot see in groups?
 +  /deletebot – Delete a bot.
 +  /cancel – Cancel the current operation.
 +
 +**IMPORTANTE:​ Hay que añadir al bot al grupo de chat y enviarle un mensaje**
 +===== Configurar Zabbix Server =====
 +
 +Primero debemos saber la version de python que tenemos instalada en el servidor y donde
 +
 +  whereis python
 +
 +En nuestro caso, tenemos la v3.4 en el directorio /​usr/​bin/​python3.4
 +
 +Instalamos la herramienta python pip:
 +
 +  apt-get install python-pip
 +  ​
 +Instalamos la API de Telegram:
 +
 +  pip install pyTelegramBotAPI
 +  ​
 +***En caso de que no funcione pip, bajar del repositorio git:
 +
 +  cd /usr/src
 +  git clone --recursive https://​github.com/​eternnoir/​pyTelegramBotAPI.git
 +  cd pyTelegramBotAPI
 +  python3.4 setup.py install
 +  ​
 +===== Configuración Script =====
 +
 +Revisamos la configuración de Zabbix para saber cual es el path de los alertscripts. Si es necesario, lo cambiamos por la ruta donde dejemos el script:
 +
 +  vim /​etc/​zabbix/​zabbix-server.conf
 +  ​
 +Supongamos que tenemos definida la ruta: /​var/​lib/​zabbix.
 +
 +En esta carpeta creamos el fichero por ejemplo que se llame telegram-bot.py
 +
 +  vim telegram-bot.py
 +  ​
 +Pegamos el siguiente contenido, cambiando nuestro token:
 +
 +  #​!/​usr/​bin/​python3.4 ​ #Le indicamos donde se encuentra el interprete de python
 +  import telebot,sys
 +  BOT_TOKEN='​348816857:​AAFnvD017g6PhfbIkHkaNbSi1bCjstXTEFo' ​ #cambiamos por el nuestro
 +  DESTINATION=sys.argv[1] ​ #Este argumento lo programamos en el front como {ALERT.SENDTO}
 +  SUBJECT=sys.argv[2] ​  #Este argumento lo programamos en el front como {ALERT.SUBJECT}
 +  MESSAGE=sys.argv[3] ​  #Este argumento lo programamos en el front como {ALERT.MESSAGE}
 +  MESSAGE = MESSAGE.replace('/​n','​\n'​)
 +  tb = telebot.TeleBot(BOT_TOKEN)
 +  tb.send_message(DESTINATION,​SUBJECT + '​\n'​ + MESSAGE)
 +  ​
 +Le damos permisos de ejecución y cambiamos de propietario para que lo ejecute el usuario zabbix
 +
 +  chmod +x telegram-bot.py
 +  chown zabbix:​zabbix telegram-bot.py
 +  ​
 +Listo
 +
 +===== Configuración en el Front =====
 +
 +Accedemos a la GUI del server: ​
 +
 +[[http://​zabbix.merkatu.info:​8888/​zabbix]]
 +
 +Vamos a la pestaña de Administración >> Media Types >> Create Media-type
 +
 +Name -> Le damos un nombre descriptivo
 +
 +Type -> Le decimos que sea un script
 +
 +Script name -> Le indicamos exactamente el nombre que hemos puesto al script (telegram-bot.py)
 +
 +Añadimos los siguientes parámetros:​
 +{ALERT.SENDTO}
 +{ALERT.SUBJECT}
 +{ALERT.MESSAGE}
 +
 +Marcamos la casilla de enable, damos en update y salimos.
 +
 +
 +Ahora nos vamos a Users >> Admin >> Media >> Add
 +
 +Type -> Desplegamos y seleccionamos nuestro script
 +
 +Sendto -> El id de nuestro grupo en telegram (-139912990)
 +
 +When enable -> Programacion de alertas
 +
 +Use it severity -> Que tipo de alertas queremos que lleguen al chat
 +
 +Marcamos casilla enable y le damos a update.
 +
 +
 +===== Para conocer los ids de los grupos y usuarios de telegram =====
 +
 +==== UserID ====
 +
 +
 +If you want to get a user id, send a message from this user to the bot. Reload the page and the user id will be shown.
 +
 +Example:
 +
 +  "​message":​{"​message_id":​59,"​from":​{"​id":​9083329,"​first_name":"​Gabriel","​last_name":"​R F","​username":"​GabrielRF"​},"​chat":​{"​id":​9083329,"​first_name":"​Gabriel","​last_name":"​R F","​username":"​GabrielRF","​type":"​private"​},"​date":​1446911853,"​text":"​\/​start"​}}]}
 +
 +In this case, the user id is 9083329. So, on the step Users, the field Send to would be 9083329.
 +
 +==== GroupID ====
 +
 +If you prefer to have your bot working on a group, then create the group and add the bot to it. Reload the page and you will see a message like:
 +
 +  "​message":​{"​message_id":​60,"​from":​{"​id":​9083329,"​first_name":"​Gabriel","​last_name":"​R F","​username":"​GabrielRF"​},"​chat":​{"​id":​-57169325,"​title":"​q31231","​type":"​group"​},"​date":​1446912067,"​group_chat_created":​true}},​{"​update_id":​727527785,​
 +In this case, the group id is -57169325. So, on the step Users, the field Send to would be -57169325.
  
 +Note that a group id is always negative. Only user's id are positive.