
Invio di avvisi Centreon a Google Home
Se siamo un po' smanettoni e abbiamo a portata di mano un assistente intelligente chiamato Google Home, hai un sistema di monitoraggio basato su Centreon o Nagios e vuoi ascoltare gli avvisi lì, Questo è il tuo post!
Non male, para conseguirlo necesitaremos hacer unos pasos en nuestro servidor de monitorización Centreon, lo conseguiremos gracias a un script de Python 3, que permite enviarle un texto a un Google Home como argumento.
Tendremos en cuenta tener al menos Python 3.5:
sudo yum install rh-python35
scl enable rh-python35 bash
Y lo habilitamos de manera permanente, ejemplo de mi ‘/etc/profile.d/enablepython35.sh’:
#!/bin/bash
source scl_source enable rh-python35
Dopo di che, deberemos reiniciar los servicios de Centreon para que cargue la sesión de centreon-engine de nuevo y corra Python3.
Algo que seguro no nos gusta, pero lo tengo anotado como requisito, es que el usuario centreon-centengine debe tener privilegios de sudo, ejecutamos ‘visudo’ y añadimos la siguiente línea en la parte correspondiente:
centreon-engine ALL=(TUTTO) NOPASSWD:TUTTO
Nos descargamos este script, que en mi caso lo llamé ‘mensaje_google_home.sh’:
#! /usr/bin/python3.5 # # spoke something on GoogleHome # # use: ./ghome_say [ghome_ip] [text_to_say] # # import sys import pychromecast import os import os.path from gtts import gTTS import time import hashlib ip=sys.argv[1]; say=sys.argv[2]; #********* retrieve local ip of my rpi3 import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(("8.8.8.8", 80)) local_ip=s.getsockname()[0] s.close() #********************** fname=hashlib.md5(say.encode()).hexdigest()+".mp3"; #create md5 filename for caching castdevice = pychromecast.Chromecast(IP) castdevice.wait() vol_prec=castdevice.status.volume_level castdevice.set_volume(0.0) #set volume 0 for not hear the BEEEP try: Os.mkdir("/var/www/html/mp3_cache/") except: pass if not os.path.isfile("/var/www/html/mp3_cache/"+fname): tts = gTTS(say,lang='es') tts.save("/var/www/html/mp3_cache/"+fname) mc = castdevice.media_controller mc.play_media("Protocollo HTTP://"+local_ip+"/mp3_cache/"+fname, "audio/mp3") mc.block_until_active() mc.pause() #prepare audio and pause... tempo.sonno(1) castdevice.set_volume(vol_prec) #setting volume to precedent value time.sleep(0.2) mc.play() #play the mp3 while not mc.status.player_is_idle: tempo.sonno(0.5) mc.stop() castdevice.quit_app()
Lo hacemos ejecutable y lo probamos:
chmod +x mensaje_google_home.sh
python3 mensaje_google_home.sh DIRECCION_IP_GOOGLE_HOME "Collaudo, Collaudo"
Veremos cómo nuestro altavoz inteligente de Google Home nos dirá el texto que pusimos en el ejemplo. Non male, ahora llevaremos esto a Centreon, Questo è, crearemos un Comando de Notificación para alertas de Hosts y otro para alertas de Servicios que utilicen el script anterior.
Per fare ciò,, poiché “Configurazione” > “Comandi” > “Notifiche”, crearemos un Comando para que Google Home alerte de lo que le pase a nuestros hosts con la siguiente línea de comandos:
python3 /usr/lib/centreon/plugins/mensaje_google_home.sh DIRECCION_IP_GOOGLE_HOME "L'host $HOSTNAME$ ($INDIRIZZO HOST$) è in stato $HOSTSTATE$"
Y hacemos otro Comando, pero esta vez para alertar de los Servicios, y con la siguiente línea nos bastaría:
python3 /usr/lib/centreon/plugins/mensaje_google_home.sh DIRECCION_IP_GOOGLE_HOME "A $HOSTNAME$ il servizio $SERVICEDESC$ è in stato $SERVICESTATE$"
Lo que quedaría ahora sería asociar estos comandos de notificación recién creados a un usuario que tengamos, por ejemplo ya definido, o al que le habilitemos las notificaciones. Exportaremos la configuración de Centreon y a partir de este momento ya recibiremos las alertas de nuestra monitorización con nuestros altavoces o asistentes inteligentes de Google Home o Google Home Mini entre otros.
Come al solito, espero que os haya sido de interés y agradecer como siempre que lo mováis por las redes sociales.