Enviant les alertes de Centreon a Google Home
Si som una mica frikis i tenim a mà un assistent intel·ligent d'aquests anomenats Google Home, teniu un sistema de monitoratge basat en Centreon o en Nagios i voleu escoltar ací les alertes, aquest és el teu post!
Bé, para conseguirlo necesitaremos hacer unos pasos en el nostre servidor de monitorització 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, exemple de mi '/etc/profile.d/enablepython35.sh':
#!/bin/bash
source scl_source enable rh-python35
Després d'això, deberemos reiniciar los serveis de Centreon para que cargue la sessió de centreon-engine de nuevo y corra Python3.
Algo que seguro no nos gusta, pero lo tengo anotado como requisito, es que l'usuari centreon-centengine debe tener privilegios de sudo, executamos 'visudo’ y añadimos la següent línia en la part correspondiente:
centreon-engine ALL=(ALL) NOPASSWD:ALL
Nos descargamos este script, que en mi caso lo llamé 'mensaje_google_home.sh':
#! /usr/bin/python3.5
#
# he parlat alguna cosa a 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
import hashlib
nip=sys.argv[1];
say=sys.argv[2];
#********* recupera la IP local del meu socket rpi3
import socket
s = socket.socket(socket.AF_INET, encaix. SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
local_ip=s.getsockname()[0]
s.close()
#**********************
fname=hashlib.md5(say.encode()).hexdigest()+".mp3"; #crea nom de fitxer md5 per a la memòria cau
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/")
excepte:
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://"+local_ip+"/mp3_cache/"+fname, "audio/mp3")
mc.block_until_active()
mc.pause() #preparar àudio i pausa...
time.sleep(1)
castdevice.set_volume(vol_prec) #ajustant el volum al valor precedent
time.sleep(0.2)
mc.play() #reproduir el mp3
mentre mc.status.player_is_idle no sigui cert:
time.sleep(0.5)
mc.stop()
castdevice.quit_app()
Fem-ho executable i ho provem:
chmod +x mensaje_google_home.sh python3 mensaje_google_home.sh DIRECCION_IP_GOOGLE_HOME "Provant, provant"
Veurem com el nostre altaveu intel·ligent de Google Home ens dirà el text que hem posat a l'exemple. Bé, ara portarem això a Centreon, això és, crearem un Comandament de Notificació per a alertes de Hosts i un altre per a alertes de Serveis que utilitzin l'script anterior.
Per a això, des de “Configuration” > “Commands” > “Notifications”, crearem un Comandament perquè Google Home alerti del que passa amb els nostres hosts amb la següent línia de comandes:
python3 /usr/lib/centreon/plugins/mensaje_google_home.sh DIRECCION_IP_GOOGLE_HOME "El Host $HOSTNAME$ ($HOSTADDRESS$) esta en estado $HOSTSTATE$"
Y hacemos otro Comando, pero esta vez para alertar de los Servicios, y con la siguiente línia 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 associar aquests comandos de notificación recién creats a un usuari que tengamos, per exemple ja definido, o al que le habilitem las notificaciones. Exportaremos la configuració de Centreon i a partir d'aquest moment ja recibiremos les alertes de la nostra monitorització amb els nostres altavoces o assistents intel·ligents de Google Home o Google Home Mini entre altres.
Com sempre, espero que os haya sido de interés y agradecer com sempre que lo mováis por las redes sociales.










































