Instalación y configuración de MonAst: The Asterisk Monitor Web Panel

La verdad me ha sorprendido mucho encontrarme con este programa porque no tenía la menor idea de su existencia y personalmente me parece muy bueno (además de Open Source).

MonAst es un panel de control para Asterisk que permite monitorear:

  • Múltiples servidores Asterisk
  • Extensiones SIP, IAX2, DAHDI
  • Canales activos y llamadas
  • Conferencias (Meetme)
  • Llamadas parqueadas
  • Colas de espera

En tiempo real permite:

  • Originar una llamada
  • Transferir las llamadas
  • Colgar una llamada
  • Parquear una llamada
  • Espiar una llamada
  • Invitar extensiones o números externos a una conferencia
  • Sacar un usuario de una conferencia
  • Añadir una extensión como agente a una cola de espera
  • Quitar una extensión como agente de una cola de espera
  • Poner en pausa un agente de una cola de espera
  • Ejecutar comandos de la consola de Asterisk

En este articulo veremos como instalar el programa en una distribución CentOS 6.4. Como no hace falta instalar MonAst en el mismo servidor donde se encuentra Asterisk, se puede utilizar el mismo servidor Web que eventualmente ya se tiene disponible.

Una vez actualizado el sistema y reiniciado el servidor se instala el paquete de Python:

yum install python python-devel

Se instala Zope.Interface (versión 3.6 o superior):

cd /usr/src

wget --no-check-certificate https://pypi.python.org/packages/source/z/zope.interface/zope.interface-...

unzip zope.interface-4.0.5.zip

cd zope.interface-4.0.5

python setup.py install

Se continua con Twisted (versión 10.1 o superiores); primero se instala la dependencia gcc:

yum install gcc

cd /usr/src

wget --no-check-certificate https://pypi.python.org/packages/source/T/Twisted/Twisted-13.0.0.tar.bz2

tar -xf  Twisted-13.0.0.tar.bz2

cd Twisted-13.0.0

python setup.py install

Se sigue con StarPy:

cd /usr/src

wget http://downloads.sourceforge.net/project/starpy/starpy/1.0.0a13/starpy-1...

tar -xf starpy-1.0.0a13.tar.gz

cd starpy-1.0.0a13

python setup.py install

Para terminar, para la parte web, se instalan algunos paquetes PHP, el servidor WEB y el paquete php pear HTTP_Client:

yum install php php-cli php-common php-process php-pdo php-pear httpd

pear install HTTP_Client

Llegados a este punto, se descarga MonAST:

cd /opt

wget http://sourceforge.net/projects/monast/files/Monast%20for%20Asterisk%201...

Se descomprime:

tar -xf monast-3.0b4.tar.gz

Se entra en la carpeta creada:

cd monast-3.0b4

Se ejecuta el archivo de instalación:

./install.sh

Captura

Se selecciona la carpeta donde se instalará el programa y la parte web del programa. Como se puede ver en la imagen, el archivo de configuración se instalará en la carpeta /etc y se instalará también el demonio del programa en la carpeta /etc/init.d

Ahora lo único que hace falta es configurar el programa. Se abre el archivo de configuración:

nano /etc/monast.conf

Para empezar se modifica esta línea:

auth_required = false

para que quede:

auth_required = true

De esta forma para acceder a la pagina Web del panel de control, el sistema pedirá de autenticarse con nombre de usuario y contraseña que se definen al final de este archivo:

Se configura el primer servidor Asterisk, modificando este bloque:

[server: Server_1] # Server name can not contains space
hostname = 192.168.0.1
hostport = 5038
username = ami_username
password = ami_password

De forma que quede:

[server: VozToVoice]
hostname = IPAsterisk 
hostport = 5038
username = monast
password = sesamo

  • server: nombre que se quiere asignar al servidor
  • hostname: IP donde se encuentra Asterisk
  • hostport: puerto para conectarse a la AMI de Asterisk
  • username: usuario configurado en el manager.conf de Asterisk
  • password: contraseña del usuario configurado en el manager.conf de Asterisk

En:

default_context = default

Se pone el nombre del contexto que se ha configurado para las extensiones

