Este es un agente básico que puede monitorizar diversos parámetros de un sistema que responda a preguntas en el protocolo SNMP. Ha sido probado contra diferentes dispositivos como servidores corriendo sistemas operativos de MicroSoft, Linux, HP-UX o Solaris y contra elementos de red como routers, switches o puntos de acceso. Puede hablar con cualquier dispositivo que cuente con un agente snmp V1 o snmp V2c.
Este agente ha sido desarrollado usando las funcionalidades y mejoras del framework de Osmius y de las librerías de ACE como todos los demás , por tanto se hace necesaria la instalación de las librerías de ACE para la correcta instalación y funcionamiento. Más en el capítulo de instalación.
Además en este caso necesitamos las librerías para acceso a SNMP de Net-SNMP.
El agente SNMPGET1 proporciona varios eventos básicos y otros extendidos con parámetros de configuración (como el oid a recuperar) 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.
El código para realizar este agente se ha utilizado para construir un interfaz para que los usuarios puedan crearse eventos SNMP v1 y V2c a su antojo. Desde la consola web puede accederse a un cargador/navegador de MIBS y de esta forma, los usuarios o administradores puedan ahora monitorizar cualquier elemento SNMP, crear sus propios eventos y cargar las MIBs necesarias. Osmius cuenta además con un agente para la recepción de Traps de SNMP y la incorporación de los traps recibidos al flujo de eventos a tratar.
Todos los eventos son remotos, y por tanto NO intrusivos, es decir, se pueden monitorizar desde fuera de la instancia a interrogar. Los eventos están basados algunos en las versión 1 y 2 (2c) del protocolo SNMP.
Aquí encontraréis una buena guía de programación SNMP.
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 SNMP el connection_info está compuesto por varios parámetros:
CONNECTION_INFO= [-N nodename] [-K community_name] [-P port]
Todas las instancias pueden llevar estos tres parámetros que se utilizarán como valores por defecto en caso de haber eventos de usuario que utilicen el Interfaz SNMP
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 este caso:
TYPE= SNMPGET1
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 | tsegundos | w | a | Parámetros extra / Observaciones |
|---|---|---|---|---|---|---|
| SNSYSDES | Recupera la descripción del Sistema SNMP y comprueba disponibilidad | 0 | 600 | 1 | 1 | [-Q timeout] [-V 1,2] Modo silencioso ( -s) recomendado |
| SNSYSUPT | Tiempo en segundos desde que se levantó el Sistema SNMP | 1 | 600 | 60 | 30 | [-Q timeout] [-V 1,2] Modo silencioso ( -s) recomendado |
| SNSYSNAM | Recupera el nombre del Sistema SNMP | 0 | 600 | 1 | 1 | [-Q timeout] [-V 1,2] Modo silencioso ( -s) recomendado |
| SNSYSLOC | Recupera la localización del Sistema SNMP | 0 | 600 | 1 | 1 | [-Q timeout] [-V 1,2] Modo silencioso ( -s) recomendado |
| SNSYSCON | Recupera el contacto del Sistema SNMP | 0 | 600 | 1 | 1 | [-Q timeout] [-V 1,2] Modo silencioso ( -s) recomendado |
| SNUS0001 a SNUS0009 | Son eventos de usuario que recuperan el iod pasado en el parámetro. | 0 | 600 | 1 | 1 | -O “oid_a_recuperar” [-N nodename] [-K community_name] [-P port] [-Q timeout] [-V 1,2] |
El evento SNSYSDES devolverá el texto que tenga el dispositivo snmp asociado para la Descripción del Sistema. El “oid ” utilizado es:
.iso.org.dod.internet.mgmt.mib-2.system.sysDescr.0
Valores devueltos:
| VALOR | SIGNIFICADO |
| -1 | Error |
| 0 | Fallo al recuperar el valor |
| 1 | Valor recuperado correctamente |
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:
SNSYSDES = -t 300 -c 1 -w 0 -a 0 -T "Snmp system description"
Observaciones:
En el texto asociado al evento se devolverá valor del parámetro snmp como esté configurado en el dispositivo.
Este evento usa las librerías de Net-SNMP.
El evento SNSYSNAM devolverá el texto que tenga el dispositivo snmp asociado para el Nombre del Sistema. El “oid ” utilizado es:
.iso.org.dod.internet.mgmt.mib-2.system.sysName.0
Valores devueltos:
| VALOR | SIGNIFICADO |
| -1 | Error |
| 0 | Fallo al recuperar el valor |
| 1 | Valor recuperado correctamente |
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:
SNSYSNAM = -t 300 -c 1 -w 0 -a 0 -T "Snmp system name"
Observaciones:
En el texto asociado al evento se devolverá valor del parámetro snmp como esté configurado en el dispositivo.
Este evento usa las librerías de Net-SNMP.
El evento SNSYSUPT devolverá el número de ticks desde que el sistema se levantó por última vez. El “oid ” utilizado es:
.iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.sysUpTimeInstance
Valores devueltos:
| VALOR | SIGNIFICADO |
| -1 | Error |
| N | Número de “timeticks” desde que se levantó el sistema |
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 | 600 |
| Umbral de alerta | 500 |
Ejemplo de parametrización:
SNSYSUPT = -t 300 -c 1 -w 600 -a 500 -T "System uptime in timeticks"
Observaciones: Este evento usa las librerías de Net-SNMP.
El evento SNSYSLOC devolverá el texto que tenga el dispositivo snmp asociado para la Localización del Sistema. El “oid ” utilizado es:
.iso.org.dod.internet.mgmt.mib-2.system.sysLocation.0
Valores devueltos:
| VALOR | SIGNIFICADO |
| -1 | Error |
| 0 | Fallo al recuperar el valor |
| 1 | Valor recuperado correctamente |
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:
SNSYSLOC = -t 300 -c 1 -w 0 -a 0 -T "Snmp system Location"
Observaciones:
En el texto asociado al evento se devolverá valor del parámetro snmp como esté configurado en el dispositivo.
Este evento usa las librerías de Net-SNMP.
El evento SNUS0001 devolverá el texto o el valor que tenga el dispositivo snmp asociado con el “iod” pasado como parámetro. Si el oid es de tipo numérico se devolverá el valor numérico. Si el oid es de tipo cadena se devolverá 1 en caso de recuperación correcta y la cadena en el texto del evento. En caso contrario devolverá 0.
Parámetros extra:
Este evento utiliza hasta cinco parámetros adicionales para cumplir su objetivo:
| PARÁMETRO | SIGNIFICADO | Obligatorio |
| -O | -O “oid”- oid a recuperar. Puedes probar antes a hacer un “snmpwalk -v1 -O f -c community target_IP” o “snmpget -v1 -c community -o oid target_IP. | Sí |
| -N | -L “nodename” - Se utilizará este “node name” en lugar del que hay en el CONNECTION_INFO de la instancia o el por defecto (nombre de máquina). | No |
| -K | -K “community” - Se utilizará este “community name” en lugar del que hay en el CONNECTION_INFO de la instancia o el por defecto (“public”). | No |
| -P | -P “port” - Se utilizará este puerto en lugar del que hay en el CONNECTION_INFO de la instancia o el por defecto (161). | No |
| -Q | -Q “timeout” - timeout en segundos para las operaciones snmp_get. Por defecto es 0, indefinido. | No |
| -V | -V “version” - Version del protocolo SNMP a utilizar. Valores posibles = [1, 2]. Por defecto es 2. | No |
Valores devueltos:
| VALOR | SIGNIFICADO |
| -1 | Error |
| 0 | Fallo al recuperar el valor |
| 1 | Valor tipo cadena recuperado correctamente |
| N | Valor numérico recuperado correctamente |
Parámetros recomendados:
| Tipo de comparación | Inversa o Directa. Dependerá del usuario y del parámetro recogido. |
| 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:
SNUS0001 = -t 300 -c 1 -w 0 -a 0 -T "Snmp system description" -O ".iso.org.dod.internet.mgmt.mib-2.system.sysDescr.0" -K secret_community -P 177 -Q 3 -V 1
Observaciones:
En el texto asociado al evento se devolverá valor del parámetro snmp como esté configurado en el dispositivo y si la variable oid es numérica se devolverá su valor.
Este evento usa las librerías de Net-SNMP.
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 este caso además debes tener en el sistema las librerías Net-SNMP (en Ubuntu “libsnmp”) que puedes encontrar aqui: http://net-snmp.sourceforge.net/ y en los repositorios de tu sistema operativo si es que los tiene.
Desde el directorio del agente usando la consola o terminal.
$ACE_ROOT/bin/mpc.pl -type gnuace osm_ag_snmp.mpc
gmake -f Makefile.Osm_Ag_Snmp_Osmius
Los binarios se instalarán automáticamente en el directorio bin del directorio base OSM_ROOT.
El agente de SNMPGET1 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 SNMPGET1 sin usar la consola de Osmius:
| osm_ag_SNMPGET1 -c osm_ag_SNMPGET1.ini -m MASTERAG -p 1950 -d [>> osm_ag_snmpget1.log]1) |
Pero normalmente será el agente maestro el encargado de ejecutarlo a no ser que lo hagamos en modo standalone (*) Ver más adelante.
Este agente de Osmius, 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 (osm_ag_AGENTE.ini) llamado SNDCMD, tal y como se muestra aquí.
Luego deberás de ejecutar el agente de Osmius poniendo el puerto de comunicaciones con el Agente Maestro a cero, por ejemplo:
| osm_ag_SNMPGET1 -c osm_ag_SNMPGET1.ini -m 00000000 -p 0 -d |
Pruebas realizadas al agente de Osmius para HP-UX.
| Fecha: | 21/11/2008 y 01/12/2009 | |
|---|---|---|
| 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 | N/A |
| Declarar 2 instancias, provocar la desconexión de una y después volver a conectarla | No se puede hacer esto en este agente | 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 RECONN |
| Eliminación del CONN_INFO de la instancia y comprobar que no arranca | OK | Las instancias de SNMPGET1 no necesitan información de conexión |