Sistema de administración y monitoreo de equipos Christian Sulluchuco Abarca Robert Ruiz Reyes David Rodríguez Condenzo RESUMEN El presente proyecto trata acerca del monitoreo de equipos de red a través del uso de la tecnología Java y el protocolo SNMP. La utilización de estas tecnologías dieron como resultado el desarrollo de un sistema de administración de equipos de red muy funcional y robusto, ya que se aprovecharon al máximo todas las bondades que el protocolo SNMP brinda en cuanto al monitoreo de equipos así como la gran aceptación que este protocolo tiene entre los fabricantes de equipos de red. ABSTRACT 36 The present project treats about of the monitoring of network devices across the Java technology and the SNMP protocol. The use of theses technologies gave like proved a Network Management System robust and very functional, taking advantage to the maximum of all the kindness that the SNMP protocol offers for the monitoring as well as the great acceptance that this protocol has between manufactures and network equipment. PALABRAS CLAVES SNMP, Java, Hosts JCSnmp, OpenSource, Agentes, J2SE5 Este protocolo SNMP permite la administración de los equipos de la red, de cualquier fabricante, siempre y cuando dichos equipos lo soporten. Actualmente, los fabricantes han adoptado a SNMP como el protocolo estándar para la administración de sus equipos, el cual permite obtener información sobre la configuración y operación de una gran variedad de equipos de red. SNMP proporciona un método de administración de concentradores, routers, bridges y equipos de servidor o estación de trabajo. Toda la administración se lleva a cabo desde un equipo central donde se ejecuta un software denominado administración de redes. SISTEMA DE ADMINISTRACIÓN Y MONITOREO DE EQUIPOS (JCSnmp2) JCSnmp2 es un software desarrollado para ejecutarse en una arquitectura Web, está escrito en el lenguaje de programación Java y permite la administración de equipos de red mediante el protocolo SNMP. JCSnmp2 integra una serie de proyectos OpenSource3 basados en la tecnología Java. El software proporciona como resultado final una interfase intuitiva para la administración y monitoreo de los equipos de la red, además de ser muy funcional, lo cual permite al administrador de la red ejecutar la mayoría de sus labores. INTRODUCCIÓN En la actualidad la administración y monitoreo de equipos de una red son tareas esenciales para todo administrador de red. Por lo tanto es necesario que esta persona disponga de las herramientas necesarias que le ayuden en sus labores de administración. En la búsqueda de herramientas que permitan realizar estas tareas se evaluaron varios programas como HP Openview, MRTG, entre otros. Algunos de estos programas se caracterizan por su costo elevado y otros por su relativa funcionalidad limitada. Por ello, se tomó la decisión de desarrollar un software llamado JCSnmp2, el cual trata de satisfacer estas necesidades utilizando para ello el protocolo SNMP. SISTEMA DE ADMINISTRACIÓN Y MONITOREO DE EQUIPOS Asimismo, JCSnmp2 está diseñado para que sea de fácil interacción y rápido entendimiento en cuanto a las funciones que proporciona. JCSnmp2 permite al usuario recolectar información de los agentes4 que considere importante para luego almacenarlos en una base datos, después generar gráficos y reportes estadísticos en HTML cuando el usuario lo desee. JCSnmp2 es capaz de guardar una serie de valores que se producen como resultado de la obtención periódica de información de los agentes, de este modo se puede conservar un historial del comportamiento de los equipos para un posterior análisis. Otra característica importante de JCSnmp2 es que permite hacer un seguimiento Para realizar el proyecto se utilizaron las siguientes librerías y herramientas de desarrollo: Apache Jakarta Tomcat es un proyecto de Software Libre de la fundación Apache. Tomcat es un contenedor de Servlets y JSP creado a partir de un código donado por SUN Microsystems a la Apache Software Foundation. Tomcat ha crecido hasta convertirse en la implementación oficial de referencia de Servlets y JSP sustituyendo a la implementación de SUN original. Esto lo convierte en el contenedor sobre el que todos los demás prueban su adhesión a las especificaciones J2SE5. Protocolo SNMP MySQL periódico del consumo de ancho de banda de un equipo específico. Asimismo, para la generación de graficas, JCSnmp2 hace uso de la librería JFreeChart, para lo concerniente a reportes en HTML. LIBRERÍAS Y TECNOLOGÍA USADAS Simple Network Management Protocol (SNMP) o protocolo simple de gestión de redes, es el protocolo de administración utilizado por el Sistema desarrollado. SNMP proporciona un método de administración de host1 de redes como concentradores, bridges, enrutadores, impresoras y equipos de servidor o estaciones de trabajo desde un equipo central que ejecuta un software de administración de redes. SNMP define un protocolo de bajo nivel que proporciona tres operaciones básicas: • Consultar, permite obtener un valor de una variable. • Actualizar, permite almacenar un valor dentro de una variable. • Notificar, permite generar alertas de eventos detectados en el sistema del host1 administrado. En la actualidad existen tres versiones del protocolo SNMP. La utilizada en el proyecto es la versión 1 por ser la más difundida y por existir más información disponible. Tomcat • Fabricante : • Versión : • Web : The Apache Software Foundation 5.5.4 http://jakarta.apache.org/tomcat/ • Fabricante : • Versión : • Web : MySQL AB 4.1.7 http://www.mysql.com MySQL es la base de datos Open Source más popular y de mayor crecimiento en la industria de Base de Datos. Está basada en su dedicación de proveer una solución que no sea complicada, reduciendo de este modo el TCO (Total Cost OwnerShip). MySQL ofrece las siguientes ventajas claves: • Confiabilidad y performance. • Fácil de usar. • Provee acceso al código fuente. • Soporte Multiplataforma. • Millones de desarrolladores entrenados y capacitados. 37 JAVA • Fabricante : • Versión : • Web : Sun Mycrosystems J2SE5 http://java.sun.com JCSnmp2 está escrito en su totalidad en código Java y para elaborar el proyecto se utilizó el J2SE5 con el cual se implementó la lógica de la aplicación. Una de las principales razones por las cuales fue desarrollado en dicho Figura 1 - El Administrador SNMP solicita a los agentes SNMP de los equipos administrados información de estados. SISTEMA DE ADMINISTRACIÓN Y MONITOREO DE EQUIPOS lenguaje fue su robustez y su capacidad de ser multipla- Struts permite desarrollar aplicaciones basándose en el taforma. modelo 2, el cual es una variación del paradigma de diseño MVC (Model View Controller). Java Snmp Package • Fabricante : Jonathan Sevy Struts provee su propio componente Controlador (Con- • Versión : 1.3 troller) y se integra con otras tecnologías para proveer el • Web : http://gicl.cs.drexel.edu/people/ Modelo (Model) y la Vista(View). Para el Modelo (Model), sevy/snmp/snmp_package.html Struts puede interactuar con tecnologías de acceso a da- Java Snmp Package es una implementación Open Source del protocolo SNMP que permite usarlo como un paquete en java. Esta librería provee soporte para operaciones básicas del cliente y agente SNMP definidas en las versiones 1 y 2 del protocolo SNMP. Este paquete provee un mecanismo para realizar operaciones “getting and setting” de los valores de los OIDs tos como JDBC y EJB, así como con librerías de terceros, como Hibernate, Batis y otros. Para la Vista (View), Struts trabaja bien con JavaServer Pages, incluyendo JSTL y JSF, así como con Plantillas de Velocity, XSLT y otros sistemas de presentación. El uso de esta librería en el proyecto se debió a que provee un patrón de desarrollo en cuanto a aplicacio- a través de una interface de comunicación y permite nes web que permite que estas tengan una estructura representar las estructuras de los objetos SNMP en los ordenada. objetos java equivalentes. DISEÑO LÓGICO JfreeChart 38 • Fabricante : JFree En el diseño de JCSnmp2 se tuvieron en cuenta varios pa- • Versión : 0.9.20 trones de diseño usados en aplicaciones J2EE5: • Web : http://www.jfree.org/jfreechart/ • Acceso a datos a los Agentes SNMP, esta capa le JfreeChart es una librería OpenSource de clases java que permite a la aplicación obtener información de los permiten la generación de gráficas, con la cual se pueden agentes SNMP instalados en los equipos administra- generar los siguientes tipos de gráficas: dos. Las clases de esta capa se conectan mediante • pie charts (2D and 3D); el protocolo UDP a los agentes SNMP de los equipos • bar charts (regular and stacked, with an optional 3D administrados. effect); • line and area charts; • scatter plots and bubble charts; • time series, high/low/open/close charts and candle stick charts; • combination charts; • Pareto charts; • Acceso a datos a la Base de Datos, esta capa le permite a la aplicación guardar, consultar y eliminar información en la base de datos MySQL. • Fachada (Facade), esta capa contiene toda la lógica de la aplicación, comunicándose directamente con las • Gantt charts; • wind plots, meter charts and symbol charts; • wafer map charts; capas de acceso a datos a los agentes SNMP y a la Base de Datos y la capa Controladora. • Controlador, esta capa permite la interacción entre la Struts • Fabricante : Apache Software Foundation vista y la capa de Fachada. Se encarga asimismo de de- • Versión : 1.2.4 volver las vistas adecuadas a cada petición hecha por • Web : http://struts.apache.org/ el usuario. Struts es un proyecto de Software Apache Foundation • Vista, esta capa esta conformada por los archivos que provee un Framework Open Source para el desarrollo jsp y html que se encargan de mostrar información de aplicaciones web Java. al usuario. SISTEMA DE ADMINISTRACIÓN Y MONITOREO DE EQUIPOS 39 Figura 2 - Este diagrama de clases muestra cómo está formada la capa de Acceso a Datos (DAO) a los agentes SNMP. SISTEMA DE ADMINISTRACIÓN Y MONITOREO DE EQUIPOS 40 Figura 3 - Este diagrama muestra las clases que representan el modelo de datos del Sistema, con las cuales interactúan las capas de Acceso a Datos a los agentes SNMP y a la Base de Datos. SISTEMA DE ADMINISTRACIÓN Y MONITOREO DE EQUIPOS FUNCIONALIDAD JCSnmp2 presenta las siguientes funcionalidades: Interfaces, Hardware, Software y Servicios de Red: para así presentar la información al usuario de forma ordenada. Monitoreo FUNCIONAMIENTO JCSnmp2 permite monitorear los equipos mediante una IP específica, un rango de IPs o una red IP. El monitoreo de equipos permite obtener toda la información posible A continuación se muestra un diagrama en el cual se indica todo el proceso que hace JCSnmp2 para mostrar la 41 Figura 4 - Este diagrama muestra la forma en la cual trabaja el Sistema JCSnmp2. de los equipos a través del protocolo SNMP, esto implica: inventario de software y hardware, estadísticas de ancho de banda de las interfaces de red de los equipos e información de los servicios de red que ofrecen los equipos. información al usuario partiendo desde una petición hecha por el mismo. 1 El usuario a través de la interfaz gráfica hace un requerimiento de información del equipo. Estadísticas JCSnmp2 permite generar gráficas estadísticas del consumo del ancho de banda, de las interfaces de red de un equipo, a partir de la información obtenida del monitoreo previo, pudiendo, de esta forma, hacer un seguimiento de la actividad de las interfaces de red. Estas gráficas estadísticas están en función a un intervalo de tiempo que es definido por el administrador. Información JCSnmp2 guarda toda la información obtenida del monitoreo de los equipos en una Base de Datos, lo cual permite consultar la información de un equipo específico, en cualquier momento, sin necesidad de volver a realizar un monitoreo a menos que esto sea requerido, haciendo de este modo más eficiente la obtención de información. JCSnmp2 clasifica la información de los equipos en los siguientes grupos: SISTEMA DE ADMINISTRACIÓN Y MONITOREO DE EQUIPOS Figura 5 - Desde esta pantalla el usuario indica el rango de IP’s que desea monitorear. 2 JCSnmp2 a través de Java Package SNMP realiza una conexión UDP al puerto 161 de los equipos administrados y realiza la operación GET REQUEST a un objeto del agente SNMP para solicitar información. 3 El agente SNMP, instalado en el equipo administrado, retorna el valor de dicho objeto. 4 La información es almacenada en una Base de Datos. 5 El sistema muestra los resultados obtenidos en una página web. CONCLUSIONES Después de haber concluido satisfactoriamente el proyecto, se llegó a las siguientes conclusiones: • Al desarrollar el sistema se encontró que el protocolo SNMP es limitado en cuanto a la información que puede obtener de una PC, lo que es entendible pues inicialmente fue diseñado para el monitoreo de redes. Figura 6 - Esta pantalla muestra la lista de equipos encontrados por el sistema. 6 El sistema puede generar gráficas estadísticas del consumo del ancho de banda de un equipo específico, de ser así el sistema mediante las librerías de JfreeChart genera las gráficas de línea de tiempo que indican el consumo del ancho de banda del equipo. 42 • El análisis del sistema tomó bastante tiempo, ya que se debían definir bien las funcionalidades que debía tener en atención a los programas evaluados. • El desarrollo de este proyecto sirvió de mucho para entender y conocer la complejidad que implica el desarrollo de un software de monitoreo de redes. Figura 7 - Esta pantalla muestra las interfaces de red del equipo administrado que el sistema encontró. 7 Finalmente las gráficas son presentadas al usuario a través de una página web. • El uso de gráficas estadísticas hace más comprensible y rápida la lectura de los datos. Figura 8 - Esta pantalla muestra una grafica de la evolución del consumo de ancho de banda del equipo. SISTEMA DE ADMINISTRACIÓN Y MONITOREO DE EQUIPOS • En la actualidad, las aplicaciones, más allá de lograr una gran funcionalidad, deben de preocuparse también por desarrollar una interfaz gráfica que sea intuitiva y fácil de interactuar con el usuario final; en el desarrollo de JCSnmp2 se tuvo muy en cuenta este detalle. REFERENCIAS BIBLIOGRÁFICAS Para desarrollar el proyecto se tuvieron en cuenta varios documentos los cuales se encuentran en las siguientes direcciones web: SNMP • Understanding Simple Network Management Protocol (SNMP) Traps. Se consigue en URL: http://www.cisco.com/en/US/tech/tk648/tk362/technologies_tech_note09186a0080094aa5.shtml • MIB User Quick Reference. Se consigue en URL: http://www.cisco.com/univercd/cc/td/doc/product/ software/ios11/mbook/mtext.htm • http://www.akcpinc.com/company/nms.htm • MIB Resources. Se consigue en URL: http://www.somix.com/support/mib_resources.php • AS1 Site – Tools – Repository. Se consigue en URL: http://asn1.elibel.tm.fr/cgi-bin/oid/display?oid=1.3.6. 1.2.1&action=display • SIMPLE NETWORK MANAGAMENT PROTOCOL – Wikipedia. Se consigue en URL: http://es.wikipedia.org/wiki/SNMP • RFC 1213. Se consigue en URL: http://www.ietf.org/rfc/rfc1213.txt JAVA • • JFreeChart. Se consigue en URL: http://www.jfree.org/jfreechart/ Chart a new course with JFreeChart. Se consigue en URL: http://www.javaworld.com/javaworld/jw-12-2002/jw1227-opensourceprofile.html • Gráficas en Java con JFreeChart. Se consigue en URL: http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=jfreechart • Java SNMP Package. Se consigue en URL: http://gicl.cs.drexel.edu/people/sevy/snmp/ • Java SNMP Package Introduction. Se consigue en URL: http://gicl.cs.drexel.edu/people/sevy/snmp/snmp_ package_introduction.html 43 SISTEMA DE ADMINISTRACIÓN Y MONITOREO DE EQUIPOS