Empfangen von Telefonanrufen mit Centreon-Benachrichtigungen
Brunnen, Brunnen… Kurven kommen… wenn Sie ein Centreon-Überwachungssystem haben, oder basierend auf Nagios oder ähnlichem, Dieser Beitrag könnte Sie interessieren. Was wir sehen werden, ist, wie wir die traditionellen Warnungen unseres Monitorings generieren können, aber dieses Mal werden wir keine Benachrichtigungen per E-Mail oder Telegram verwenden, Es wird jedoch ein Telefonanruf über eine IP-PBX getätigt, die wir in der Organisation haben, Damit ruft es uns unter der von uns angegebenen Telefonnummer an und zeigt in perfektem Spanisch das bestehende Problem an.
Also, was ich gesagt habe, si dispones de una centralita de Voz IP y quieres que la monitorización pueda hacer llamadas de teléfono para advertirte con un mensaje de qué Servicio o Servidor se ha caído, no tendrás más que seguir estos sencillos pasos. Si no tienes una centralita VoIP te animo a que montes FreePBX, verás que rápido podrás hacer llamadas voz IP dentro de tu organización, o externas si es que por ejemplo usas la fibra de Movistar, Vodafone… Estos son los pasos que debes seguir en tu máquina de Centreon si quieres que ella pueda hacer llamadas automáticamente.
Empezamos instalando Festival y PJPROJECT que lo compilaremos:
[Quellcode]yum install expect festival
wget http://www.pjsip.org/release/2.8/pjproject-2.8.tar.bz2
tar xjf pjproject-2.8.tar.bz2
cd pjproject-2.8
./Garnitur
make dep
Machen[/Quellcode]
Nos generará este binario:
[Quellcode]/root/pjproject-2.8/pjsip-apps/bin/pjsua-x86_64-unknown-linux-gnu[/Quellcode]
Deberemos crear un fichero de configuración para PJSUA, donde indicaremos el acceso a nuestra centralita IP con los credenciales correctos para registrarnos y poder realizar llamadas. En mi caso lo dejo aquí ‘/root/pjproject-2.8/pjsip-apps/bin/pjsua.conf’ y este es su contenido:
[Quellcode]–null-audio
–registrar sip:DIRECCION_IP_CENTRALITA
–realm=*
–id sip:USUARIO@DIRECCION_IP_CENTRALITA
–Benutzername USER
–password CONTRASEÑA[/Quellcode]
Jetzt, lo que haremos será crear un script que lo usaremos para realizar la llamada, en mi caso un nombre super intuitivo ‘llama.sh’, este script será ejecutado por Centreon cuando tenga que notificar, al que le pasará como argumento el mensaje que tiene que leernos en la llamada. Indicamos los directorios para Expect, PJSUA y su fichero de configuración que acabamos de crear; así mismo podremos añadir un fichero wav con el sonido de alguna alerta que sonará antes del audio, indicaremos el path del binario Text2wave, la duración de la llamada máxima y como no, el número de teléfono que debe marcar para hacer la llamada, por último la dirección IP de la centralita IP. Also, was ich gesagt habe, el contenido de ‘llama.sh’
[Quellcode]#! /Mülleimer/Bash
EXPECT=/usr/bin/expect
PJSUA=/root/pjproject-2.8/pjsip-apps/bin/pjsua-x86_64-unknown-linux-gnu
PJSUACONFIG=/root/pjproject-2.8/pjsip-apps/bin/pjsua.conf
SOUNDFILE=/tmp/alert.wav
TEXT2WAVE=/usr/bin/text2wave
DURATION=20
NUMBER=NUMERO_DE_TELEFONO_A_MARCAR
CENTRALITA = DIRECCION_IP_DE_LA_CENTRALITA
MESSAGE="Monitoring Alert"
# Setting a lock file
# We can’t make more than one call
# at a time, because pjsua blocks the port
# so we have to make sure that nobody else tries to call
# If there is already a call we have to wait.
locked=false
while $locked == false ; do
wenn ! -f /tmp/caller.lock ; then
touch /tmp/caller.lock
locked=true
oder
sleep 5
Fi
Fertig
# Generating the message
$TEXT2WAVE -o $SOUNDFILE -f 8000 << EOF
$MESSAGE
EOF
# Making the call it self.
# Expect will start pjsua and work with
# it so that it will end it self automatically
$EXPECT << EOF
spawn $PJSUA –config-file $PJSUACONFIG –play-file $SOUNDFILE –auto-play –duration $DURATION –max-calls 1 ja:$NUMBER@$CENTRALITA
expect "VAD re-enabled"
sleep $DURATION
send "q\n"
EOF
# Cleaning up
rm $SOUNDFILE
# Removing the lock file
rm /tmp/caller.lock[/Quellcode]
Podremos hacer si queremos una prueba ahora para ver si va todo bien, bastará con ejecutar el script anterior y entrecomillar como argumento el mensaje que queremos que nos diga por teléfono:
[Quellcode]./llama.sh "Hola, esto es un mensaje de prueba que escucharás en ingles de la muerte"[/Quellcode]
Si queremos que la llamada sea en castellano o español, deberemos además realizar estos últimos pasos. Instalaremos las voces de HISPAVOCES, un proyecto de Guadalinex donde nos dejan 2 voces que hablan perfectamente el castellano, no suenan a robot 🙂 Escogeremos si usar la voz femenina o masculina.
[Quellcode]yum install hispavoces-pal-diphone hispavoces-sfl-diphone[/Quellcode]
Editamos el fichero de Festival, donde indicaremos que utilice las nuevas voces, editamos ‘/usr/share/festival/lib/voices.scm’ y sobre la línea 328 podremos modificar directamente y añadir una de estas dos voces
[Quellcode]…
(defvar default-voice-priority-list
‘(JuntaDeAndalucia_es_pa_diphone
nitech_us_slt_arctic_hts
…[/Quellcode]
Y si os digo la verdad, los siguientes apuntes no los recuerdo por qué los tengo anotados… Quizá no me reconocería las 2 voces… Aber wow, lo que vemos aquí es cómo instalar las voces que nos dan la buena gente de Guadalinex mediante RPM (acordaros que la distro de Centreon se basa en un CentOS), Aber natürlich, lo que nos podemos descargar de ellos es en DEB, así que lo que hacemos es descargar, compilar e instalar Alien (y sus requisitos) para posteriormente descargarnoz la voz en .DEB y convertirla a .RPM e instalarla. Al final movemos los ficheros que nos habrá generado al path correcto de Festival y sus voces en castellano
[Quellcode]yum install rpm-build
cd /usr/src
wget http://ftp.de.debian.org/debian/pool/main/a/alien/alien_8.92.tar.gz
tar -xf alien_8.92.tar.gz
cd alien
Pearl Makefile.PL
Machen
make install (installieren)
wget https://github.com/guadalinex-archive/hispavoces/raw/master/packages/festvox-palpc16k_1.0-1_all.deb
alien -rv festvox-palpc16k_1.0-1_all.deb
rpm -ivh festvox-palpc16k-1.0-2.noarch.rpm
mv /usr/share/festival/voices/spanish/ /usr/share/festival/lib/voices/es/[/Quellcode]
Ahora de nuevo podréis probar a hacer la llamada igual que antes y veréis como ahora sí nos habla un señor o señora perfectamente en español,
[Quellcode]./llama.sh "Hola, esto es un mensaje de prueba que escucharás perfectamente"[/Quellcode]
Tras disponer ya de toda la configuración lista y el script funcionando, nos toca decirle a Centreon que cuando genere alguna notificación nos llame por teléfono, hierfür, lo primero será dar de alta los Comados de las Notificaciones, así que creamos 2, uno para cuando nos notifique de los Hosts y otro para los Servicios. Seit “Konfiguration” > “Befehle” > “Benachrichtigungen” los definimos, Bleibend:
Llamadas_servicios
[Quellcode]/home/llama.sh "En el equipo $HOSTNAME$ el Servicio $SERVICEDESC$ está en estado $SERVICESTATE$"[/Quellcode]
Llamadas_hosts
[Quellcode]/home/llama.sh "El equipo $HOSTNAME$ esta en estado $HOSTSTATE$"[/Quellcode]
Y luego ya no queda más que asociarlo, Zum Beispiel, al usuario o grupo que queramos que reciba la llamada, se los asociamos en “Host Notification Commands” und in “Service Notification Commands”. Wie gewöhnlich, tras cualquier cambio de configuración, exportamos y grabamos la config de Centreon y a partir de este momento, cuando exista una alerta en nuestro CPD o en nuestra empresa, recibiremos llamadas telefónicas indicándonos cuál es el problema. No me digáis que no es genial para cuando tenemos personal de guardia y queremos despertarle a la hora que sea para que actúe, ¡una maravilla!
Como siempre espero os haya interesado y gracias por compartir en las redes sociales.