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];
#********* Lokale IP meines RPI3 abrufen
import socket
s = socket.socket(socket.AF_INET, Steckdose. 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() #Audio vorbereiten und pausieren...
Zeit.Schlaf(1)
castdevice.set_volume(vol_prec) #Lautstärke auf Präzedenzwert setzen
time.sleep(0.2)
mc.play() #MP3 abspielen
while nicht 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$"
Und wir machen einen weiteren Befehl, aber diesmal um über die Dienste zu informieren, und mit der folgenden Zeile wäre es genug:
python3 /usr/lib/centreon/plugins/mensaje_google_home.sh DIRECCION_IP_GOOGLE_HOME "Auf $HOSTNAME$ ist der Dienst $SERVICEDESC$ im Zustand $SERVICESTATE$"
Was jetzt noch bleibt, ist diese neu erstellten Benachrichtigungsbefehle einem Benutzer zuzuordnen, den wir haben, zum Beispiel bereits definiert, oder dem wir die Benachrichtigungen aktivieren. Wir werden die Konfiguration von Centreon exportieren und von diesem Moment an werden wir die Alarme unserer Überwachung über unsere Lautsprecher oder intelligenten Assistenten von Google Home oder Google Home Mini unter anderem erhalten.
Wie gewöhnlich, ich hoffe, es war interessant für euch und danke wie immer, dass ihr es in den sozialen Medien verbreitet.











































