
Senden von Centreon-Benachrichtigungen an Google Home
Wenn wir ein bisschen geeky sind und einen intelligenten Assistenten namens Google Home zur Hand haben, Sie haben ein Monitoring-System auf Basis von Centreon oder Nagios und möchten dort die Alarme abhören, Das ist dein Beitrag!
Nicht schlecht, 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’:
#!/Mülleimer/Bash
source scl_source enable rh-python35
Danach, 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=(ALLE) NOPASSWD:ALLE
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("HTTP (Englisch)://"+local_ip+"/mp3_cache/"+fname, "audio/mp3") mc.block_until_active() mc.pause() #prepare audio and pause... Zeit.Schlaf(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: Zeit.Schlaf(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 "Testen, Testen"
Veremos cómo nuestro altavoz inteligente de Google Home nos dirá el texto que pusimos en el ejemplo. Nicht schlecht, ahora llevaremos esto a Centreon, Das ist, crearemos un Comando de Notificación para alertas de Hosts y otro para alertas de Servicios que utilicen el script anterior.
Um dies zu tun,, seit “Konfiguration” > “Befehle” > “Benachrichtigungen”, 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 "Der Gastgeber $HOSTNAME$ ($HOSTADDRESS$) esta en estado $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 "En $HOSTNAME$ el Servicio $SERVICEDESC$ está en estado $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.
Wie gewöhnlich, espero que os haya sido de interés y agradecer como siempre que lo mováis por las redes sociales.