En:

transfer_context = default

Se pone el contexto para la transferencia de las llamadas

En:

meetme_context = default
meetme_prefix  = monast-

Se pone el contexto configurado para las conferencias y, si se quiere, un prefijo para la conferencias creadas desde MonAst.

Luego, si se quiere se añade un segundo servidor siguiendo las pautas para la configuración del primero. Al final del archivo se definen los usuarios que tienen acceso a la parte web. Para cada usuario se define nombre, contraseña, los permisos y los servidores a los que puede acceder. Un ejemplo:

[user: admin]
secret  = sesamo
roles   = originate,queue,command,spy
servers = ALL

Los permisos:

  • originate: el usuario puede originar, transferir, parquear y colgar las llamadas
  • queue: el usuario puede añadir, quitar, meter en pausa los agentes de una cola
  • command: el usuario puede ejecutar comandos de la consola de Asterisk
  • spy: el usuario puede espiar los canales activos

Se guardan los cambios y se configura el manager.conf de Asterisk:

nano /etc/asterisk/manager.conf

se modifica esta línea:

enabled = no

Para que quede:

enabled = yes

y al final del archivo se añade el usuario configurado en el MonAst:

[monast]
secret=sesamo
writetimeout=100
read=system,call,log,verbose,command,agent,user,config,originate,reporting
write=system,call,log,verbose,command,agent,user,config,originate,reporting

Se guardan los cambios y se reinicia Asterisk.

service asterisk restart

Se inicia el servidor Web:

service httpd start

Se vuelve a la carpeta /opt/monast y se inicia el programa:

./monast.py

Si no aparecen errores significa que el programa se ha conectado correctamente al AMI de Asterisk. Se abre un navegador web y se pone la dirección IP del servidor WEB:

http://IPservidorWeb

Captura

Nos autenticamos con nombre de usuario y contraseña definidos en el archivo monast.conf:

Captura

Los menú disponibles:

Captura

Las extensiones/troncales configuradas con las llamadas activas.

Si se quiere personalizar el output del panel Web, se modifica el archivo:

nano /var/www/html/lib/config.php

Una vez que tenemos certeza que el programa funciona bien, se sale de la consola de MonAst con CTRL-C y se inicia el demonio:

/etc/init.d/monast start

Por ahora es todo.

Comentarios

Esta muy bueno eso Pero a la hora de instalar
pear install HTTP_Client
me da este error
[root@dpgtsrv-cnx monast]# pear install HTTP_Client
No releases available for package "pear.php.net/HTTP_Client"
install failed

con todo eso seguí y todo proseguía de maravilla hasta el paso de poner la direccion ip en un navegador web pues la pagina no sale y el monast se conecta bien al AMI de asterisk
que puede ser

Hola,

acabo de realizar una nueva instalación y me ha pasado lo mismo.

Lo he solucionado de la siguiente manera:

peer search HTTP_Client

de esta forma se actualiza la base de datos de pear. Luego:

pear instll HTTP_Client

Saludos

Pude instalar todo sin ningún problema, pero cuando ingreso al link de la pagina me pide usuario y contraseña, le doy el que esta en el monast.conf y se queda autenticando pero no entra.

Que puede estar sucediendo...?

Gracias

Hola pudiste solucionar el problema? yo tengo el mismo problema y no encuentro solucion todavia.

Muchas gracias.
saludos.

Hola,

cuando activas el programa con ./monast e intentas conectarte, que te aparece en la consola?

Debería estar presente algún error.

Me cuentas.

Saludos

Hola, ya solucioné el problema, lo que sucedía era que en mi centos 6.5, estaba activo el SELINUX, una vez desactivado se solucionó el problema.

Saludos.

Cordial saludo.
Mi duda es la siguiente, logre instalar y configurar el monast , entre en le pero no me salen los usuarios sip ni troncales ni nada, como hago para configurarlo para personalizarlos.
gracias.

Hola Andrea como estas

has logrado hacerlo funcionar en asterisk 11??

Saludos Cordiales

Hola Cesar,

si me ha funcionado en Asterisk 11.

