Enviando alertas do Centreon para o Google Home
Se formos um pouco nerds e tivermos um assistente inteligente à mão chamado Google Home, você tem um sistema de monitoramento baseado em Centreon ou Nagios e você quer ouvir os alertas lá, Esta é a sua postagem!
Nada mau, para conseguirlo necesitaremos hacer unos pasos en nuestro servidor de monitorización Centreon, lo conseguiremos graças 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
Depois disso, 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 privilégios de sudo, executamos 'visudo’ y añadimos la próxima linha na parte correspondiente:
centeron-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
nip=sys.argv[1];
say=sys.argv[2];
#********* recuperar IP local do meu socket rpi3
import = socket.socket(socket.AF_INET, soquete. SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
local_ip=s.getsockname()[0]
s.close()
#**********************
fname=hashlib.md5(say.encode()).hexdigest()+".mp3"; #criar nome de ficheiro md5 para cache
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("Referências HTTP://"+local_ip+"/mp3_cache/"+fname, "audio/mp3")
mc.block_until_active()
mc.pause() #preparar áudio e pausar...
time.sleep(1)
castdevice.set_volume(vol_prec) #definir volume para o valor precedente
time.sleep(0.2)
mc.play() #reproduzir o mp3
while not mc.status.player_is_idle:
time.sleep(0.5)
mc.stop()
castdevice.quit_app()
Fazemo-lo executável e testamo-lo:
chmod +x mensaje_google_home.sh python3 mensaje_google_home.sh DIRECCION_IP_GOOGLE_HOME "Teste, Teste"
Veremos como a nossa coluna inteligente Google Home nos dirá o texto que colocámos no exemplo. Nada mau, agora levaremos isto para o Centreon, Isso é, criaremos um Comando de Notificação para alertas de Hosts e outro para alertas de Serviços que usem o script anterior.
Para fazer isso,, desde “Configuração” > “Comandos” > “Notificações”, criaremos um Comando para que o Google Home alertes sobre o que acontecer aos nossos hosts com a seguinte linha de comandos:
python3 /usr/lib/centreon/plugins/mensaje_google_home.sh DIRECCION_IP_GOOGLE_HOME "O anfitrião $HOSTNAME$ ($HOSTADDRESS$) está em estado $HOSTSTATE$"
E fazemos outro Comando, mas desta vez para alertar sobre os Serviços, e com a seguinte linha bastar-nos-ia:
python3 /usr/lib/centreon/plugins/mensaje_google_home.sh DIRECCION_IP_GOOGLE_HOME "Em $HOSTNAME$ o Serviço $SERVICEDESC$ está em estado $SERVICESTATE$"
O que ficaria agora seria associar estes comandos de notificação recém-criados a um utilizador que tenhamos, por exemplo já definido, ou a quem activemos as notificações. Exportaremos a configuração do Centreon e a partir deste momento já receberemos os alertas da nossa monitorização com os nossos altifalantes ou assistentes inteligentes do Google Home ou Google Home Mini entre outros.
Como de costume, Espero que vos tenha sido interessante e agradecer como sempre que o partilhem nas redes sociais.










































