Este agente puede monitorizar diversos parámetros de un servidor Asterisk. Ha sido probado contra un Asterisk 1.4.17 corriendo sobre un sistema Ubuntu 8.04. Sin embargo es altamente recomendable comprobar su funcionalidad antes de implantarlo en un entorno de producción.
El agente de Asterisk ha sido desarrollado usando las funcionalidades y mejoras del framework de Osmius y de las librerías de ACE, por tanto se hace necesaria la instalación de las librerías de ACE para la correcta instalación y funcionamiento del agente de Osmius para Asterisk. Vea el capítulo de instalación.
El agente ASTERISK proporciona hasta cuatro eventos básicos con parámetros de configuración para permitir el escalado de una manera muy sencilla. Los eventos han sido seleccionados por el grupo de Investigación y Desarrollo de Osmius como los más interesantes para este primer desarrollo.
Todos los eventos son remotos, y están basados en el Asterisk Manager Interface (AMI). El agente comprueba la información devuelta por el servidor de Asterisk a través del AMI y elabora una respuesta. Comprueba que tu Asterisk dispone de AMI y que tienes un usuario y contraseña con privilegios de lectura y consulta.
Como norma general cada agente de Osmius puede monitorizar un tipo de instancia. Si no te resultan familiares estos conceptos consulta el glosario. Cada instancia se define individualmente en el fichero de configuración (si quieres ampliar esta información vete a agentes e instancias); dependiendo de cada agente hay que definir el tipo de instancia y dependiente de la instancia es la información de conexión.
El connection_info o información de conexión es la información que el agente necesita saber para conectarse a la instancia. (Mira un poco más sobre el connection_info)
En el caso del agente de Osmius para Asterisk el prototipo del connection_info sería:
CONNECTION_INFO= -i IP_SERVIDOR_ASTERISK -p PUERTO_AMI_ASTERISK -u USUARIO_ASTERISK -s SECRETO
Donde reemplazaremos en cada instancia declarada:
Un ejemplo podría ser:
CONNECTION_INFO= -i 192.168.15.46 -p 5038 -u usuario -s password
El type o tipo define el tipo de instancia que se va a monitorizar. Todas las instancias que se declaren deben de llevar asociado un tipo como puedes ver aquí
En el caso de Asterisk:
TYPE= ASTERISK
A continuación te mostramos de forma breve las capacidades de este agente, más abajo en esta misma página se describirá cada uno de los eventos de manera más detallada.
| EVENTO | DESCRIPCIÓN | c | w | a | tsegundos | Parámetros extra / Observaciones |
|---|---|---|---|---|---|---|
| AVAILABL | Disponibilidad de la conexión a Asterisk | 1 | 0 | 0 | 300 | Modo silencioso ( -s) recomendado |
| AKUPTIME | Tiempo de ejecución de Asterisk en segundos | 1 | 600 | 300 | 600 | Modo silencioso ( -s) recomendado |
| AKEXST00 | Estado de una extensión | 1 | 0 | -1 | 900 | -E extension -C contexto |
| AKMCNT00 | Contador de mensajes totales en Mailbox | 0 | 25 | 100 | 86400 | -E extension -C contexto |
Los eventos de información (Info Events) recuperar información genérica de la instancia que no suele variar con el tiempo. Este tipo de eventos carecen de criticidad, simplemente ofrecen detalles de la instancia.
| EVENTO | DESCRIPCIÓN | tsegundos | Observaciones |
|---|---|---|---|
| AKINFVER | Versión | 86400 (1 día) | Versión de Asterisk |
| AKINFDLP | Dialplan | 86400 (1 día) | Plan de llamadas de Asterisk |
| AKINFCHN | Channels | 86400 (1 día) | Información de los canales de Asterisk |
| AKINFCDC | Codecs | 86400 (1 día) | Codecs que dispone el servidor Asterisk |
| AKINFHNT | Pistas | 86400 (1 día) | Dialplan hints |
| AKINFMDL | Modules | 86400 (1 día) | Información de los módulos de Asterisk |
El evento AVAILABL comprueba si está disponible la conexión con el AMI de Asterisk, para ello intenta crear una nueva conexión, se autentica y espera la respuesta del servidor para verificar si se trata de un servidor de Asterisk o no.
Valores devueltos:
| VALOR | SIGNIFICADO |
| 1 | Disponible |
| 0 | No disponible |
| -1 | Error |
Parámetros recomendados:
| Tipo de comparación | Inversa. Cuanto más alto el valor menos crítico el estado (-c 1) |
| Intervalo de monitorización | 300 segundos – 1 hora –> depende de la importancia de la instancia |
| Umbral de warning | 0 |
| Umbral de alerta | 0 |
Ejemplo de parametrización:
AVAILABL = -t 300 -c 1 -w 0 -a 0 -T "disp Asterisk miempresa.net"
Observaciones: Este agente es capaz de conservar las conexiones y reutilizarlas, en lugar de estar creándolas y destruyéndolas a cada evento; excepto cuando detecta que el servidor no está disponible que se comportará de este último modo para detectar la disponibilidad positiva del servidor de Asterisk.
El evento AKUPTIME devolverá el tiempo medido en segundos que el servidor de Asterisk lleva funcionando de manera continuada desde el último reinicio.
Valores devueltos:
| VALOR | SIGNIFICADO |
| -1 | Error |
| X | Número de segundos |
Parámetros recomendados:
| Tipo de comparación | Inversa. Cuanto más alto el valor menos crítico el estado (-c 1) |
| Intervalo de monitorización | 300 segundos – 1 hora –> depende de la importancia de la instancia |
| Umbral de warning | Consulte con el administrador de Asterisk |
| Umbral de alerta | Consulte con el administrador de Asterisk |
Ejemplo de parametrización:
AKUPTIME = -t 600 -c 1 -w 600 -a 300 -T "asterisk002 uptime"
Observaciones: En el texto asociado al evento se devolverá el tiempo en formato fácilmente legible: [X] días [Y] horas [Z] minutos.
El evento AKEXST00 devolverá el estado en el que se encuentra una extensión telefónica del servidor Asterisk.
Parámetros extra:
Este evento necesita dos parámetros adicionales para cumplir su objetivo:
| PARÁMETRO | SIGNIFICADO | Obligatorio |
| -E | identificador de la extensión a monitorizar | Sí |
| -C | contexto al que pertenece la extensión | Sí |
Valores devueltos:
| VALOR | SIGNIFICADO |
| -2 | Extensión borrada |
| -1 | Error o Extensión no encontrada |
| 0 | Extensión detenida |
| 1 | Extensión en uso |
| 2 | Extensión ocupada |
| 4 | Extensión inalcanzable |
| 8 | Extensión timbrando |
Parámetros recomendados:
| Tipo de comparación | Inversa. Cuanto más alto el valor menos crítico el estado (-c 1) |
| Intervalo de monitorización | 600 segundos – 1 hora –> depende de la importancia de la extensión |
| Umbral de warning | 0 |
| Umbral de alerta | -1 |
Ejemplo de parametrización:
AKEXST00 = -t 600 -c 1 -w 0 -a -1 -T "extension del jefe" -E 9000 -C default
Observaciones: Puedes declarar hasta 100 eventos de este tipo, para ello basta con que cambies los dos últimos números por otros; es decir podrías declarar AKEXST00, AKEXST01, AKEXST02 … AKEXST99. De esta forma podrías monitorizar hasta 100 extensiones distintas.
El evento AKMCNT00 devolverá el número de mensajes existentes en un mailbox de Asterisk. El número de mensajes incluirá tanto los mensajes antiguos como los nuevos.
Parámetros extra:
Este evento necesita dos parámetros adicionales para cumplir su objetivo:
| PARÁMETRO | SIGNIFICADO | Obligatorio |
| -E | identificador del mailbox a monitorizar | Sí |
| -C | contexto al que pertenece el mailbox | Sí |
Valores devueltos:
| VALOR | SIGNIFICADO |
| -1 | Error |
| X | Número de mensajes en el mailbox |
Parámetros recomendados:
| Tipo de comparación | Directa. Cuanto más alto el valor más crítico el estado (-c 0) |
| Intervalo de monitorización | 600 segundos – 1 día –> depende de la importancia del mailbox |
| Umbral de warning | consulte al administrador de Asterisk |
| Umbral de alerta | consulte al administrador de Asterisk |
Ejemplo de parametrización:
AKMCNT00 = -t 86400 -c 0 -w 50 -a 100 -T "mailbox de recepcionista" -E 7000 -C default
Observaciones:
Puedes declarar hasta 100 eventos de este tipo, para ello basta con que cambies los dos últimos números por otros; es decir podrías declarar AKMCNT00, AKMCNT01, AKMCNT02 … AKMCNT99. De esta forma podrías monitorizar hasta 100 mailbox distintos.
En el texto asociado a este evento se detallará cuantos mensajes de los totales son nuevos y cuantos antiguos.
Para poder compilar este agente se necesitan una serie de requisitos previos, que son genéricos para la compilación de cualquier agente de Osmius, puedes consultar cuales son en requisitos previos.
En particular, para el agente de Osmius para Asterisk, asegúrate que el Asterisk Manager Interface (AMI) está disponible, accesible y que está funcionando adecuadamente. Debes de estar en posesión de un nombre de usuario y contraseña que permita la consulta y que tenga permisos de lectura en el AMI.
Desde el directorio del agente usando la consola o terminal.
Para Linux:
$ACE_ROOT/bin/mpc.pl -type make osm_ag_asterisk.mpc
Para HP-UX:
$ACE_ROOT/bin/mpc.pl -type gnuace osm_ag_asterisk.mpc
Para Linux:
make -f Makefile.Osm_Ag_Asterisk_Osmius
Para HP-UX:
gmake -f Makefile.Osm_Ag_Asterisk_Osmius
Los binarios se instalarán automáticamente en el directorio bin del directorio base OSM_ROOT.
El agente de Asterisk conserva las mismas características de ejecución del resto de los agentes que puedes consultar en la sección Arrancar y Parar agentes.
Para ejecutar el agente de Asterisk:
| osm_ag_ASTERISK[.exe]1) -c osm_ag_ASTERISK.ini -m MASTERAG -p 1950 -d [>> osm_ag_asterisk.log]2) |
El agente de Osmius para Asterisk, al igual que el resto de los agentes de Osmius, permite la ejecución en modo standalone. Esta opción puede resultar especialmente útil cuando se está desarrollando un nuevo agente o para realizar las pruebas de concepto de determinado agente.
Básicamente debes de añadir un nuevo valor al fichero de configuración del agente de Osmius para Asterisk (osm_ag_ASTERISK.ini) llamado SNDCMD, tal y como se muestra aquí.
Luego deberás de ejecutar el agente de Osmius para Asterisk poniendo el puerto de comunicaciones con el Agente Maestro a cero, por ejemplo:
| osm_ag_ASTERISK[.exe]3) -c osm_ag_ASTERISK.ini -m 00000000 -p 0 -d |
Pruebas realizadas al agente de Osmius para Asterisk.
| Realizadas por: | Manuel G. Fraga Castro | |
|---|---|---|
| Fecha: | 26/09/2008 | |
| Prueba | Resultado | Observaciones |
| Creación de una instancia con todos sus eventos en modo silencioso | OK | N/A |
| Creación de una instancia con todos sus eventos con texto personalizado | OK | N/A |
| Creación de una instancia con todos sus eventos pero sin texto personalizado | OK | N/A |
| Declaración de 3 instancias con todos sus eventos a 5 segundos y mantenerlo en ejecución durante 48 horas | OK | No hay pérdidas de memoria |
| Declarar 2 instancias, provocar la desconexión de una y después volver a conectarla | OK | N/A |
| Declarar 1 instancia y probar cada evento | OK | N/A |
| Eliminación de parámetro general y comprobar que no arranca | OK | Se ha borrado PORTCM |
| Eliminación del CONN_INFO de la instancia y comprobar que no arranca | OK | N/A |