向 Google Home 发送 Centreon 警报
如果我们有点宅,并且手边有一个叫做 Google Home 的智能助手, 你们有一个基于 Centreon 或 Nagios 的监控系统,并且想在那里听到警报, 这是您的帖子!
不错, 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
然后, 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=(都) NOPASSWD:都
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(知识产权) castdevice.wait() vol_prec=castdevice.status.volume_level castdevice.set_volume(0.0) #设置音量 0 以免听到蜂鸣声 尝试: os.mkdir("/var/www/html/mp3_cache/") 除外: pass 如果不是 os.path.isfile("/var/www/html/mp3_cache/"+fname): tts = gTTS(说,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() #准备音频并暂停... 时间.sleep(1) castdevice.set_volume(vol_prec) #将音量设为之前的值 time.sleep(0.2) mc.play() #播放 mp3 当 mc.status.player_is_idle 不是 True 时: 时间.sleep(0.5) mc.stop() castdevice.quit_app()
我们使其可执行并测试它:
chmod +x mensaje_google_home.sh python3 mensaje_google_home.sh GOOGLE_HOME_IP 地址 "测试, 测试"
我们将看到我们的 Google Home 智能音箱会说出我们在示例中设置的文本. 不错, 现在我们将把这个带到 Centreon, 这是, crearemos un Comando de Notificación para alertas de Hosts y otro para alertas de Servicios que utilicen el script anterior.
为此,, 因为 “配置” > “命令” > “通知”, 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 GOOGLE_HOME_IP "主机 $HOSTNAME$ ($主机地址$) 处于 $HOSTSTATE$ 状态"
然后我们创建另一个命令, 但这次是用于服务警报, 使用以下这一行就足够了:
python3 /usr/lib/centreon/plugins/mensaje_google_home.sh GOOGLE_HOME_IP "在 $HOSTNAME$ 时,$SERVICEDESC$ 服务处于 $SERVICESTATE$ 状态"
现在需要做的是将这些新创建的通知命令关联到我们已有的用户, 比如已经定义好的用户, 或者给其启用通知的用户. 我们将导出Centreon的配置,从此刻起,我们就可以通过我们的Google Home或Google Home Mini等智能音箱或助手接收监控警报.
照常, 希望这对你们有所帮助,并像往常一样感谢你们在社交网络上分享.











































