Rebent trucades telefòniques amb les notificacions de Centreon

Bo, bo… que venen corbes… si tens un sistema de monitoratge de Centreon, o basat en Nagios o similar, potser aquest post t'interessi. El que vam veure és com generar les alertes tradicionals del nostre monitoratge, però aquesta vegada no farem servir alertes per mail o Telegram, si no que farà una trucada telefònica usant una centraleta IP que disposem en l'organització, amb ella ens trucarà al telèfon que indiquem i en perfecte castellà ens indicarà el problema que existeix.

 

Així que el que s' ha dit, 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, VodafoneEstos 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:

[sourcecode]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
./configure
make dep
make[/sourcecode]

 

Nos generará este binario:

[sourcecode]/root/pjproject-2.8/pjsip-apps/bin/pjsua-x86_64-unknown-linux-gnu[/sourcecode]

 

Deberemos crear un fichero de configuración para PJSUA, donde indicaremos l'accés a nostra centralita IP amb les credenciales correctes para registrarnos y poder realizar llamadas. En mi caso lo dejo aquí '/root/pjproject-2.8/pjsip-apps/bin/pjsua.conf’ y este és el seu contenido:

[sourcecode]–null-audio
–registrar sip:DIRECCION_IP_CENTRALITA
–realm=*
–id sip:USUARIO@DIRECCION_IP_CENTRALITA
–usuari USUARIO
–password CONTRASEÑA[/sourcecode]

 

Ara, 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á executado por Centreon cuando tenga que notificar, al que le pasará com argumento el missatge que tiene que leernos en la llamada. Indicamos los directorios para Expect, PJSUA i el seu fitxer de configuració que acabem de crear; igualment podrem afegir un fitxer wav amb el so d'alguna alerta que sonarà abans de l'àudio, indiciarem el camí del binari Text2wave, la durada màxima de la trucada i com no, el número de telèfon que s'ha de marcar per fer la trucada, per últim, l'adreça IP de la centraleta IP. Així que el que s' ha dit, el contingut de ‘llama.sh’

[sourcecode]#! /bin/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_TELEFON_A_MARCAR
CENTRALITA = ADREÇA_IP_DE_LA_CENTRALITA
MESSAGE="Monitoring Alert"

# Definint un fitxer de bloqueig
# No podem fer més d'una trucada
# al mateix temps, perquè pjsua bloqueja el port
# així que hem d'assegurar-nos que ningú més intenti trucar
# Si ja hi ha una trucada, hem d'esperar.

bloquejat=false
mentre $bloquejat == false ; fer
if ! -f /tmp/caller.lock ; then
touch /tmp/caller.lock
bloquejat=true
else
sleep 5
fi
Fet

# Generant el missatge
$TEXT2WAVE -o $SOUNDFILE -f 8000 << EOF
$MISSATGE
EOF

# Fent la trucada en si.
# Expect iniciarà pjsua i treballarà amb
# ell de manera que s'acabi automàticament

$EXPECT << EOF
spawn $PJSUA –config-file $PJSUACONFIG –play-file $SOUNDFILE –auto-play –duration $DURATION –max-calls 1 sip:$NUMBER@$CENTRALITA
expect "VAD re-enabled"
sleep $DURATION
send "q\n"
EOF

# Netejant
rm $SOUNDFILE

# Eliminant el fitxer de bloqueig
rm /tmp/caller.lock[/sourcecode]

 

Podrem fer si volem una prova ara per veure si va tot bé, Bastará amb executar el script anterior i entrecomillar com argumento el missatge que volem que ens diga por telèfon:

[sourcecode]./llama.sh "Hola, esto es un mensaje de prueba que escucharás en ingles de la muerte"[/sourcecode]

 

Si volem que la cridada sea en castellano o espanyol, deberemos també realitzar aquests últims passos. Instalaremos les veus de HISPAVOCES, un projecte de Guadalinex donde ens dejan 2 veus que parlen perfectament el castellà, no suenan a robot 🙂 Escogerem si usar la veu femenina o masculina.

[sourcecode]yum install hispavoces-pal-diphone hispavoces-sfl-diphone[/sourcecode]

 

Editamos el fichero de Festival, donde indicarem que utilitzeu les noves veus, editamos '/usr/share/festival/lib/voices.scm’ i sobre la línia 328 podem modificar directament i afegir una d'aquestes dues veus

[sourcecode]…
(defvar default-voice-priority-list
‘(JuntaDeAndalucia_es_pa_diphone
nitech_us_slt_arctic_hts
…[/sourcecode]

 

I si os digo la verdad, los següents apuntes no los recuerdo por qué los tengo anotados… Quizá no me reconocería las 2 voces… però vagi, lo que vemos aquí és com instal·lar les veus que ens dan la bona gent de Guadalinex mediante RPM (acordaros que la distribució de Centreon se basa en un CentOS), però clar, lo que ens podem descarregar d'ells és en DEB, així que ho que hacemos es descargar, compilar e instal·lar Alien (i els seus requisits) per després descargarnoz la veu en . DEB y convertirla a . RPM e instalarla. Al final movemos los ficheros que nos habrá generado al camí correcte de Festival y les seves veus en castellà

[sourcecode]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
perl Makefile.PL
make
make install

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/[/sourcecode]

 

Ara de nou podreu provar de fer la trucada igual que abans i veureu com ara sí que ens parla un senyor o senyora perfectament en espanyol,

[sourcecode]./llama.sh "Hola, esto es un mensaje de prueba que escucharás perfectamente"[/sourcecode]


Un cop tinguem tota la configuració llesta i l'script funcionant, ens toca dir a Centreon que quan generi alguna notificació ens truqui per telèfon, per a això, el primer serà donar d'alta els Comandes de les Notificacions, així que creem 2, un per quan ens notifiqui dels Hosts i un altre per als Serveis. Des de “Configuration” > “Commands” > “Notifications” els definim, quedant:

 

Crides_serveis

[sourcecode]/home/llama.sh "En el equipo $HOSTNAME$ el Servicio $SERVICEDESC$ está en estado $SERVICESTATE$"[/sourcecode]

 

Crides_hosts

[sourcecode]/home/llama.sh "El equipo $HOSTNAME$ esta en estado $HOSTSTATE$"[/sourcecode]

 

I després ja no queda més que associar-lo, per exemple, a l'usuari o grup que vulguem que rebi la crida, els hi associem en “Comandes de Notificació de Host” i en “Comandes de Notificació de Servei”. Com sempre, després de qualsevol canvi de configuració, exportem i gravem la configuració de Centreon i a partir d'aquest moment, quan hi hagi una alerta al nostre CPD o a la nostra empresa, rebrà crides telefòniques indicant-nos quin és el problema. No em digueu que no és genial per quan tenim personal de guàrdia i volem despertar-lo a l'hora que sigui perquè actuï, una meravella!

Com sempre espero que us hagi interessat i gràcies per compartir-ho a les xarxes socials.

 

Posts recomanats

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, no dubtis a contactar amb mi, us intentareu ajudar sempre que pugui, compartir és viure ;) . Gaudir dels documents!!!

Posar la BD de Home Assistant a MariaDB

19 de September de 2019