Senden von Centreon-Benachrichtigungen an Google Home

Wenn wir ein bisschen Geeks sind und einen intelligenten Assistenten von diesen zur Hand haben, der Google Home heißt, Sie haben ein Überwachungssystem, das auf Centreon oder Nagios basiert, und möchten die Warnungen dort hören, Bist du gebucht?!

gut, 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

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 ‘visudoy añadimos la siguiente línea en la parte 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

#
# 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://"+local_ip+"/mp3_cache/"+fname, "audio/mp3")

mc.block_until_active()

mc.pause() #prepare audio and pause...

time.sleep(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:
   time.sleep(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 "probando, Testen"

Veremos cómo nuestro altavoz inteligente de Google Home nos dirá el texto que pusimos en el ejemplo. gut, ahora llevaremos esto a Centreon, nämlich, crearemos un Comando de Notificación para alertas de Hosts y otro para alertas de Servicios que utilicen el script anterior.

dies zu tun, von “Aufbau” > “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 "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í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 immer, espero que os haya sido de interés y agradecer como siempre que lo mováis por las redes sociales.

Letzte Artikel von Hector Herrero (Alle anzeigen)