Ves algún error?

Saludos

Hola Andrea, 

definitivamente con asterisk 11.25.3 y Centos 6.9 no he logrado q funcione, al iniciar el ejecutable sale este error en la consola

 

./monast.py
[Fri Apr 27 19:25:14 2018] NOTICE   :: Initializing Monast AMI Interface...
[Fri Apr 27 19:25:14 2018] NOTICE   :: Parsing config file /etc/monast.conf
[Fri Apr 27 19:25:14 2018] ERROR    :: Username admin has errors in config file!

esta es la linea del bloque de usuario

[user: admin]
secret = 10203040
roles = originate,queue,command,spy
servers = ALL

en la web aparece error 500 y en el log de httpd aparece

[Fri Apr 27 19:23:51 2018] [error] [client 192.168.157.2] PHP Warning:  require_once(HTTP/Client.php): failed to open stream: No such file or directory in /var/www/html/monast/lib/util.php on line 31
[Fri Apr 27 19:23:51 2018] [error] [client 192.168.157.2] PHP Fatal error:  require_once(): Failed opening required 'HTTP/Client.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/monast/lib/util.php on line 31
 

no se que mas revisar.

gracias de antemano

Hola andrea, 

ya no me saca el error en la consola.

[root@HJT-PBX01 monast]# ./monast.py
[Sat Apr 28 15:42:39 2018] NOTICE   :: Initializing Monast AMI Interface...
[Sat Apr 28 15:42:39 2018] NOTICE   :: Parsing config file /etc/monast.conf
[Sat Apr 28 15:42:39 2018] NOTICE   :: Server Hotel :: AMI Connected...

sin embargo el error en log de httpd y en la web siguen siendo los mismos, 

seguire intentando

ya me funciono andrea.

era que no habia instalado el pear http (bah)

Saludos

Hola que tal Admin, buenos dias, tengo un enorme problema y la verdad soy junior en esto no se como resolverlo ya intente de varios modos, instalo todo, ejecuto sin errores, pero al momento que ejecuto el navegador con la direccion de mi servidor de MonAst me dice que mi pagina no funciona mas sin embargo si esta ese es el unico problema el error 500 al visualizar la pagina de Monast quisiera saber si te ha pasado algo similar o alguien lo ha resuelto....Mil Gracias

Hola Humberto,

yo lo sigo utilizando en CentOS 6 con Asterisk 13.X sin problemas... quizás, como no se ha actualizado desde hace rato (2011), puede ser que no funcione correctamente en CentOS 7.

Me cuentas...

Saludos

Hola Andrea.

tu puedes usar MonAsT con asterisk 13 y pjsip, lo pregunto porque tengo entedido q monast usar la visualizacion de peers (lo que supondria que usaba chan_sip para ver el estado) o tal ves este equivocado

Saludos Cordiales

EL problema en centos 7 esta en el pear php se requiere la version 1.10.1 o superior, el saca este error

pear install HTTP_Client
WARNING: "pear/HTTP_Client" is deprecated in favor of "pear/HTTP_Request2"
WARNING: channel "pear.php.net" has updated its protocols, use "pear channel-update pear.php.net" to update
WARNING: "pear/HTTP_Request" is deprecated in favor of "pear/HTTP_Request2"
WARNING: "pear/Net_URL" is deprecated in favor of "pear/Net_URL2"
pear/Net_Socket requires PEAR Installer (version >= 1.10.1), installed version is 1.9.4
pear/HTTP_Request requires package "pear/Net_Socket" (version >= 1.0.7)
pear/HTTP_Client requires package "pear/HTTP_Request" (version >= 1.4.0)
No valid packages found
install failed

se soluciona facil instalando pear desde los repositorios de remi

wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm

pear install HTTP_Client
pear install Net_Socket

solucionado, voy a probar si los peers se ven.. estare comentandoles

lo que me temia.

monast aun no es funcional con pjsip, el desarrollador del panel al parecer esta trabajando en ello, toca estar pendiente. el panel me parece excelente pero muere en asterisk 11 o sirve en 13 pero con chan_sip ya lo probe por encima y al menos si ve los peers