Receber chamadas telefônicas com notificações do Centreon
Poço, Poço… As curvas estão chegando… se você tiver um sistema de monitoramento Centreon, ou baseado em Nagios ou similar, Você pode estar interessado neste post. O que vamos ver é como gerar os alertas tradicionais do nosso monitoramento, mas desta vez não usaremos alertas por e-mail ou Telegram, mas fará uma ligação telefônica usando um PABX IP que temos na organização, com ele nos ligará no número de telefone que indicarmos e em espanhol perfeito indicará o problema que existe.
Então o que eu disse, 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:
[Código-fonte]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
./Pôr
make dep
Fazer[/Código-fonte]
Nos generará este binário:
[Código-fonte]/root/pjproject-2.8/pjsip-apps/bin/pjsua-x86_64-unknown-linux-gnu[/Código-fonte]
Deberemos criar 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 aqui '/root/pjproject-2.8/pjsip-apps/bin/pjsua.conf’ y este es su contenido:
[Código-fonte]–null-audio
–registrar sip:DIRECCION_IP_CENTRALITA
–realm=*
–id sip:USUARIO@DIRECCION_IP_CENTRALITA
–nome de utilizador UTILIZADOR
–palavra-passe PALAVRA-passe[/Código-fonte]
Agora, lo que haremos será criar 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á como argumento el message 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. Então o que eu disse, el contenido de ‘llama.sh’
[Código-fonte]#! /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_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
se ! -f /tmp/caller.lock ; em seguida,
touch /tmp/caller.lock
locked=true
mais
sleep 5
Fi
Terminado
# 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 Sim:$NUMBER@$CENTRALITA
expect "VAD re-enabled"
sleep $DURATION
send "q\n"
EOF
# Cleaning up
rm $SOUNDFILE
# Removing the lock file
rm /tmp/caller.lock[/Código-fonte]
Podremos hacer si queremos una prueba ahora para ver si va todo bien, bastará com executar o script anterior e entrecomillar como argumento o message que queremos que nos diga por telefone:
[Código-fonte]./llama.sh "Hola, esto es un mensaje de prueba que escucharás en ingles de la muerte"[/Código-fonte]
Se queremos que a chamada seja em castelão o espanhol, deberemos além de realizar estes últimos passos. Instalaremos las voces de HISPAVOCES, um projeto de Guadalinex donde nos dejan 2 voces que falan perfectamente el castellano, no suenan a robot 🙂 Escogeremos si usar la voz femenina o masculina.
[Código-fonte]yum install hispavoces-pal-diphone hispavoces-sfl-diphone[/Código-fonte]
editamos el fichero de Festival, onde indicaremos que use las nuevas voces, editamos '/usr/share/festival/lib/voices.scm’ y sobre la línea 328 podemos modificar diretamente e adicionar uma de estas dos voces
[Código-fonte]…
(defvar default-voice-priority-list
‘(JuntaDeAndalucia_es_pa_diphone
nitech_us_slt_arctic_hts
…[/Código-fonte]
E se vos disser a verdade, os seguintes apontamentos não me lembro porque os tenho anotados… Talvez não me reconheceria as 2 vozes… Mas uau, o que vemos aqui é como instalar as vozes que nos dá a boa gente do Guadalinex através de RPM (lembrar-vos que a distro do Centreon se baseia num CentOS), Mas é claro, o que podemos descarregar deles é em DEB, então o que fazemos é descarregar, compilar e instalar o Alien (e os seus requisitos) para posteriormente descarregar a voz em .DEB e convertê-la para .RPM e instalar. No final movemos os ficheiros que nos terá gerado para o caminho correto do Festival e das suas vozes em castelhano
[Código-fonte]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
Fazer
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/[/Código-fonte]
Agora novamente poderão tentar fazer a chamada como antes e verão que agora sim nos fala um senhor ou senhora perfeitamente em espanhol,
[Código-fonte]./llama.sh "Hola, esto es un mensaje de prueba que escucharás perfectamente"[/Código-fonte]

Após ter toda a configuração pronta e o script a funcionar, é altura de dizer ao Centreon que quando gerar alguma notificação nos ligue por telefone, por isso, o primeiro será registar os Comandos das Notificações, assim que criamos 2, um para quando nos notificar sobre os Hosts e outro para os Serviços. Desde “Configuração” > “Comandos” > “Notificações” definimo-los, Ficar:
Chamadas_serviços
[Código-fonte]/home/llama.sh "En el equipo $HOSTNAME$ el Servicio $SERVICEDESC$ está en estado $SERVICESTATE$"[/Código-fonte]
Chamadas_hosts
[Código-fonte]/home/llama.sh "El equipo $HOSTNAME$ esta en estado $HOSTSTATE$"[/Código-fonte]
E depois já não resta mais nada a não ser associá-lo, Por exemplo, ao utilizador ou grupo que quisermos que receba a chamada, associamo-los em “Comandos de Notificação de Hosts” e em “Comandos de Notificação de Serviço”. Como de costume, após qualquer alteração de configuração, exportamos e gravamos a configuração do Centreon e a partir deste momento, quando houver um alerta no nosso CPD ou na nossa empresa, receberemos chamadas telefónicas a indicar-nos qual é o problema. Não me digam que não é fantástico quando temos pessoal de serviço e queremos acordá-lo a qualquer hora para que atue, Que maravilha!
Como sempre, espero que tenham achado interessante e obrigado por partilhar nas redes sociais.









































