IMPLEMENTACIÓN DE ZABBIX COMO HERRAMIENTA DE MONITORIZACIÓN DE INFRAESTRUTURA INFORMÁTICA DE LA COMPAÑÍA SANTINI SYSTEM GROUP LTDA. SANTIAGO MARTINEZ CLAVIJO GABRIEL NARVÁEZ SALAZAR UNIVERSIDAD SANTO TOMAS FACULTAD DE INGENIERÍA ELECTRÓNICA BOGOTA D. C. 2010 -1- IMPLEMENTACIÓN DE ZABBIX COMO HERRAMIENTA DE MONITORIZACIÓN DE INFRAESTRUTURA INFORMÁTICA DE LA COMPAÑÍA SANTINI SYSTEM GROUP LTDA. Monografía presentada como requisito para optar al título de Ingeniero Electrónico Director JAVIER PEREZ SANDOVAL Ingeniero Electrónico UNIVERSIDAD SANTO TOMAS FACULTAD DE INGENIERÍA ELECTRÓNICA BOGOTA D. C. 2010 -2- AUTORIDADES UNIVERSIDAD SANTO TOMAS RECTOR GENERAL PADRE JOSÉ ANTONIO BALAGUERA CEPEDA, O.P. VICERRECTOR ACADÉMICO GENERAL PADRE PEDRO JOSÉ DÍAZ CAMACHO, O.P. VICERRECTOR ADMINISTRATIVO FINANCIERO PADRE LUIS FRANCISCO SASTOQUE POVEDA, O.P. DECANO DIVISIÓN DE INGENIERÍAS PADRE VICENTE BECERRA REYES, O.P. DECANO ACADÉMICO FACULTAD INGENIERÍA ELECTRÓNICA ING. AGUSTO GUARÍN RODRÍGUEZ -3- NOTA DE ACEPTACIÓN El trabajo de grado titulado IMPLEMENTACIÓN DE ZABBIX COMO HERRAMIENTA DE MONITORIZACIÓN DE INFRAESTRUTURA INFORMÁTICA DE LA COMPAÑÍA SANTINI SYSTEM GROUP LTDA. COMO DOCUMENTO DE CULMINACIÓN DE PASANTÍA DESARROLLADA EN LA COMPAÑÍA SANTINI SYSTEM GROUP LTDA., presentado por Santiago Martínez Clavijo y Gabriel Narváez Salazar, ha sido aprobado por el director del mismo, Ing. JAVIER PEREZ SANDOVAL, para optar al título de INGENIERO ELECTRÓNICO, de acuerdo a lo estipulado por la facultad de Ingeniería Electrónica de la Universidad Santo Tomás. _____________________________________ ING. JAVIER PEREZ SANDOVAL Director -4- _______________________________ CESAR HUMBERTO ARIAS PABÓN Revisor Metodológico -5- TABLA DE CONTENIDO GLOSARIO RESUMEN INTRODUCCIÓN 1. PRELIMINARES 1.1 PLANTEAMIENTO DEL PROBLEMA 1.2 OBJETIVOS DEL PROYECTO 1.2.1 Objetivo General 1.2.2 Objetivos Específicos 1.3 JUSTIFICACIÓN 1.4 ALCANCE Y DELIMITACIÓN 2. CONTEXTO TEÓRICO. 2.1 PROTOCOLO SNMP, REDES SNMP y BASE DE DATOS MIB 2.2 SOFTWARE LIBRE 2.2.1 Proyecto GNU 2.2.2 Software Libre 2.2.3 Licencia GPL GNU 2.2.4 Sobre la licencia de Zabbix 2.3 UBUNTU 2.4 ZABBIX 2.5 MONITORIZACIÓN DE REDES 2.6 ¿POR QUÉ MONITORIZAR? 3. IMPLEMENTACIÓN: INSTALACIÓN DE SOFTWARE 3.1 INSTALACIÓN DE UBUNTU 3.2 INSTALACIÓN ZABBIX 3.2.1 Requerimientos de Hardware 3.2.2 Requerimientos de Software 3.2.3 Instalación de requisitos previos 3.2.4 Instalación Zabbix 3.2.4.1 Creación usuario zabbix 3.2.4.2 Descarga de fuentes 3.2.4.3 Creación del esquema 3.2.4.4 Configurar, compilar e instalar 3.2.4.5 Configuración post-instalación 3.2.4.6 Configuración scripts de inicio 3.2.5 Instalación front-end 3.2.5.1 Configuración PHP 3.2.5.2 Configuración interfaz Web 3.2.6 Probando Zabbix 3.3 INSTALACIÓN AGENTE ZABBIX EN WINDOWS 4. IMPLEMENTACIÓN: INTERFAZ WEB DE ZABBIX 4.1 CREACIÓN DE UN HOST 4.1.1 Agregando un Servidor en Windows Server como Host 4.1.2 Adición de Hosts Monitorizados Mediante Agentes SNMP 4.1.2.1 Instalación de paquete snmp para Ubuntu 4.1.2.2 Impresora en Red 4.1.2.3 Switch Cisco Catalyst 2960 4.1.2.4 Router Cisco 2801 4.2 CREACIÓN DE UN ÍTEM 4.3 CREACIÓN DE UN TRIGGER -6- Página 13 14 15 16 16 18 18 18 19 20 21 21 22 22 22 24 24 25 28 29 29 30 30 31 31 32 32 35 35 35 36 37 38 40 42 42 44 49 50 54 54 57 58 58 59 62 65 68 70 4.4 CREACIÓN GRÁFICAS 4.5 CREACIÓN MAPA 4.6 PLANTILLAS 4.7 CONFIGURACIÓN NOTIFICACIONES VÍA EMAIL 5. ANÁLISIS DOFA. 6. CONCLUSIONES. 7. REFERENCIAS Y BIBLIOGRAFÍA. ANEXOS -7- 72 79 84 86 94 95 96 97 LISTA DE FIGURAS Figura 1. Red SNMP. Figura 2. Mapa conceptual sobre software libre. Figura 3. Escritorio GNOME de GNU (a), Acerca de GNOME Desktop (b) Figura 4. Imagen de ZABBIX Figura 5. Instalación de Ubuntu, elección de idioma. Figura 6. Instalación de Ubuntu, zona horaria y distribución de teclado. Figura 7. Instalación de Ubuntu, administración espacio en disco y configuración de usuario. Figura 8. Instalación de Ubuntu, reporte de opciones escogidas y proceso de instalación . Figura 9. Comando de instalación de requisitos previos. Figura 10. Confirmación de instalación de requisitos previos. Figura 11. Descarga de los paquetes de instalación de software previo. Figura 12. Configuración de password para usuario root de la base de datos. Figura 13. Extracción de paquetes de instalación. Figura 14. Proceso 1 de instalación del software previo. Figura 15. Proceso 2 de instalación del software previo. Figura 16. Creación de usuario zabbix en Ubuntu. Figura 17. Descarga de los archivos fuentes para compilación de Zabbix. Figura 18. Extracción de los archivos descargados. Figura 19. Creación de base de datos y privilegios de usuario Zabbix. Figura 20. Actualización de usuario y contraseña. Figura 21. Actualización de políticas y privilegios. Figura 22. Activación de contraseña. Figura 23. Comandos de configuración bases de datos. Figura 24. Comando de configuración de las fuentes de instalación. Figura 25. Configuración Servidor, MySQL, cURL, Jabber, net-SNMP y agente Zabbix. Figura 26. Comando de compilación e instalación de fuentes de Zabbix. Figura 27. Configuración de puertos de Zabbix. Figura 28. Creación de directorio de almacenamiento de ficheros de configuración. Figura 29. Configuración de parámetros de conexión a BD de MySQL. Figura 30. Configuración de script de inicio. Figura 31. Edición de script de inicio para Servidor Zabbix. Figura 32. Edición de script de inicio para Agente Zabbix. Figura.33. Asignación de permisos a scripts de inicio de agente y servidor Zabbix. Figura 34. Inicio de Agente y Servidor Zabbix. Figura 35. Instalación de interfaz web de servidor Zabbix Figura 36. Edición 1 de archivo php.ini: date.timezone Figura 37. Edición 2 de archivo php.ini: memory_limit Figura 38. Edición 3 de archivo php.ini: upload_max_filesize Figura 39. Edición 4 de archivo php.ini: max_execution_time Figura 40. Reinicio de servidor apache. Figura 41. Ingreso a configuración de interfaz web en servidor local Figura 42. Aceptación de licencia Figura 43. Lista de chequeo de prerrequisitos. Figura 44. Configuración de conexión con base de datos. Figura 45. Configuración del puerto del servidor Zabbix. Figura 46. Resumen de la instalación. Figura 47. Archivo de configuración Figura 48. Guardando archivo zabbix.conf.php Figura 49. Ubicación del archivo guardado zabbix.conf.php -8- 21 23 26 28 30 30 31 31 32 33 33 33 34 34 35 35 35 36 36 36 37 37 37 37 38 38 39 39 39 40 40 41 41 42 42 42 43 43 44 44 44 45 45 46 46 47 47 48 48 Figura 50. Último paso de la Instalación. Figura 51. Finalización de la instalación de manera exitosa. Figura 52. Ingreso a interfaz web con usuario admin. Figura 53. Confirmación de instalación completa y correcta de ZABBIX en Ubuntu. Figura 54. Archivo comprimido, instalador agente Zabbix. Figura 55. Contenido de la carpeta win32, tres archivos ejecutables. Figura 56. Carpeta Zabbix creada en C:\ Figura 57. Carpeta Zabbix con archivos necesarios. Figura 58. Configuración de dirección IP de servidor. Figura 59. Configuración del hostname del equipo. Figura 60. Comando de instalación. Figura 61. Error después de ejecutar comando de instalación. Figura 62. Llamado a la ayuda del instalador. Figura 63. Listado de comandos para el instalador. Figura 64. Comando de instalación como servicio. Figura 65. Confirmación de instalación exitosa. Figura 66. Inicio de servicio Zabbix, servicio detenido (a), comando de activación (b) y servicio iniciado (c). Figura 67. Ventana de configuración, opción host Figura 68. Activación Host, selección(a), confirmación de activación (b). Figura 69. Ventana de configuración, creación Host Figura 70. Configuración Host. Figura 71. Listado de plantillas, Host Windows. Figura 72. Plantilla adicionada. Figura 73. Activación Host creado. Figura 74. Ventana de configuración, creación de Host servidor de Windows. Figura 75. Host Zeus activado. Figura 76. Comando de instalación SNMP. Figura 77. Interfaz web de la impresora, configuración TCP/IP. Figura 78. Interfaz web de la impresora, configuración de red. Figura 79. Comando, estado del SNMP. Figura 80. Ventana de configuración, creación de Host impresora Figura 81. Plantillas para Host impresora. Figura 82. Activación del Host Impresora. Figura 83. Selección de plantillas para Switch. Figura 84. SNMPstatus del switch Figura 85. SNMPwalk del switch. Figura 86. SNMPget del switch. Figura 87. Ventana configuración, creación de Host switch Figura 88. Listado de Items, selección de Item Uptime Figura 89. Configuración del Item Uptime. Figura 90. SNMPstatus del router. Figura 91. SNMPwalk del router. Figura 92. SNMPget del router. Figura 93. Ventana configuración, creación de Host router . Figura 94. Ventana configuración, hosts, opción crear Item. Figura 95. Ventana creación Item Uptime Figura 96. Listado de host con SNMP, todos activados. Figura 97. Menú Configuration -> Hosts para crear un ítem Figura 98. Opción Create Item Figura 99. Propiedades del Item creado -9- 48 49 49 50 50 50 51 51 51 51 52 52 52 53 53 53 54 54 55 55 56 56 57 57 58 58 58 59 60 60 61 61 62 62 63 63 63 64 64 65 65 65 66 67 67 67 67 68 68 69 Figura 100. Listado de Items, Item creado. Figura 101. Gráfica del Item Creado. Figura 102. Ventana de configuración, crear Trigger. Figura 103. Ventana configuración de Trigger. Figura 104. Ventana de creación. Figura 105. Listado de Triggers. Figura 106. Creación de gráficas en menú Configuration Figura 107. Configuración para creación de gráficas, selección ítem 1 para graficar Figura 108. Selección y configuración de ítem 2 para graficar Figura 109. Selección y configuración de ítem 3 para graficar. Figura 110. Confirmación de funcionamiento de gráfica WXP CPU Load creada Figura 111. Creación de carga para Host WXP_HOST. Figura 112. Pestaña Rendimiento del administrador de tareas de Windows Figura 113. Opción para observar las gráficas de monitorización en la interfaz web Figura 114. Gráfica de carga del procesador en el host WXP_HOST Figura 115. Gráfica de memoria libre disponible en el host WXP_HOST Figura 116. Resultados de la prueba de velocidad realizada en el Host Zabbix Server Figura 117. Gráfica de utilización de red en el host Zabbix Server Figura 118. Crear mapa en Zabbix Figura 119. Creación de elemento en el mapa Figura 120. Edición de parámetros de elemento creado en el mapa Figura 121. Selección de host correspondiente al elemento creado en el mapa Figura 122. Configuración final de elemento creado en el mapa Figura 123. Selección de host para elemento Impresora (NPI8F7D9F) agregado al mapa Figura 124. Configuración final de elemento impresora creado en el mapa Figura 125. Creación de link de conexión entre elementos del mapa Figura 126. Selección de elementos para creación de conexión entre estos. Figura 127. Creación de link de conexión entre host de Windows y servidor. Figura 128. Creación de link de conexión entre host dos servidores de la red. Figura 129. Visualización previa de los links creados para los elementos del mapa Figura 130. Mapa de monitorización de red informática de Santini System Group. Figura 131. Pagina de descarga de plantillas. Figura 132. Ventana de configuración, importar/exportar plantilla. Figura 133. Plantilla exitosamente importada. Figura 134. Plantilla importada seleccionada para Host. Figura 135. Ventana Administration, Media types. Figura 136. Configuración de medio. Figura 137. Activación elemento creado. Figura 138. Ventana Administration, users. Figura 139. Ventana configuración de usuario Admin. Figura 140. Adición de E-mail en configuración de usuario. Figura 141. Configuración completa de servicio de email en usuario admin. Figura 142. Ventana configuration, actions. Figura 143. Configuración de la acción que se va a crear. Figura 144. Acción de enviar mensaje email Figura 145. Selección usuario admin . Figura 146. Adición de la acción configurada Figura 147. Guardando acción creada. Figura 148. Aviso creación exitosa de la acción. Figura 149. Listado de eventos. Figura 150. Detalles del Trigger seleccionado. - 10 - 70 70 71 71 72 72 73 73 74 74 75 75 76 76 77 77 78 78 79 79 80 80 81 81 81 82 82 83 83 83 84 85 85 85 86 86 86 87 87 87 88 88 88 89 89 89 90 90 90 91 91 Figura 151. Bandeja de entrada correo electrónico corporativo. Figura 152. Correo de notificación de fallo de Inetd. Figura 153. Lista de eventos, error en POP3 Figura 154. Detalles de evento de error en POP3. Figura 155. Correo electrónico, notificación de fallo en POP3. - 11 - 91 92 92 92 92 LISTA DE TABLAS Tabla 1. Requerimientos de hardware en función del número de hosts Tabla 2. Requerimientos de software. - 12 - 32 32 GLOSARIO HOST: En zabbix, un host es una entidad lógica que define un elemento en red que se puede monitorear. Este puede ser una impresora, un switch, un router, un servidor, un computador, un portátil, entre otros. TRIGGER: Un Trigger en Zabbix es una entidad que define umbrales para la clasificación de Items, es decir si el Item de medición de nivel de tóner en una impresora monitoreada arroja un valor bajo, esto significa que el Trigger de tóner se debe disparar y pasar a un estado de alerta. De esta manera avisara que la tienta de la impresora esta por acabarse. ITEM: Un Ítem en Zabbix es una entidad que contiene la información de una medida específica obtenida. PLANTILLA: Una plantilla o Template es una entidad lógica prediseñada con diferentes Items, Triggers y aplicaciones con el fin de ser aplicadas en elementos que comparten los mismos parámetros de medición, por ejemplo la carga del procesador, uso de memoria y uso de recursos de red SNMP: El protocolo SNMP (Simple Network Management Protocol) o Protocolo Simple de Administración de Red, es un protocolo de gestión de red, es una solución de monitoreo bastante usada en elementos de bajo poder de procesamiento. SOFTWARE LIBRE: Es el software con el cual los usuarios pueden estudiar, modificar y mejorar su diseño mediante la asequibilidad de su código fuente, esta es la filosofía Open Source o software libre. MONITORIZAR: Consiste en observar, vigilar, tomar datos y analizar los resultados con el fin de realizar una retroalimentación que permita solucionar problemas eficazmente o mejor aún, anticiparse a ellos. AGENTE: Es una entidad de software instalada en el dispositivo monitorizado que provee información acerca del elemento. MIB (Management Information Base): Es una base de datos ó un conjunto de datos de la red almacenados jerárquicamente, para la administración de esta misma. Los objetos monitorizados pueden ser nombrados con nombres o con identificadores RECURSO: Es cualquier elemento de hardware o software que cuenta disponibilidad limitada en un sistema, por ejemplo recursos de red, memoria, espacio en disco duro. POP3: Es un protocolo estándar para recibir mensajes de e-mail. Entonces los mensajes enviados a un servidor, son depositados por el servidor pop3. Cuando el usuario se conecta con la dirección, el nombre de usuario y la contraseña puede descargar los archivos. SMTP: Simple Mail Transfer Protocol, Protocolo Simple de Transferencia de Correo, pertenece a la capa de aplicación. Basado en texto y utilizado para el intercambio de mensajes de correo electrónico entre dispositivos. - 13 - RESUMEN Zabbix es una herramienta de monitorización open source de libre distribución compatible con Unix y con las distribuciones de GNU/Linux. Este software está respaldado por una extensa lista de características que lo convierten en una gran solución que permite ayudar y apoyar las actividades de soporte de una dependencia enfocada a monitorizar estados de redes. Esta herramienta le brinda al ingeniero u operador, una serie de facilidades para llevar a cabo tareas de diagnóstico, prevención y control de los diferentes equipos que están conectados en una red, mejorando los tiempos de respuesta y garantizando mayor efectividad. Se llevó a cabo un proceso de familiarización, desarrollo y profundización en los conocimientos y habilidades para el manejo de la distribución de GNU/Linux patrocinada por la compañía Canonical Ltd., Ubuntu Desktop v10.04 LTS. El proceso de instalación del programa y los requerimientos del mismo se lograron sacar adelante gracias a la investigación realizada a través de la web en las comunidades de apoyo de software libre y en los distintos blogs y manuales y a sus autores y su gran espíritu de colaboración para con los usuarios que estamos iniciando contacto con las herramientas del software libre y su filosofía. Finalmente se realizó una tarea de profundización en el manejo de Zabbix, explorando todos sus aspectos y evaluando su funcionalidad, la exactitud y la veracidad de los datos medidos por el mismo. Esto lleva a un periodo de pruebas y experimentación en el cual se descubrieron problemas que se solucionaron mediante ensayos e investigación. De esta forma se estructuró y se implementó el modelo que se aplicó en las instalaciones de Santini System Group Ltda. que también puede ser adaptado a otros ambientes empresariales. - 14 - INTRODUCCIÓN Este documento se realizó con el fin de mostrar el proceso de implementación de Zabbix llevado a cabo durante una de las etapas de desarrollo de la práctica empresarial o pasantía hecha en la compañía Santini System Group Ltda. bajo la orientación del ingeniero Javier Pérez Sandoval como Gerente General como jefe y director para la monografía. Se presentará un resumen de las etapas del proceso de la implementación y los distintos problemas que surgieron así como las soluciones encontradas y aplicadas de manera exitosa. Se ilustrará el proceso de instalación tanto a nivel de los prerrequisitos de la herramienta como la instalación de ella misma. Además se explicarán los pasos a seguir para realizar la configuración, que permite utilizar de manera eficiente y correcta, de la interfaz web que brinda Zabbix para llevar a cabo su tarea principal de monitorización. Finalmente se expondrán las dificultades, obstáculos, soluciones a problemas y las conclusiones sobre los resultados obtenidos en la implementación de esta herramienta. - 15 - 1. PRELIMINARES 1.1. PLANTEAMIENTO DEL PROBLEMA SANTINI SYSTEM GROUP es una compañía Colombiana con 12 años de experiencia exitosa, orientada a la prestación de Servicios Informáticos y de Telecomunicaciones que cuenta con una importante cartera de clientes que respaldan su experiencia en el mercado y confirma su eficiencia operativa y calidad en el servicio. SANTINI SYSTEM GROUP además es una compañía sólida financieramente para respaldo de sus clientes y asociados, estando siempre actualizada en los procesos tecnológicos internos para permitir una mayor comunicación e integración de todos los procesos de servicio hacia los mismos clientes. Su operación está soportada en prácticas como ITIL, Gerencia de Proyectos, ISO 9000 e ISO 20000. El portafolio de SANTINI SYSTEM GROUP está compuesto por los siguientes servicios: • • • • • • • • • • • • • Actualizaciones Laboratorio de pruebas y reparaciones Brigadas de software Soporte HelpDesk Ingeniería de territorio Outsourcing de servicios IT Mantenimientos Migraciones Soluciones y soporte para redes y telecomunicaciones Seguridad perimetral Virtualización de servidores y equipos de escritorio Consultoría Interventoría Actualmente la compañía se está haciendo sólida en la prestación de servicios especializados hacia clientes orientados a necesidades específicas y soluciones de alto nivel de rendimiento, alta rentabilidad y que brinde garantías a largo plazo. Para llevar a cabo la ejecución de su operación, la compañía cuenta con una infraestructura informática que está compuesta por dispositivos como computadores de escritorio, computadores portátiles, switches, enrutadores, impresoras, firewalls, access points, teléfonos IP, hubs, servidores, entre otros. Surge como necesidad de esta infraestructura, la existencia de un equipo de operadores ó ingenieros que estén al tanto del correcto funcionamiento y del rendimiento de la misma, 24 horas diarias, 7 días a la semana. Sin embargo, se hace importante plantearse una situación hipotética (no por eso inviable) de alta probabilidad que se puede presentar en este escenario: supóngase por ejemplo que el equipo de soporte se encuentra en la sustentación de una propuesta para un contrato de grandes cifras y de repente llama su recepcionista, se ha caído uno de los servidores que estos administran y se requiere hacer un backup crítico antes del día inmediatamente siguiente. El equipo se desplaza de urgencia al centro de cómputo de la empresa para descubrir que simplemente algunos archivos de log han estado aumentado su tamaño considerablemente llenando el espacio en disco del servidor durante las últimas semanas. - 16 - Aunque suene como una situación sencilla, existen muchos ejemplos reales similares que le han sucedido a muchos administradores de IT. Esta situación no solo se puede evitar de manera sencilla, sino también a un bajo costo. - 17 - 1.2. OBJETIVOS 1.2.1. GENERAL Implementar Zabbix sobre una distribución de GNU/Linux como herramienta de monitorización de una infraestructura informática para analizar sus ventajas de operación y las dificultades presentadas en el proceso de instalación. 1.2.2. ESPECÍFICOS • • • • • • Adquirir habilidades con la instalación, manejo y configuración de Adquirir habilidades y la distribución Ubuntu 10.04 LTS de GNU/Linux. Comprobar la viabilidad de la instalación de la herramienta sobre la infraestructura de Santini. Analizar la eficacia y utilidad de Zabbix como solución de monitorización de la infraestructura. Conocer y analizar las características de Zabbix. Identificar y solucionar posibles problemas a la hora de realizar la implementación. Verificar la exactitud de los datos medidos por Zabbix respecto a los eventos reales que se monitorizan. - 18 - 1.3. JUSTIFICACIÓN La situación hipotética descrita en el numeral 1.1 Planteamiento del problema, se puede evitar y en dado caso solucionar de manera eficiente, cómoda y gratuita a través de una herramienta de monitorización de redes. ZABBIX además puede ser incluida en el portafolio de una compañía cuyo objeto social incluya brindar herramientas de red de gran utilidad y rentabilidad para ser distribuida de manera comercial gracias a las posibilidades que brinda su licencia GPL de GNU. De esta manera se escribe esta monografía para ilustrar y explicar el proceso completo de implementación de ZABBIX y ser presentada como requisito de finalización de pasantía para optar por el título de grado de ingeniero electrónico en la universidad Santo Tomás, sede Bogotá. - 19 - 1.4. ALCANCE Y DELIMITACIÓN Un software de monitorización con las características de Zabbix tiene la posibilidad de ser implementado en pequeñas, medianas y grandes empresas, exigiendo una configuración más robusta a nivel de memoria, espacio en disco y procesador en el servidor, en función del número de hosts y a sus parámetros y características proyectados a ser monitorizados. ZABBIX es un software de código abierto (open source) de distribución gratuita compatible con sistemas operativos Unix y GNU/Linux que permite de manera rentable y sencilla, ser utilizada como herramienta propia y sin ninguna restricción, como parte de un portafolio comercial de soluciones para redes gracias a su licencia GPL de GNU versión 2. A lo largo del documento se mostrarán y resaltarán los requisitos a nivel de hardware y de software que se necesitan para el correcto funcionamiento de la herramienta y los distintos inconvenientes que se pueden presentar. - 20 - 2. CONTEXTO TEÓRICO 2.1. Protocolo SNMP, Redes SNMP y Base de datos MIB. • PROTOCOLO SNMP: El protocolo SNMP (Simple Network Management Protocol) o Protocolo Simple de Administración de Red, es un protocolo de gestión de red, usado principalmente para monitorizar y controlar el estado de ciertos dispositivos conectados. SNMP se basa en un sistema de petición-respuesta y es una solución de monitorización comúnmente usada en elementos de bajo poder de procesamiento en donde no es viable instalar sistemas operativos y agentes ya que representarían una innecesaria pérdida de recursos. Estos elementos simplemente tienen instalados los agentes SNMP versión 1, 2 ó 3 (SNMPv1, v2 ó v3). Es usado comúnmente en Impresoras en red, Switches Routers y UPS’s. • RED SNMP: Una red SNMP está compuesta por 3 elementos principales: o o o • Recursos administrados: es un nodo en la red y corresponde a un agente, es un dispositivo monitorizado. Agentes: son entidades instaladas en el dispositivo monitorizado que provee información acerca del elemento. Sistemas de administración de red (NMS): estos crean una conexión y ejecutan aplicaciones de monitorización y control de los elementos conectados. MIB (Management Information Base): Es una base de datos ó un conjunto de datos de la red almacenados jerárquicamente, para la administración de esta misma. Los objetos monitorizados pueden ser nombrados con nombres o con identificadores Figura 1. Red SNMP. [1] - 21 - 2.2. SOFTWARE LIBRE Teniendo en cuenta la filosofía de libre distribución de Zabbix como recurso open source es importante incluir en el contenido de este documento un acercamiento a la filosofía del proyecto GNU, a su desarrollo del concepto sobre “software libre” y a los términos de la licencia bajo la cual se publicó ZABBIX. 2.2.1. Proyecto GNU El proyecto GNU es el desarrollo de un sistema operativo completo en su totalidad con software libre, compatible con la arquitectura Unix. El término GNU es un acrónimo recursivo de “GNU No es Unix (GNU’s Not Unix)”. [2] El Proyecto GNU, iniciado por Richard Stallman en el año 1983, se concibió como una forma de devolver el espíritu cooperativo que prevalecía en la comunidad computacional en sus primeros días; hacer la cooperación posible al eliminar los obstáculos impuestos por los dueños de software privativo. En los 80, casi todo el software era privativo, lo cual significa que tenía dueños que prohibían e impedían la cooperación entre usuarios. Esto hizo necesario el Proyecto GNU. Se analizaba que cada usuario de ordenadores necesitaba un sistema operativo, si no existe un sistema operativo libre, entonces no podían ni siquiera comenzar a usar su computadora sin recurrir a un software privativo. Así que el primer elemento en la agenda del software libre fue un sistema operativo libre. El proyecto se desarrolló como un sistema operativo compatible con Unix porque el diseño en general ya estaba probado y era portable, y porque la compatibilidad hacía fácil para los usuarios de Unix cambiar de Unix a GNU. Hacia los años 90 ya se habían escrito los componentes principales, excepto uno, el núcleo, es entonces cuando en 1991 Linus Torvalds programó un núcleo similar a Unix, Linux, y lo liberó como software libre en 1992. La combinación de Linux con el prácticamente completo sistema GNU formó un sistema operativo completo: el sistema GNU/Linux. Se estima que existen decenas de millones de personas que en la actualidad usan sistemas GNU/Linux, habitualmente mediante distribuciones como Slackware, Debian, Red Hat y Ubuntu, entre muchas otras. Sin embargo, un sistema operativo no es sólo el núcleo, sino que también incluye compiladores, editores, editores de texto, software de correo entre otras cosas; de esta forma, el proyecto GNU no se limitó y no se ha limitado a sistemas operativos ya que se pretende proporcionar un amplio espectro de software, tanto como los usuarios quieran tener.[3] 2.2.2. SOFTWARE LIBRE El término Free Software hace referencia a la palabra Free, en el contexto de la libertad, no de cosas sin precio. Se puede o no pagar un precio por obtener software de GNU, de cualquier manera, una vez se obtiene el software, se adquieren libertades específicas para usarlo. Pero, ¿qué se entiende por Software Libre? El software libre es, ante todo, una forma ética de entender el software o los programas de un computador que incluye tanto la fabricación de los programas como su distribución y su utilización. Por lo tanto, el software libre no está orientado únicamente a la gente capaz de escribir un programa, o a la gente que posee empresas y por tanto está en condiciones de hacer negocio con los programas. Por el contrario, el software libre tiene que ver con el usuario tanto como con los desarrolladores o los comerciantes o tal vez incluso más, ya que es la libertad de los usuarios el único objetivo del movimiento del software libre. - 22 - Se puede asegurar entonces, que el software libre como concepto, y la tendencia que lo hace crecer y evolucionar es una concepción y un movimiento ético como se observa en la figura 2. Figura 2. Mapa Conceptual sobre Software Libre. [4] La definición mantenida por la Fundación para el Software Libre1 (FSF, Free Software Foundation) dice que para que un programa de ordenador sea considerado software libre debe respetar cuatro derechos o libertades considerados como fundamentales. • Libertad de utilizar el programa sin restricciones, donde quiera, como quiera y para lo que quiera. • Libertad de distribuir copias a sus amigos, empleados, conocidos, empleadores y, en fin, a cualquier persona que deseen. • Libertad de estudiar cómo funciona el programa y, si se desea adaptarlo a sus necesidades específicas. Para ello el acceso al código fuente es una condición necesaria. • Libertad de mejorar el programa, publicar y distribuir sus mejoras al público (o a quien deseen) de modo que más personas salgan beneficiadas de los cambios. También es necesario el acceso al código fuente. La libertad de ejecutar el programa significa la libertad para cualquier tipo de persona u organización de usarlo en cualquier tipo de sistema de computación, para cualquier tipo de trabajo y propósito, sin estar obligado a comunicarlo a su programador, o alguna otra entidad específica. En esta libertad, el propósito de los usuarios es el que importa, no el propósito de los programadores. 1 La Free Software Foundation (FSF) es una organización sin ánimo de lucro cuyo objetivo es promocionar la libertad de los usuarios de ordenadores, y defender los derechos de los usuarios de software libre. - 23 - El acceso al código fuente del programa es una condición necesaria para realizar cambios y publicar versiones mejoradas y de esta forma darle sentido a las libertades 3 y 4. Sin embargo, ciertos tipos de reglas sobre la manera de distribuir software libre son aceptables, cuando no entran en conflicto con las libertades principales. Por ejemplo, el copyleft es la regla en base a la cual, cuando se redistribuye el programa, no se puede agregar restricciones para denegar a las demás personas las libertades principales. Por otro lado, la figura de Software libre también puede ser una figura comercial. Un programa libre debe estar disponible para el uso comercial, la programación comercial y la distribución comercial. La programación comercial de software libre ya no es inusual; tal software libre comercial es muy importante. Puede haber pagado dinero para obtener copias de software libre, o puede haber obtenido copias sin costo. Pero sin tener en cuenta cómo obtuvo sus copias, siempre tiene la libertad de copiar y modificar el software, incluso de vender copias. [5] El concepto de software evoluciona y se modifica a menudo con el fin de proporcionar claridad acerca de su significado. Ver anexo 1. 2.2.3. Licencia GPL GNU GPL significa General Public License (Licencia Pública General). La más extendida de tales licencias es la Licencia Pública General de GNU, o GPL GNU. Hablar de software libre no lleva implícito estar empleando licencia GPL. Hay una gran lista de muchas otras licencias diferentes de programas libres2. Cualquier licencia que conceda al usuario ciertas libertades específicas es una licencia de software libre. Sin embargo, es recomendado usar la GPL GNU ya que exige que todas las versiones mejoradas que se publiquen sean software libre. Esto significa que se evitará el riesgo de tener que competir con una versión modificada privativa de su propio trabajo. No obstante, en algunas situaciones particulares puede ser mejor emplear una licencia más permisiva. [6] 2.2.4. Sobre la licencia de ZABBIX ZABBIX se ha publicado bajo la licencia GNU General Public License (GPL) versión 2. Los términos formales de la licencia GPL se pueden leer en el anexo 2. ZABBIX solicita que en caso de utilizar el software para uso comercial, se adquiera un paquete de soporte con el fin de apoyar al desarrollo del proyecto. [7] La mayor parte de los paquetes de programas GNU utilizan la GPL GNU, pero hay unos pocos programas que emplean licencias menos estrictas, tales como la GPL Reducida. Cuando se hace así es por razones de estrategia. 2http://www.gnu.org/licenses/license-list.html - 24 - 2.3. UBUNTU Para hablar de Ubuntu es necesario retomar el concepto de GNU/Linux. Este es uno de los términos empleados para referirse a la combinación del núcleo o kernel libre similar a Unix denominado Linux, que es usado con herramientas de sistema GNU. Su desarrollo es uno de los ejemplos más prominentes de software libre ya que todo su código fuente puede ser utilizado, modificado y redistribuido libremente bajo cualquiera de los términos de la GPL (Licencia Pública General de GNU) y otra serie de licencias libres.[8] Una distribución Linux es una distribución de software basada en el núcleo Linux que incluye determinados paquetes de software para satisfacer las necesidades de un grupo específico de usuarios, dando así origen a ediciones domésticas, empresariales y para servidores. Por lo general están compuestas, total o mayoritariamente, de software libre, aunque a menudo incorporan aplicaciones o controladores propietarios. Existen distribuciones que están soportadas comercialmente, como Fedora (Red Hat), openSUSE (Novell), Mandriva, y distribuciones mantenidas por la comunidad como Debian y Gentoo. [9] Para el desarrollo de este proyecto se utilizó UBUNTU 10.04 LTS3 como sistema operativo sobre el cual se implementó y se instaló ZABBIX, debido a su viabilidad y comodidad de uso y a la calidad y cantidad de documentación que existe sobre la utilización de Ubuntu y la implementación de ZABBIX sobre este. Ubuntu es una distribución de Linux que proporciona un sistema operativo actualizado y estable para el usuario medio, con un fuerte enfoque en la facilidad de uso y de instalación del sistema. Ubuntu está patrocinado por Canonical Ltd., una compañía británica propiedad del empresario sudafricano Mark Shuttleworth que lo mantiene libre y gratuito. Además, Canonical Ltd. es capaz de aprovechar los desarrolladores de la comunidad para mejorar los componentes de su sistema operativo. Esta distribución está siendo traducida a más de 130 idiomas y posee una gran colección de aplicaciones prácticas y sencillas para la configuración de todo el sistema, a través de una interfaz gráfica útil para usuarios que se inician en Linux. El entorno de escritorio oficial es GNOME desarrollado por GNU. La figura 3a muestra un ejemplo de un escritorio de trabajo de Ubuntu. La figura 3b permite observar el acerca de del GNOME Desktop. 3Las versiones LTS (Long Term Support), son aquellas que se liberan cada dos años y reciben soporte durante tres años para sistemas de escritorio. - 25 - Figura 3a. Escritorio GNOME de UBUNTU. Figura 3b. Acerca de GNOME DESKTOP. • Aplicaciones de Ubuntu Ya se mencionó que Ubuntu es conocido por su facilidad de uso y las aplicaciones orientadas al usuario final. Las principales aplicaciones que trae Ubuntu son: El navegador web Mozilla Firefox, el cliente de mensajería instantánea Empathy, el cliente para enviar y recibir correo Evolution, el reproductor multimedia Totem, el cliente y gestor de torrents Transmission, el grabador de discos Brasero, la suite ofimática OpenOffice, y Ubuntu Software Center para buscar e instalar entre más de treinta mil aplicaciones y juegos. • Seguridad y accesibilidad El sistema incluye funciones avanzadas de seguridad y entre sus políticas se encuentra el no activar, de forma predeterminada, procesos latentes al momento de instalarse. Por eso mismo, no hay un firewall - 26 - predeterminado, ya que no existen servicios que puedan atentar a la seguridad del sistema. Para labores/tareas administrativas se incluye en el terminal una herramienta llamada sudo, con la que se evita el uso del usuario administrador. • Ubuntu es software libre Aunque las carátulas se imprimen en inglés, a partir de la versión 5.10 se incluyó el texto Ubuntu is software libre usando la palabra en español libre, para eliminar la ambigüedad del término free (del inglés free software) que puede significar tanto libre como gratis. Ubuntu también se publica bajo la licencia GPL de GNU. [10] - 27 - 2.4. ZABBIX Figura 4. Imagen de Zabbix. [2] Zabbix fue creado por el señor Alexei Vladishev y actualmente se desarrolla y se soporta por la compañía Zabbix SIA. Es una solución open source que permite de forma rápida y sencilla monitorizar todo tipo de servidores, aplicaciones y equipos que hacen parte de una red. Zabbix permite centralizar la información en un servidor y monitorizar múltiples hosts, además tiene una interfaz de administración vía web browser. Por otro lado, ofrece características de monitorización avanzada, alertas y visualización que actualmente no están presentes en otros sistemas de monitorización, ni siquiera comerciales. Zabbix puede descubrir nodos en un rango de IPs usando agentes SNMP y es capaz de monitorizar servicios remotos. Además tiene soporte para traps SNMP en las versiones 1, 2 y 3 del protocolo. Proporciona también extensa información sobre la máquina que monitoriza: disco, memoria, E/S, entre muchas otras, mediante un completo sistema de estadísticas históricas cuyos datos se guardan de manera cronológica y sencilla de acceder, visualizar y analizar, en bases de datos, para este caso MySQL. Zabbix a su vez es capaz de enviar avisos, alarmas y/o notificaciones programadas vía e-mail, SMS e incluso a través de Jabber para usuarios de Google Talk. Es importante recordar que Zabbix es un software OSE (Open Source Edition) gratuito y se desarrolló y publicó bajo Licencia Pública General GNU versión 2 cuyos términos formales se pueden observar en el anexo 2. - 28 - 2.5. MONITORIZACIÓN DE REDES Monitorizar consiste en observar, vigilar, tomar datos y analizar los resultados con el fin de realizar una retroalimentación que permita solucionar problemas eficazmente o mejor aún, anticiparse a ellos. En una red se cuenta con distintos dispositivos interrelacionados, unos de mayor importancia que otros, pero que, como es lo ideal, deben funcionar correctamente sin excepción. Con la monitorización de la red se toman datos como consumo de recursos, asignación de memoria, estado de memoria, parámetros de rendimiento, estado del dispositivo, rendimiento de sistemas agrupados, entre muchos otros que se explicarán a lo largo del desarrollo de este documento de manera específica. Estos datos cuales pueden ser vistos, notificados y controlados por operadores capaces de tomar decisiones basados en las alarmas automáticas que dan informe sobre estados críticos. 2.6. ¿POR QUÉ MONITORIZAR? Cada vez en los ambientes empresariales, las redes se vuelven más complejas y la exigencia de la operación es cada vez mayor. El trafico de voz y datos, y la creciente demanda de recursos para soportar aplicaciones y servicios, ponen a prueba la estabilidad y el funcionamiento de estas. Es por eso que análisis y monitorización de redes se ha convertido en actividades de vital importancia en las prioridades de las diferentes compañías. El proceso de monitorización debe ser permanente, ordenado, continuo y exacto, de esta manera se toman medidas de variables criticas en el funcionamiento de una red con el fin de que, si se encuentran problemas, se tomen medidas correctivas y/o preventivas que lleven a la estabilización de la red, de esta manera se mantiene un control eficaz y efectivo que lleve a lograr mejores resultados en el desempeño de cada uno de los dispositivos involucrados. Además, los datos obtenidos forman estadísticas que ponen en evidencia problemas e irregularidades en procesos, los cual es necesario solucionar. El almacenamiento de las medidas recogidas forma una bitácora que puede mostrar la evolución del comportamiento de la red. No tener una herramienta de monitorización que informe sobre el estado de la red y sus elementos, significa un costo muy elevado, ya que será necesario gastar más recursos en el mantenimiento y reparación de la misma además de llevar a la contratación de más personal para las actividades de soporte. La prevención y la respuesta anticipada a problemas son mecanismos que llevan a un control exitoso de una red. - 29 - 3. IMPLEMENTACIÓN: INSTALACIÓN DE SOFTWARE 3.1. INSTALACIÓN DE UBUNTU La instalación de Ubuntu 10.04 LTS es bastante simple. Una vez se inicia el equipo desde el CD, aparece la pantalla de bienvenida donde se escoge el idioma en el que quedará el sistema operativo, es de resaltar que una de las características de este sistema operativo es que provee presentación y soporte en muchísimos idiomas con diferentes variaciones de los mismos, en este caso se escoge español. También aparece la opción de probar Ubuntu, que consiste en correr desde el CD una muestra del sistema. Para este caso se debe dar clic en el botón Instalar Ubuntu 10.04 LTS y en seguida se contacta con el servidor de Ubuntu para obtener la hora exacta. Estos dos primeros pasos se muestran en la figura 5. Figura 5. Instalación de Ubuntu, elección de idioma. Luego, como se puede apreciar en la figura 6, se procede a elegir la configuración horaria que ya está elegida, como región se elige Colombia con la hora establecida, se da clic en adelante y se continúa con la distribución del teclado, se escoge la opción España que permite sacar los símbolos correctamente, y clic en adelante. Figura 6. Instalación de Ubuntu, zona horaria y distribución de teclado. Ahora el programa de Instalación da la opción de configurar la ubicación del sistema operativo en el disco duro. Primero identifica si hay algún sistema ya instalado, si es así, por ejemplo si ya se tiene Windows entonces es posible instalar Ubuntu junto con él. También está la opción de formatear el disco entero o por último se puede particionar el disco como se desee dejando o quitando el sistema operativo ya instalado, si es que hay uno. Una vez se da clic en el botón - 30 - adelante, el programa solicita ingresar un usuario, una contraseña y un nombre del equipo. Estos pasos se muestran en la figura 7. Figura 7. Instalación de Ubuntu, administración de espacio en disco y configuración de usuario. En la figura 8 está el reporte que muestra el instalador del sistema para confirmar las opciones escogidas, entonces se da clic en instalar. Seguido a esto se inicia la instalación del mismo. Figura 8. Instalación de Ubuntu, reporte de opciones escogidas y proceso de instalación. Al terminar la instalación el proceso solicita reiniciar el equipo y retirar el CD de la unidad, luego de esto el computador arranca desde el sistema operativo Ubuntu 10.04 LTS ya instalado. 3.2. INSTALACIÓN ZABBIX[11] 3.2.1. Requerimientos de Hardware Zabbix requiere de parámetros óptimos tanto de memoria física como de capacidad de almacenamiento en disco, sin embargo estas necesidades están relacionadas proporcionalmente con el número de hosts y las características que se van a monitorizar de estos mismos. La tabla 1 permite observar las necesidades del equipo que funcionar como servidor Zabbix, en función del número de hosts que se van a monitorizar. - 31 - Tabla 1. Requerimientos de hardware en función del número de hosts. 3.2.2. Requerimientos de Software La tabla 2 muestra los requerimientos a nivel de programas o software que se necesitan para instalar Zabbix. Tabla 2. Requerimientos de software. Teniendo en cuenta los requisitos tanto de hardware como de software, se da inicio a la instalación de Zabbix cuyo proceso está compuesto por 4 etapas que se describen a continuación. [11] 4 3.2.3. Instalación de requisitos previos. Se ejecuta desde el terminal el comando que se observa en la figura 9 que permite realizar la instalación de todos los requisitos previos de software de acuerdo a lo visto en la tabla 2. Figura 9. Comando de instalación de requisitos previos. El instalador indica el espacio en disco que se va a utilizar y solicita la confirmación de la continuación de la instalación como se observa en la figura 10. 4 El proceso completo de instalación de ZABBIX se realizó basados y apoyados en el blog[11] del señor José Luis Gómez Ferrer de Couto, profesional en administración de TIC de la empresa Soltel Soluciones Informáticas en la ciudad de Sevilla (España). Su hoja de vida puede ser consultada en la referencia [12] citada al final de este documento. - 32 - Figura 10. Confirmación de instalación de requisitos previos. Figura 11. Descarga de los paquetes de instalación de software previo. Durante el proceso de instalación de requisitos previos se debe configurar el password que se va a utilizar para el usuario root de la base de datos en MySQL como se observa en la figura 12. Figura 12. Configuración de password para usuario root de la base de datos. - 33 - Finalmente en las figuras 13, 14 y 15 se observa el proceso de extracción y compilación de los paquetes que permiten instalar el software previo que permiten el correcto funcionamiento de Zabbix en Ubuntu. Figura 13. Extracción de paquetes de instalación. Figura 14. Proceso 1 de instalación del software previo. - 34 - Figura 15. Proceso 2 de instalación del software previo. 3.2.4. Instalación Zabbix. Luego de tener instalado correctamente el software previo, se procede a la configuración y compilación de Zabbix de la siguiente forma: 3.2.4.1. Creación usuario Zabbix. Se ejecuta el comando observado en la figura 16 que permite crear un usuario zabbix en Ubuntu para poder utilizar Zabbix a través de este mismo. Zabbix necesita un usuario para que el funcionamiento sea seguro y que al tiempo no tenga credenciales de súper usuario. Figura 16. Creación de usuario zabbix en Ubuntu. 3.2.4.2. Descarga de fuentes Se debe ahora proceder a descargar los archivos de compilación de Zabbix a través del comando observado en la figura 17. Figura 17. Descarga de los archivos fuentes para compilación de Zabbix. - 35 - Luego se procede a extraerlos o descomprimirlos en la carpeta del usuario creado zabbix como se observa en la figura 18. Figura 18. Extracción de los archivos descargados 3.2.4.3. Creación del esquema Se ha optado por utilizar MySQL y para continuar con la instalación se debe crear una base de datos y darle permisos necesarios al usuario que se conectará a ella. Para esto se ejecutan los comandos mostrados en la figura 19. Figura 19. Creación de base de datos y privilegios de usuario Zabbix. Las figuras 20, 21 y 22 nos permiten observar el proceso de actualización del protocolo de autenticación de MySQL para Ubuntu. Figura 20. Actualización de usuario y contraseña. - 36 - Figura 21. Actualización de políticas y privilegios. Figura 22. Activación de contraseña. Dentro de las fuentes descargadas se incluyen unas plantillas para la creación del esquema y otras opciones. Entonces se ejecutan los comandos observados en la figura 23 como usuario zabbix para dejar funcionando el almacén de datos. Figura 23. Comandos de configuración bases de datos. 3.2.4.4. Configurar, compilar e instalar: Ahora se deben configurar las fuentes para dar soporte como servidor, instalar el agente en el servidor Zabbix, usar MySQL como contenedor de datos, soporte para net-SNMP, CURL, y JABBER. Para ello se ejecuta el comando observado en la figura 24 como usuario zabbix. Figura 24. Comando de configuración de las fuentes de instalación. - 37 - La figura 25 permite observar el resultado de la configuración de las fuentes y nos confirma que se han predeterminado los siguientes parámetros: Activación de Servidor, Motor de base de datos MySQL, librería cURL, Soporte de Jabber, protocolo net-SNMP y activación del agente Zabbix para LINUX. Figura 25. Configuración Servidor, MySQL, cURL, Jabber, net-SNMP y agente Zabbix. Finalmente y desde el root del usuario zabbix, se procede a compilar e instalar las fuentes como se observa en la figura 26. Figura 26. Comando de compilación e instalación de fuentes de Zabbix. 3.2.4.5. Configuración post-instalación Después de obtener una configuración, compilación e instalación limpia de las fuentes de Zabbix se procede a realizar los siguientes ajustes: Configuración de los puertos que utiliza Zabbix como se observa en la figura 27. - 38 - Figura 27. Configuración de puertos de Zabbix Ahora se procede a crear el directorio donde se almacenarán los ficheros de configuración y se le asigna el propietario. Para ello se ejecutan los siguientes comandos observados en la figura 28 Figura 28. Creación de directorio de almacenamiento de ficheros de configuración. Finalmente se procede a editar el fichero de configuración del servidor Zabbix para declarar los parámetros de conexión a la base de datos MySQL. Para ello se debe acceder a los archivos de configuración, abrirlos con un editor de texto de consola (para este caso se utilizo el GNU nano v2.2.2) y revisar y/o cambiar los parámetros resaltados en la figura 29 que corresponden a los datos de conexión a la base de datos de MySQL. Figura 29. Configuración de parámetros de conexión a BD de MySQL. - 39 - 3.2.4.6. Configuración scripts de inicio Para que el servidor Zabbix y el agente arranquen de forma predeterminada durante el inicio del sistema se ejecuta el comando observado en la figura 30 como root y se editan los archivos para el servidor Zabbix y para el agente Zabbix observados en las figuras 31 y 32 respectivamente. Figura 30. Configuración de script de inicio. Figura 31. Edición de script de inicio para Servidor Zabbix - 40 - Figura 32. Edición de script de inicio para Agente Zabbix. Ahora se le asignan los permisos a ambos scripts y se configura el nivel de arranque en el que van a iniciar. Para ello como root se ejecutamos los comandos observados en la figura 33. Figura 33. Asignación de permisos a scripts de inicio de agente y servidor Zabbix. - 41 - Por último se procede a iniciar tanto el agente como el servidor Zabbix según se observa en la figura 34. Figura 34. Inicio de Agente y Servidor Zabbix. 3.2.5. Instalación front-end Ahora se debe proceder a instalar la interfaz web del servidor Zabbix para lo cual se ejecutan los comandos observados en la figura 35. Figura 35. Instalación de interfaz web de servidor Zabbix. 3.2.5.1. Configuración PHP. Zabbix necesita que algunos parámetros de PHP sean modificados. Como root se edita el archivo php.ini y se modifican las líneas señaladas en las figuras 36, 37, 38 y 39. Figura 36. Edición 1 de archivo php.ini: date.timezone - 42 - Figura 37. Edición 2 de archivo php.ini: memory_limit Figura 38. Edición 3 de archivo php.ini: upload_max_filesize - 43 - Figura 39. Edición 4 de archivo php.ini: max_execution_time Finalmente se reinicia el servidor apache según se observa en la figura 40. Figura 40. Reinicio de servidor apache. 3.2.5.2. Configuración interfaz Web Para finalizar la totalidad de la instalación de Zabbix se debe configurar la interfaz web, para lo cual se ingresa a través de un explorador web a la dirección del servidor (http://127.0.0.1 o http://localhost) como se observa en la figura 41. Figura 41. Ingreso a configuración de interfaz web en servidor local - 44 - Se aceptan los términos de licencia, figura 42. Figura 42. Aceptación de licencia Se chequean la instalación correcta de los prerrequisitos, figura 43. Figura 43. Lista de chequeo de prerrequisitos. - 45 - Se realizan pruebas de conexión a la base de datos con el usuario y password asignados anteriormente, figura 44. Figura 44. Configuración de conexión con base de datos. Se confirma el puerto configurado para el servidor Zabbix, figura 45. Figura 45. Configuración del puerto del servidor Zabbix. - 46 - Se observa el resumen del proceso de preinstalación, figura 46. Figura 46. Resumen de la instalación. Se da click en la opción resaltada en la figura 47. Figura 47. Archivo de configuración - 47 - Se guarda el archivo zabbix.conf.php en la ruta mostrada en la figura 49. Figura 48. Guardando archivo Zabbix.conf.php Figura 49. Ubicación del archivo guardado Zabbix.conf.php Y finalmente se termina el proceso de instalación como se muestra en las figuras 50 y 51. Figura 50. Último paso de instalación. - 48 - Figura 51. Finalización de la instalación de manera exitosa. 3.2.6. Probando Zabbix Luego de obtener la instalación exitosa de la interfaz web de Zabbix, procedemos a realizar pruebas autenticándonos con el usuario: admin y el password: zabbix. La figura 53 nos confirma que la instalación ha finalizado de manera correcta y que Zabbix está listo para iniciar con sus tareas de monitorización. Figura 52. Ingreso a interfaz web con usuario admin. - 49 - Figura 53. Confirmación de instalación completa y correcta de ZABBIX en Ubuntu. 3.3. INSTALACIÓN AGENTE ZABBIX EN WINDOWS En la página principal de Zabbix, se encuentran disponibles los Agentes Zabbix para monitorizar diferentes sistemas operativos en varias versiones, como Solaris, AIX, FreeBSD, HP-UX, Linux y Windows, dado que los equipos de Santini System Group Ltda. tienen instalado Windows, este es el agente con el que se trabajará. La página web del programa provee un archivo comprimido con los agentes para este sistema como se observa en la figura 54. Allí se ven dos subcarpetas para maquinas a 64 o a 32 bits, en este caso se descomprime la versión para 32 bits. Figura 54. Archivo comprimido, instalador agente Zabbix. Una vez descomprimido, se obtienen tres archivos ejecutables que permitirán realizar la instalación del Agente Zabbix para Windows, estos se pueden observar en la figura 55, para realizar la correcta instalación se deben seguir pasos específicos que se mencionaran a continuación. Figura 55. Contenido de la carpeta win32, tres archivos ejecutables. Lo primero que se debe hacer es crear una carpeta en la raíz del disco duro local, en este caso C:\. El nombre que se le dio fue Zabbix, dentro del directorio se deben copiar los tres ejecutables descargados como se muestra en la figura 56 y a su vez copiar un archivo de configuración para los agentes, el cual tiene por nombre zabbix_agentd.win.conf que se encuentra en el equipo donde previamente se instaló el servidor Zabbix en la siguiente ruta: sistemadearchivos/misc/conf/zabbix_agentd.win.conf. Se procede a copiar y pegar. En la figura 57 se puede apreciar la carpeta en C\:zabbix\ con 4 los elementos requeridos. - 50 - Figura 56. Carpeta Zabbix creada en C:\ Figura 57. Carpeta Zabbix con archivos necesarios. Lo siguiente que se hará será establecer los parámetros correctos en el archivo de configuración, para tal fin este de debe abrir usando el bloc de notas, entonces, la entrada Server= que por defecto se encuentra con la dirección IP del localhost 127.0.0.1 se cambia por la dirección IP del servidor Zabbix, esto se ve en la figura 58. Luego, como se muestra en la figura 59, en la opción Hostname se ingresa un nombre de identificación de la maquina a monitorizar, este será el mismo que se le dará en la consola web de Zabbix al adicionar el equipo como elemento, en este caso se le ha asignado el nombre de Windows_box. Figura 58. Configuración de dirección IP de servidor. Figura 59. Configuración del hostname del equipo. Ahora mediante el comando C:\zabbix>zabbix_agentd.exe -c c:/zabbix/zabbix_agentd.win.conf se instalara el agente usando la configuración dada en el archivo .conf, como se puede apreciar en las figuras 60 y 61, una vez ejecutado desde la consola aparece un error 1464 del zabbix_agentd, por lo cual se agrega el parámetro –i para ejecutarlo como un servicio. - 51 - Figura 60. Comando de instalación. Figura 61. Error después de ejecutar comando de instalación. En la figura 62 se observa un comando para llamar la ayuda del agente Zabbix que es de mucha utilidad, ya que como se ve en la figura 63 nos muestra el listado de parámetros para realizar diferentes acciones tales como instalar, desinstalar, iniciar o detener el servicio, acceder a archivos de configuración o ver la versión usada. Figura 62. Llamado a la ayuda del instalador. - 52 - Figura 63. Listado de comandos para el instalador. Dado que la función –i es la correspondiente para continuar con la instalación del agente, se tomará esta, en la figura 64 se muestra el comando completo, enseguida, en la figura 65 se encuentra el reporte de instalación exitosa del servicio. De esta manera cuando se observa el listado de servicios de Windows ejecutando services.msc, se aprecia que el servicio zabbix agent ya se encuentra pero no está iniciado, figura 66a, así que de acuerdo a los diferentes parámetros del archivo de instalación, se usa –s en el comando de ejecución para iniciar el servicio, en la figura 66b se muestra la línea de comando y en la figura 66c se ve el agente establecido e iniciado, con esto se concluye la instalación del agente Zabbix para Windows. Figura 64. Comando de instalación como servicio. Figura 65. Confirmación de instalación exitosa. - 53 - Figura 66. Inicio de servicio Zabbix, servicio detenido (a), comando de activación (b) y servicio iniciado (c). 4. IMPLEMENTACIÓN: INTERFAZ WEB DE ZABBIX 4.1. CREACION DE UN HOST La administración de todas las tareas de monitorización se realiza desde el panel frontal, este es una interfaz web que permite gestionar las actividades de monitorización, se pueden agregar dispositivos, configurar todas las opciones del Zabbix, generar reportes, graficas, alarmas, crear cuentas. Como primer paso, se mostrara como agregar un dispositivo conectado a la red, un Host. En la figura numero 67 tenemos el frontend de Zabbix; en el menú se elige Configuration, es en esta pestaña donde se definen los parámetros de datos, graficas, reportes y envío de notificaciones. Luego se da clic en la opción Hosts en el submenú. Allí se muestra un primer elemento ya creado, se trata del mismo sistema del computador en el que se encuentra instalado el programa, por defecto él se define como Zabbix Server. Figura 67. Ventana de configuración, opción host En la tabla general del Host Zabbix Server en la figura 68 (a), se puede ver en la columna status que este no se encuentra monitorizado, es decir no se encuentra activado; para activarlo, se selecciona y en la persiana inferior se elige Activate Selected y se da clic en Go, figura 68 (b) se puede ver como después de esta acción el host se encuentra en estado monitored y un señalizador verde mostrando disponibilidad en la columna Availability. - 54 - Figura 68. Activación Host, selección(a), confirmación de activación (b). Para la creación del host, se da clic en Create Host como se ve en la figura 69, seguido de esto se llenan los campos necesarios para la configuración del elemento creado, figura 70, en este caso se va a monitorizar un computador de un usuario de Santini System Group, se trata de un equipo con sistema operativo Windows XP que se encuentra en la red, el nombre que se le da es WXP_HOST. Un host siempre debe pertenecer a algún grupo, ya que los permisos en la herramienta se dan sobre grupos y no sobre elementos específicos entonces en el campo grupos se elige Windows servers, se escribe la IP del equipo en el campo correspondiente y en “Connect to” se selecciona IP Address, luego, en el campo Linked templates se da clic en add para adicionar una plantilla correspondiente al sistema operativo que se tiene instalado en el equipo. Figura 69. Ventana de configuración, creación Host - 55 - Figura 70. Configuración Host. En la figura 71 se encuentra la ventana de templates o plantillas, que sale una vez se da clic en add, se observa que hay para diferentes sistemas operativos como Windows XP, Windows Exchange, Solaris, Linux, Mac, además de plantillas con configuración para el uso de protocolos como el SNMP, en este caso se escoge la que viene diseñada para Windows. Devuelta en la ventana de configuración del host, figura 72, se selecciona, en Linked templates, la que se seleccionó previamente y se da clic en Save. Ahora se activa el nuevo Host creado, del mismo modo que se hizo con el elemento Zabbix Server, esto se muestra en la figura 73. Figura 71. Listado de plantillas, Host Windows. - 56 - Figura 72. Plantilla adicionada. Figura 73. Activación Host creado. 4.1.1. Agregando un Servidor en Windows Server como Host Lo siguiente que se hizo fue agregar el host del servidor Zeus de Santini System Group, este tiene sistema operativo Windows Server 2003 R2, tiene replica del servidor DHCP, se encuentra instalada la impresora, es el controlador de domino y allí se encuentra el Directorio Activo. Simplemente se adiciona como se realizó con los equipos anteriores, se incluye en el grupo Windows servers y se le agrega la plantilla para sistemas operativos Windows en la figura 74 se aprecia la ventana de creación del Host y en la figura 75 se puede ver el grupo de host creados con el que recién se agregó, de nombre Zeus, todos con los agentes activados Zabbix y SNMP respectivamente. - 57 - Figura 74. Ventana de configuración, creación de Host servidor de Windows. Figura 75. Host Zeus activado. 4.1.2. Adición de Host Monitorizados Mediante Agentes SNMP. 4.1.2.1. Instalación de paquete snmp para Ubuntu La figura 76 permite observar la instalación desde la consola de Ubuntu del paquete de snmp para monitorización. Figura 76. Comando de instalación SNMP. - 58 - 4.1.2.2. Impresora en Red Ahora se adicionara un periférico en red como por ejemplo una impresora, en este caso la impresora principal de Santini System Group, una HP JetLaser. Primero se debe activar el protocolo SNMP en el servidor a través de la Terminal de Ubuntu, en la figura 77 se aprecia el llamado para la descarga e instalación de los paquetes para su funcionamiento. Ahora de mira si el elemento escogido a monitorizar es asequible es decir si está establecida la comunicación, si se toman los agentes correctamente y si responde a las peticiones del servidor Zabbix; para esto, primero se tiene que saber que versión del protocolo usa el dispositivo y cuál es la comunidad o cadena de autenticación. Figura 77. Interfaz web de la impresora, configuración TCP/IP. La interfaz web de la impresora es un espacio en donde se puede encontrar diferentes características de la misma, ver su estado actual y gestionar configuraciones, a esta se accede simplemente colocando la dirección IP en el espacio donde va la dirección web en un explorador de Internet como Internet Explorer o en este caso Mozilla Firefox, en la figura 78 se puede observar la ventana de configuración TCP/IP de la impresora allí se encuentra el nombre del host, el estado del protocolo IPv4 e IPv6 y la dirección IP con puerta de enlace predeterminada. A su vez, en la ventana de configuración de red, se ve la configuración para el protocolo SNMP v1 o v2, figura 79, entonces se selecciona la opción de habilitar el acceso SNMP v1/v2 de solo lectura, el nombre de la comunidad por defecto es public. En la figura 80 se ve la terminal de Ubuntu, donde mediante el comando snmpstatus -v 2c -c <comunidad> <IP del dispositivo> se confirma el correcto funcionamiento del protocolo y el estado de la conexión, en la respuesta que da la terminal a la petición podemos ver el puerto por defecto usado comúnmente por los agentes SMNP el 161, la interfaz de la impresora, y el uptime que es el tiempo en el cual el dispositivo ha funcionado correctamente sin ningún tipo de error o interrupción en su funcionamiento. - 59 - Figura 78. Interfaz web de la impresora, configuración de red. Figura 79. Comando, estado del SNMP. Entonces se procede a crear el Host, tomando los mismos pasos que anteriormente se hicieron, dando el nombre del elemento y la correspondiente dirección IP de la impresora como se puede ver en la figura 76, además se escoge en las plantillas la correspondiente a la referencia Template_HP_ColorLaserJet y la plantilla del protocolo SNMP que maneja la impresora, lo anterior se muestra en la figura 81, y por ultimo luego de la creación del Host, se procede a activarlo, en la figura 82 se puede ver la activación y el encendido del indicador verde en la columna availabiliy que advierte el correcto funcionamiento del SNMP. - 60 - Figura 80. Ventana de configuración, creación de Host impresora. Figura 81. Plantillas para Host impresora. - 61 - Figura 82. Activación del Host Impresora. 4.1.2.3. Switch Cisco Catalyst 2960 Los switches son dispositivos que también tienen el protocolo SNMP activado para ser monitorizados, en este caso se trata de un Switch Cisco 2960, entonces, como se ve en la figura 83 en las plantillas se elige la correspondiente al modelo llamada Template_Cisco_2960 y a su vez la del protocolo SNMPv2. Figura 83. Selección de plantillas para Switch. - 62 - El comando snmpstatus se utilizó para verificar la versión del protocolo SNMP que usa el switch y también en que comunidad está, además, como se puede ver en la figura 84, este comando retorna el uptime, tiempo durante el cual, el dispositivo ha tenido un correcto funcionamiento sin ningún tipo de error o interrupción. Ahora se usa el comando snmp walk, el cual retorna todos los valores que están disponibles en un agente SNMP dado, los elementos que pueden ser monitorizados, como la salida puede ser demasiado larga, mediante el comando head –n se restringe la salida a n número de líneas, figura 85. Por último se usa el comando snmpget como se muestra en la figura 86, con este, que se constato que efectivamente se tenía acceso de lectura de los elementos vistos en el snmpwalk, se puede ver que el OID o identificador de objeto sysuptimeinstance es el único que devuelve un valor de timetricks diferente a cero, entonces es necesario buscar el ítem con el OID sysuptimeinstance para validar su configuración. Figura 84. SNMP status del switch. Figura 85. SNMP walk del switch. Figura 86. SNMP get del switch. Luego, continuando con la creación del host, como comúnmente se hace, como nombre se coloca el nombre del switch, en este caso es SW2960_COBOGADMIN02, el grupo que se elige es SNMP Devices y se coloca la IP correspondiente como se muestra en la figura 87. Luego se busca en los Items correspondientes al switch el llamado Template_Cisco_2960 Uptime, en la figura 88 está el listado y en él se encuentra el Uptime, entonces se selecciona para entrar en la configuración del mismo, allí se llenan los espacios de SNMP - 63 - community y SNMP port, la comunidad en la que está configurado el dispositivo es SANTINI y como ya se había dicho el puerto por defecto para los agentes SNMP es el 161, en la figura 89 aparece esta configuración. El mismo procedimiento se realizo con el otro switch que se encuentra en Santini System Group, se trata de un switch de la misma referencia y con nombre SW2960_COBOGADMIN02. Figura 87. Ventana configuración, creación de Host switch Figura 88. Listado de Items, selección de Item Uptime - 64 - Figura 89. Configuración del Item Uptime. 4.1.2.4. Router Cisco 2801 Primero, se toman los comandos de gestión del protocolo SNMP, El comando snmpstatus retorna el uptime, tiempo durante el cual, el dispositivo ha tenido un correcto funcionamiento sin ninguna interrupción, además sirve para constatar la versión del protocolo SNMP y la comunidad, figura 90. El comando snmp walk retorna todos los valores que están disponibles en el dispositivo SNMP, figura 91. Finalmente se usa el comando snmpget como se muestra en la figura 92, con lo cual se verifica que si se tenía acceso de lectura de los elementos vistos en el snmpwalk. Figura 90. SNMP status del router. Figura 91. SNMP walk del router. - 65 - Figura 92. SNMP get del router. Ahora se configura el router de la misma manera que como se hizo con el switch, el nombre de host es RT2801_COBOGADMIN01, se incluye en el grupo SNMP Devices y se escribe la dirección IP que es la 10.57.50.1, se adiciona la plantilla del protocolo SNMP y se da clic en Save para terminar la creación, como se muestra en la figura 93. Figura 93. Ventana configuración, creación de Host router Para este dispositivo, ya que no se tiene la plantilla, se debe crear el Item, entonces, en configuration, Hosts, se da clic en el botón create Item, como se muestra en la figura 94. En la figura 95 se encuentra la ventana de creación del nuevo Item entonces se dan los parámetros correspondientes, el nombre del Host es RT2801_COBOGADMIN01, en la descripción se coloca el nombre del Item que se necesita que es Uptime, el SNMP OID que es el object identificator, es una cadena que identifica el Item correspondiente, la comunidad en el espacio SNMP community que al igual que el switch es SANTINI y el puerto por defecto de los agentes SNMP que es el 161, en Type of information se define el formato de los datos que entran, en este caso numéricos en Units se escoge s de segundos, medida por defecto del tiempo y por último se da clic en Save. Ya en la figura 96 se puede ver la ventana donde se muestran todos los host controlados con agentes SNMP: los dos switches, el router y la impresora. - 66 - Figura 94. Ventana configuración, hosts, opción crear Item. Figura 95. Ventana creación Item Uptime Figura 96. Listado de host con SNMP, todos activados. - 67 - 4.2. CREACIÓN DE UN ÍTEM. Es importante que el proceso de creación de hosts se lleve a cabo con éxito de tal forma que podamos a través del menú de configuración observar el estado de la disponibilidad (Availability) resaltado en color verde (ver figura 97). Esto implica que nuestro dispositivo está comunicándose de manera correcta con el servidor Zabbix a través de su agente, bien sea SNPM, IMPI o el agente Zabbix. Sin embargo, dado que los ítems son la base de la recolección de los datos, es necesario ilustrar el proceso de creación de estos así como su funcionamiento. El proceso inicia haciendo click en la opción Hosts del menú Configuration como se observa en la figura 93. Figura 97. Menú Configuration -> Hosts para crear un ítem. Luego, se procede a seleccionar la opción Create Item del menú de la derecha como se observa en la figura 98. Figura 98. Opción Create Item. En la figura 99 se observa el formato que se despliega para configurar las características del ítem que se va a crear. Se puede detallar que es importante tener en cuenta 3 espacios que se deben completar en este formulario: El Host al cual pertenece el ítem, la descripción del ítem y el Key que hace referencia al nombre técnico que recibe el ítem y que se encarga de identificar la información ó datos que este recolecta. - 68 - Para este ejemplo se selecciona el Host llamado WXP_Host para monitorizar el estado de carga del procesador cuya palabra clave o Key es system.cpu.load[,avg15]. Figura 99. Propiedades del Item creado Finalmente se procede a verificar que nuestro ítem se quedó correctamente creado, ingresando a la opción Latest data del menú Monitoring. La figura 96 ilustra que el ítem creado con descripción Processor Load15 efectivamente está recolectando datos de los cuales se registró un último cambio a la hora señalada en la figura 100. - 69 - Figura 100. Listado de Items, Item creado. Figura 101. Gráfica del Item Creado. Si se prefiere, también se puede observar los cambios registrados por el ítem a través de gráficas. Para este caso se ilustra el porcentaje de carga del procesador en función del tiempo como se observa en la figura 101. La creación de gráficas se detallará en la sección 4.6. 4.3. CREACIÓN DE UN TRIGGER Un ítem por sí solo únicamente se encarga de obtener información. La administración y clasificación de esta información se realiza mediante Triggers. Un Trigger en Zabbix es una entidad que define umbrales para la clasificación de los ítems, por ejemplo, si el ítem de medición de nivel de tóner en una impresora monitoreada arroja un valor bajo, significa que el Trigger del tóner se debe disparar y pasar a un estado de alerta. De esta manera avisará que la tinta de la impresora esta por acabarse. - 70 - Figura 102. Ventana de configuración, crear Trigger. Para crear un Trigger se elige configuration, submenú hosts, y en la persiana al lado derecho se selecciona Trigger, después se da clic en el botón Create Trigger como se ve en la figura 102. En la figura 103 se encuentra la ventana de creación del Trigger, allí se le da un nombre, en este caso se va a crear un Trigger para el nivel de tóner de la Impresora, se llamara Black Toner low on printer NP18F7D9F, en Expression se da clic en el botón select y se busca el Item correspondiente al nivel del tóner en la lista, en Function se elige Last value <N y se le da como valor de N = 1000, luego se da clic en Insert. En la figura 104 se muestra de nuevo la ventana de configuración en donde se coloca un en comentario una nota referente a que necesita ser cambiado el tóner de la impresora y se le da clic en Save. En la figura 105 se puede ver el listado de Triggers y seleccionado se encuentra el que acabamos de crear. Figura 103. Ventana configuración de Trigger. - 71 - Figura 104. Ventana de creación. Figura 105. Listado de Triggers. 4.4. CREACIÓN DE GRÁFICAS Se observó en la figura 105 que los datos obtenidos por los ítems se pueden visualizar a través de gráficas. El método más cómodo para realizar esto es a través de la creación de las gráficas mismas, cuyo proceso se explicará a continuación. Se ingresa a la opción Hosts del menú Configuration y se selecciona Create Graph como se observa en la figura 106. - 72 - Figura 106. Creación de gráficas en el menú Configuration. Luego se despliega un formulario que se completa como se observa en la figura 107. Se le asigna un Nombre a la gráfica y se selecciona gráfica tipo normal. Se configura mostrar tiempo de trabajo y triggers (show working time, show triggers). Siguiente a esto se da click en Add, en donde se seleccionará el ítem cuyos datos se graficarán. Las figuras 107, 108 y 109 permiten detallar este proceso. Figura 107. Configuración para creación de gráficas, selección ítem 1 para graficar. - 73 - Figura 108. Selección y configuración de ítem 2 para graficar. Figura 109. Selección y configuración de ítem 3 para graficar. Como se observó anteriormente, para este ejemplo se ha configurado una gráfica llamada WXP CPU Load para monitorizar el historial de carga del procesador del Host llamado WXP_Host. La figura 110 permite confirmar el correcto funcionamiento de la gráfica creada y nos ilustra el historial de carga del procesador del host referenciado. - 74 - Figura 110. Confirmación de funcionamiento de gráfica WXP CPU Load creada. Es importante ahora realizar una prueba para asegurarse que el ítem esté recolectando datos de manera correcta y que la gráfica creada para este ítem logre ilustrarlos. Para esto, se va a realizar una carga real del procesador del host WXP_Host a través de un procedimiento sencillo que consiste en escribir un archivo por lotes y ejecutarlo de manera continua y en repetidas ocasiones como se observa en las figuras 111a, 111b y 111c. Figura 111b. Crear archivo f.bat y guardarlo en escritorio. Figura 111a. Abrir editor de texto en Windows. Figura 111c. Ejecución de archivo por lotes f.bat ubicado en el escritorio. - 75 - Antes de proceder a observar los datos monitorizados en Zabbix se creó otro ítem correspondiente a memoria RAM libre en el host WXP_Host a través del mismo procedimiento que se utilizó para crear el referente a la carga del procesador. Luego de realizar la creación de estos ítems vamos a revisar en el propio Host de donde se están monitorizando los datos, el estado del procesador y de la memoria a través del administrador de tareas, en la pestaña de Rendimiento como se ilustra en la figura 112. Figura 112. Pestaña Rendimiento del administrador de tareas de Windows. Se puede detallar que la carga del procesador ha subido a 100% y además que actualmente hay 488.652 MB de memoria libre de los 1’037.420 MB total que tiene el equipo. Ahora bien, lo importante es lograr observar estos datos sobre la interfaz web de Zabbix. Para esto se procede a ingresar a la opción Graphs del menú Monitoring como se observa en la figura 113. Figura 113. Opción para observar las gráficas de monitorización en la interfaz web. La figura 114 corresponde a la gráfica WXP CPU Load del host WXP_HOST e ilustra claramente el incremento en la carga del procesador que coincide con lo observado en la gráfica de la figura 108. 76 Figura 114. Gráfica de carga del procesador en el host WXP_HOST. De la misma forma, se observa en la figura 115 la gráfica correspondiente a la cantidad de memoria física disponible. Es evidente que los números coinciden ya que se detallan 476.84 MB libres del total en el equipo monitorizado. Figura 115. Gráfica de memoria libre disponible en el host WXP_HOST. 77 Como último ejemplo para este documento para demostrar la veracidad de los datos, se observará a continuación una gráfica que ilustra la utilización de la red del servidor Zabbix implementado sobre Ubuntu. Para este procedimiento se realizó una prueba de velocidad a través de la página web5 www.speedtest.net Los resultados de la prueba realizada así como la fecha y hora de la misma se pueden observar en la figura 116. Figura 116. Resultados de la prueba de velocidad realizada en el Host Zabbix Server. Obsérvese por último la gráfica de la figura 117 que corresponde a la utilización de red del host Zabbix Server. Se puede detallar que entre las 19:10 y las 19:11 horas se recibió un aumento de la carga de la red cuyo pico estuvo por encima de los 400 KBps, resultado proporcional a lo observado en los resultados de la figura 116. Figura 117. Gráfica de utilización de red en el host Zabbix Server. 5http://www.speedtest.net/about.php 78 4.5. CREACIÓN DE MAPAS Se ha observado a lo largo del documento distintas formas de visualizar estados, triggers, elementos, parámetros de rendimiento de un host, entre otros. Sin embargo, estos métodos anteriormente mencionados no permiten monitorizar situaciones que involucren más de 1 host al tiempo en una misma gráfica. Para ello se hace de gran utilidad emplear mapas. Los mapas en Zabbix consisten en arreglos gráficos de hosts que permiten visualizar en una misma pantalla o gráfica, el estado básico, las alarmas y los triggers de un grupo, o varios grupos de hosts. El proceso de creación de mapas a través de la interfaz web se explicará a continuación. En primer lugar se hace click en la opción Maps del menú Configuration como se observa en la figura 118. Para este ejemplo se diseñó un mapa con nombre Santini System Group Network sobre el mapa por defecto que trae la plataforma instalada. Figura 118. Crear Mapa en Zabbix. Luego, se da click sobre la opción + según se detalla en la figura 119. Figura 119. Creación de elemento en el mapa. 79 En la figura 120 se muestra el formato que se debe completar para configurar y editar uno de los elementos que se van a ubicar en el mapa y que corresponde bien sea a un host, a un grupo de hosts e incluso se pueden agregar servicios monitorizados, triggers ó grupos de eventos. Los datos principales que se deben completar en el formato de la figura 16 son: tipo de elemento (Type), etiqueta del elemento (Label), ubicación de la etiqueta (Label location) y el ícono que se va a visualizar en el mapa. Estos íconos pueden personalizarse de acuerdo a los gustos y/o características de los elementos que se agregan al mapa. Figura 120. Edición de parámetros del elemento creado en el mapa. Para el ejemplo se inicia agregando un elemento correspondiente al host llamado WXP_Host como se observa en la figura 121. Figura 121. Selección de host correspondiente al elemento creado en el mapa. Finalmente se da click en Apply como se detalla en la figura 122. 80 Figura 122. Configuración final de elemento creado en el mapa. Las figuras 123 y 124 muestran el mismo procedimiento realizado anteriormente para el host WXP_HOST aplicado esta vez a agregar el elemento correspondiente a la impresora que más se utiliza en la oficina de Santini y que está conectada en la red. Figura 123. Selección de host para elemento Impresora (NPI8F7D9F) agregado al mapa. Figura 124. Configuración final de elemento impresora creado en el mapa. 81 Finalmente cabe mencionar que es importante utilizar enlaces o conexiones entre los elementos del mapa para obtener una idea gráfica más clara de la topología de la red e incluso para tener más comodidad en el momento de ubicar un elemento específico y observar su estado, alertas, etc. Figura 125. Creación de link de conexión entre elementos del mapa. La figura 125 ilustra la manera como se realiza este procedimiento. En primer lugar se seleccionan teniendo presionada la tecla CTRL del teclado, los 2 elementos que se quieren conectar en el mapa, luego se da click en el símbolo + cerca a la opción Link y se da click en Apply como se observa en las figuras 126, 127 y 128. Figura 126. Selección de elementos para creación de conexión entre estos. 82 Figura 127. Creación de link de conexión entre host de Windows y servidor. Figura 128. Creación de link de conexión entre host dos servidores de la red. Figura 129. Correo electrónico, notificación de fallo en POP3. Finalmente y después de agregar los elementos deseados para visualizar sobre el mapa, se da click en la opción Save, figura 129. 83 El resultado para el ejemplo de este documento se ilustra en la figura 130. Se puede observar monitorizados el Router Cisco 2801 principal de la red, 2 Switches Cisco Catalyst 2960, 4 hosts en Windows XP y 3 en Windows 7, 1 servidor en Windows Server 2003 R2, 1 servidor en Windows Server 2008, una impresora HP LaserJet p2055dn y como es lógico, la Workstation donde está implementado ZABBIX 1.82. Figura 130. MAPA de MONITORIZACIÓN DE RED INFORMÁTICA DE SANTINI SYSTEM GROUP. 4.6. PLANTILLAS Una plantilla o Template es una entidad lógica prediseñada con diferentes Items, Triggers y aplicaciones con el fin de ser aplicadas en elementos que comparten los mismos parámetros de medición, por ejemplo la carga del procesador, uso de memoria y uso de recursos de red son propios de computadores portátiles y de escritorio con un sistema operativo como Windows, luego es viable tener una plantilla que ya tenga configurados los Items a monitorizar en un computador con este sistema. En el enlace www.zabbix.com/wiki/templates/start se encuentran diferentes plantillas para descargar, como ejemplo se descargó la plantilla Microsoft Windows Eventlog, la página se muestra en la figura 131. 84 Figura 131. Página de descarga de plantillas. Luego de descargar la plantilla como un archivo común y corriente, en la interfaz web de zabbix en la opción Configuration, submenú Export/Import se da clic sobre el botón Browse, allí se busca la ubicación del archivo que se descargo y una vez seleccionado se da clic en Import como se muestra en la figura 132. En la figura 133 se encuentra la confirmación de importación exitosa de la plantilla, y como ejemplo en la figura 134 se toma un host en este caso el WXP_HOST y se añade la plantilla que se importó. Figura 132. Ventana de configuración, importar/exportar plantilla. Figura 133. Plantilla exitosamente importada. 85 Figura 134. Plantilla importada seleccionada para Host. 4.7. CONFIGURACIÓN NOTIFICACIONES VÍA EMAIL Una de las funciones más interesantes y útiles de Zabbix es la posibilidad de enviar mensajes de advertencia o alarma al correo electrónico, para su configuración, primero se elige Administration, luego Media types y allí se da clic en el botón Create Media Type como se muestra en la figura 135, en description simplemente se le da un nombre al nuevo elemento, este se llamara email2, en Type se escoge Email y se llenan los espacios de SMPT server y SMPT helo, en este caso se escoge que los reportes lleguen al correo electrónico corporativo, por lo cual como server y helo se escoge mail.santinisystemgroup.com y en el campo email se escribe la dirección de correo electrónico completa y se da clic en Save, el esta configuración se puede observar en la figura 136. Figura 135.Ventana Administration, Media types. Figura 136. Configuración de medio. Una vez creado el elemento, se selecciona y se activa, en la figura 137 se encuentra la ventana de Media types y seleccionado el elemento que se creo, luego en la persiana inferior se escoge Actived Selected y se da clic en el Go. En la figura 138 se muestra la pantalla Administration en el submenú Users, allí se configura la opción de correo para el usuario administrador, entonces en el listado se selecciona admin para ir a la ventana de configuración del mismo. 86 Figura 137 Activación elemento creado. Figura 138. Ventana Administration, users. En la ventana de configuración del usuario Admin en el espacio Media se da clic en el botón Add, como se ve en la figura 139, esto despliega una ventana donde se configura el medio, en Type se escoge Email y en send to se vuelve a escribir la dirección de correo electrónico configurada anteriormente, se selecciona las opciones para todos los tipos de gravedad y se da clic en el botón Add, figura 140. En la figura 141 se puede observar el Medio creado, entonces se selecciona y se da clic en Save, con esto se finaliza la configuración. Figura 139. Ventana configuración de usuario Admin. 87 Figura 140. Adición de E-mail en configuración de usuario. Figura 141. Configuración completa de servicio de email en usuario admin. Por último es necesario dar la orden de enviar los reportes obtenidos a los correos electrónicos ya configurados para el usuario administrador, esto se hace en el submenú Actions de Configuration, esta pantalla se ve en la figura 142, entonces se da clic en el botón Create Actions. Seguido de esto en la parte de Action operations se da clic en new, figura 143. En la figura 144 se muestra la ventana que se despliega, en donde se configura la operación a realizar, en Operation Type se selecciona enviar mensaje, en send message tose escoge single user y se da clic en el botón Select. Figura 142. Ventana configuration, actions. 88 Figura 143. Configuración de la acción que se va a crear. Figura 144. Acción de enviar mensaje a email. Después de dar clic en Select, se despliega una ventana para elegir el usuario, se selecciona Admin (administrador), esto se observa en la figura 145. Luego, de regreso a la ventana de configuración de las acciones se da clic en add y por último se da clic en el botón Save como se muestra en las figuras 146 y 147 respectivamente. Figura 145. Selección usuario Admin. 89 Figura 146. Adición de la acción configurada. Figura 147. Guardando acción creada. En la figura 148 se muestra el aviso de creación exitosa de la acción, ahora se va a verificar si se encuentra funcionando correctamente, para esto, en la ventana de eventos; la cual se accede seleccionando en el panel frontal monitoring, events; aparece un listado con los últimos eventos, que son los últimos disparos que los diferentes Triggers han tenido, en la figura 149 en el listado esta seleccionado el evento Inetd is not running on zabbix server, la fecha en que sucedió el evento fue en 12 de Julio de 2010 a las 20:13:35 horas, como se puede apreciar, se selecciona el evento, y en la figura 150 se pueden ver los detalles del mismo, allí se encuentra el host en el que sucedió el evento, el Trigger que se disparo, la gravedad, el identificador del Trigger y las acciones que se tomaron, además está la notificación de envío de mensaje a las 20:13:41 en el mismo instante que ocurrió el evento, solo unos segundos después al correo [email protected]. Figura 148. Aviso creación exitosa de la acción. 90 Figura 149. Listado de eventos. Figura 150. Detalles del Trigger seleccionado. Ahora, después de ingresar al correo electrónico donde se envió la notificación, figura 151, se puede apreciar que en la bandeja de entrada se encuentran diferentes correos provenientes de Zabbix alertando sobre problemas en este equipo, incluyendo el del evento visto anteriormente: Inet.d is not running on zabbix server, luego, se ingresó al correo electrónico de este error el cual se puede ver en la figura 152. Figura 151. Bandeja de entrada correo electrónico corporativo. 91 Figura 152. Correo de notificación de fallo de Inetd. De nuevo echando un vistazo a la lista de eventos se encuentra otro problema, POP3 server is down on zabbix server, figura 153; el evento sucedió 16 de Julio de 2010 a las 20:13:30 horas, lo seleccionamos y en la figura 154 se pueden ver los detalles del elemento, allí podemos ver el host en el que sucedió el evento, el Trigger que se disparó, la gravedad, el identificador del Trigger y las acciones que se tomaron, se observa la notificación de envío de mensaje a las 20:13:38 en al correo [email protected]. Figura 153. Lista de eventos, error en POP3 Figura 154. Detalles de evento de error en POP3. Una vez más al revisar el correo electrónico elegido, se puede comprobar que el mensaje llego a su destinatario alertando sobre la caída por alguna razón del servidor de POP3 en el host Zabbix server, figura 155. Estas alarmas son de vital importancia ya que son enviadas instantáneamente, entonces la persona encargada del soporte en la empresa, al ver que hay una alerta, está a tiempo para ir a solucionar el problema antes de que se agrave o provoque daños en hardware o software. 92 Figura 155. Correo electrónico, notificación de fallo en POP3. 93 5. DOFA DEBILIDADES • • • Falta de experiencia. Necesidad de profundizar aun más en el manejo de la herramienta. No se ha probado en ambientes más grandes que exijan una mayor gestión. OPORTUNIDADES • • • Posibilidad de ingresar en un mercado que está en auge y en crecimiento. Necesidad de las empresas de usar herramientas de monitorización a medida que crece el tamaño de la red y la demanda de recursos. Creciente demanda y uso de voz y datos en sistemas de comunicaciones. FORALEZAS • • • • El proyecto tiene la ventaja de no tener un costo económico elevado debido a ser basado sobre software libre. Aun siendo una aplicación basada en Linux, su interfaz web es amigable y manejable. Innovación del proyecto ya que la mayoría de las compañías están acostumbradas a comprar licencias de software patentado. Ganas de seguir adelante y espíritu emprendedor. AMENAZAS • • • Posible competencia a medida que se valla popularizando aun más el uso de herramientas de monitorización. Empresas con mayor solidez económica y experiencia. Falta de confianza de muchas compañías que prefieren comprar software licenciado. 94 6. CONCLUSIONES La prevención y la respuesta anticipada a problemas por medio de el monitoreo, son mecanismos que llevan a un control exitoso de una red. Con el desarrollo de nuevas tecnologías de comunicación y su creciente uso por parte de empresas, los costos de mantenimiento de redes son muy altos, y es aquí donde las soluciones de monitoreo de las mismas ofrecen una salida viable para el control y solución de inconvenientes; por estas razones el análisis y monitoreo de redes se ha convertido en una de las actividades de vital importancia en las prioridades de las diferentes compañías. Montar una solución de monitoreo eficaz y efectiva es una tarea que implica bastante dedicación por parte del Ingeniero, la herramienta escogida, Zabbix, es un instrumento de alta calidad y factible económicamente para su implementación, ya que cuenta con una variedad de opciones y configuraciones que facilitan su uso, además de ser un software libre lo que evita los costos de licenciamiento; los desarrollos sobre programas open source se convierten en una excelente opción para el desarrollo de proyectos en ingeniería. Dada la creciente necesidad por parte de las empresas de usar mecanismos de monitorización que permitan dar un mejor manejo y gestión de la red y el hecho de que la herramienta escogida cuenta con diferentes características que le permiten ser rápida exacta y versátil y a su vez a bajo costo por no necesitar licencias para su manejo; convierte este proyecto en una importante oportunidad de negocio para ofrecerla a compañías de todos los sectores de la economía. 95 7. REFERENCIAS Y BIBLIOGRAFÍA [1] http://profesores.elo.utfsm.cl/~tarredondo/info/networks/Presentacion_snmp.pdf [2] http://es.wikipedia.org/wiki/GNU [3] http://www.gnu.org/gnu/gnu-history.html [4] http://es.gnu.org/~reneme/map/es/map-es-i-3000.png [5] http://www.gnu.org/philosophy/free-sw.html [6] http://www.gnu.org/licenses/gpl-faq.es.html#WhatDoesGPLStandFor [7] http://www.zabbix.com/es/licence.php [8] http://es.wikipedia.org/wiki/Linux [9] http://es.wikipedia.org/wiki/Distribuci%C3%B3n_GNU/Linux [10] http://es.wikipedia.org/wiki/Ubuntu [11] http://blog.e2h.net/2010/05/07/instalando-zabbix-la-ultima-solucion-de-monitorizacion-de-codigo-abierto/ [12] http://blog.e2h.net/acerca-de/ [13] http://gugs.sindominio.net/licencias/gples.html [14] Zabbix 1.8 Network Monitoring, monitor your network’s hardware, servers and web performance effectively and efficiently. Richard Olups, ISBN 978-1-847197-68-9. Primera versión publicada en Abril del 2010 por Packt Publishing Ltd. [15] Redes de Área Local. Antonio Blanco Solsona, José Manuel Huidobro Moya, J. Jordán Calero, ISBN: 8497324897, 2007 [16] Redes Locales. Raya Cabrera, José Luis, Raya González, ISBN: 8478976949, Editorial Ra-Ma, 2009. [17] Redes Linux con TCP/IP - Guía Avanzada. Eyler Pat, ISBN: 8420531561, Editorial Prentice Hall, 2001. [18] Redes de Computadoras. Tanenbaum Andrew S, ISBN: 9688809586, Editorial Prentice-Hall, 1998, Tercera Edición. [19] The oficial Ubuntu book. Benjamin Mako Hill, Matthew Helmke, Corey Burguer, ISBN: 9780137081301, Prentice Hall, 5 edición, Julio 1 de 2010. [20] Configuración y administración de servicios en GNU/Linux paso a paso, ISBN: 978-958-44-1616-2, Diego José Luís Botia Valderrama. 96 ANEXOS ANEXO 1 [5]Es importante mencionar que la definición de software libre se modifica a menudo para clarificarla. A continuación, se proporciona una lista del resumen de dichas modificaciones. • Versión 1.92: Aclarar que el código fuente ofuscado no se puede considerar código fuente. • Versión 1.90: Aclarar que la 3ª libertad significa el derecho a distribuir copias de sus propias versiones modificadas o mejoradas. No el derecho de participar en el proyecto de otro. • Versión 1.89: La 3ª libertad incluye el derecho a liberar versiones modificadas como software libre. • Versión 1.80: La primera libertad debe ser práctica, no sólo teórica. • Versión 1.77: Clarificación acerca que todos los cambios retroactivos a la licencia son inaceptables, aún si no representan reemplazos completos. • Versión 1.74: Cuatro clarificaciones de puntos no del todo explícitos, o definidas en algunos lugares pero no reflejadas en todos: • Mejoras no significa que la licencia puede limitar sustancialmente qué tipo de versiones modificadas puede publicar. La 3ª libertad incluye la distribución de versiones modificadas, no sólo de los cambios. • El derecho a fusionar módulos existentes se refiere a aquellos que estén debidamente licenciados. • Definición explícita de la conclusión sobre los puntos de controles de exportación. • Imponer un cambio en la licencia constituye una revocación de la antigua licencia. • Versión 1.57: Agregada la sección «Más allá del software». • Versión 1.46: Clarificar de quién es el propósito que importa en la libertad para ejecutar el programa para cualquier propósito. • Versión 1.41: Clarificar definiciones sobre licencias basadas en contratos. • Versión 1.40: Explicar que una licencia libre debe permitirle usar otro software libre disponible para crear sus modificaciones. • Versión 1.39: Nota acerca que es aceptable para una licencia requerir proveer el código fuente para versiones del software que ponga en uso público. • Versión 1.31: Es aceptable para una licencia requerirle que se identifique como el autor de las modificaciones. Otras clarificaciones menores a lo largo del texto. • Versión 1.23: Anotados problemas potenciales relacionados a licencias basadas en contratos. • Versión 1.16: Explicar por qué la distribución de los binarios es importante. • Versión 1.11: Una licencia libre puede requerirle que envíe una copia de las versiones modificadas al autor. 97 ANEXO 2 [13] LICENCIA GNU GPL v2 GNU GENERAL PUBLIC LICENSE Versión 2, Junio de 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA Se permite la copia y distribución de copias literales de este documento, pero no se permite su modificación. Preámbulo Las licencias que cubren la mayor parte del software están diseñadas para quitarle a usted la libertad de compartirlo y modificarlo. Por el contrario, la Licencia Pública General de GNU pretende garantizarle la libertad de compartir y modificar software libre, para asegurar que el software es libre para todos sus usuarios. Esta Licencia Pública General se aplica a la mayor parte del software del la Free Software Foundation y a cualquier otro programa si sus autores se comprometen a utilizarla. (Existe otro software de la Free Software Foundation que está cubierto por la Licencia Pública General de GNU para Bibliotecas). Si quiere, también puede aplicarla a sus propios programas. Cuando hablamos de software libre, estamos refiriéndonos a libertad, no a precio. Nuestras Licencias Públicas Generales están diseñadas para asegurarnos de que tenga la libertad de distribuir copias de software libre (y cobrar por ese servicio si quiere), de que reciba el código fuente o que pueda conseguirlo si lo quiere, de que pueda modificar el software o usar fragmentos de él en nuevos programas libres, y de que sepa que puede hacer todas estas cosas. Para proteger sus derechos necesitamos algunas restricciones que prohíban a cualquiera negarle a usted estos derechos o pedirle que renuncie a ellos. Estas restricciones se traducen en ciertas obligaciones que le afectan si distribuye copias del software, o si lo modifica. Por ejemplo, si distribuye copias de uno de estos programas, sea gratuitamente, o a cambio de una contraprestación, debe dar a los receptores todos los derechos que tiene. Debe asegurarse de que ellos también reciben, o pueden conseguir, el código fuente. Y debe mostrarles estas condiciones de forma que conozcan sus derechos. Protegemos sus derechos con la combinación de dos medidas: 1. Ponemos el software bajo copyright y 2. le ofrecemos esta licencia, que le da permiso legal para copiar, distribuir y/o modificar el software. También, para la protección de cada autor y la nuestra propia, queremos asegurarnos de que todo el mundo comprende que no se proporciona ninguna garantía para este software libre. Si el software se modifica por cualquiera y éste a su vez lo distribuye, queremos que sus receptores sepan que lo que tienen no es el original, de forma que cualquier problema introducido por otros no afecte a la reputación de los autores originales. Por último, cualquier programa libre está constantemente amenazado por patentes sobre el software. Queremos evitar el peligro de que los redistribuidores de un programa libre obtengan patentes por su cuenta, 98 convirtiendo de facto el programa en propietario. Para evitar esto, hemos dejado claro que cualquier patente debe ser pedida para el uso libre de cualquiera, o no ser pedida. Los términos exactos y las condiciones para la copia, distribución y modificación se exponen a continuación. Términos y condiciones para la copia, distribución y modificación 1. Esta Licencia se aplica a cualquier programa u otro tipo de trabajo que contenga una nota colocada por el tenedor del copyright diciendo que puede ser distribuido bajo los términos de esta Licencia Pública General. En adelante, «Programa» se referirá a cualquier programa o trabajo que cumpla esa condición y «trabajo basado en el Programa» se referirá bien al Programa o a cualquier trabajo derivado de él según la ley de copyright. Esto es, un trabajo que contenga el programa o una porción de él, bien en forma literal o con modificaciones y/o traducido en otro lenguaje. Por lo tanto, la traducción está incluida sin limitaciones en el término «modificación». Cada concesionario (licenciatario) será denominado «usted». Cualquier otra actividad que no sea la copia, distribución o modificación no está cubierta por esta Licencia, está fuera de su ámbito. El acto de ejecutar el Programa no está restringido, y los resultados del Programa están cubiertos únicamente si sus contenidos constituyen un trabajo basado en el Programa, independientemente de haberlo producido mediante la ejecución del programa. El que esto se cumpla, depende de lo que haga el programa. 2. Usted puede copiar y distribuir copias literales del código fuente del Programa, según lo has recibido, en cualquier medio, supuesto que de forma adecuada y bien visible publique en cada copia un anuncio de copyright adecuado y un repudio de garantía, mantenga intactos todos los anuncios que se refieran a esta Licencia y a la ausencia de garantía, y proporcione a cualquier otro receptor del programa una copia de esta Licencia junto con el Programa. Puede cobrar un precio por el acto físico de transferir una copia, y puede, según su libre albedrío, ofrecer garantía a cambio de unos honorarios. 3. Puede modificar su copia o copias del Programa o de cualquier porción de él, formando de esta manera un trabajo basado en el Programa, y copiar y distribuir esa modificación o trabajo bajo los términos del apartado 1, antedicho, supuesto que además cumpla las siguientes condiciones: a. Debe hacer que los ficheros modificados lleven anuncios prominentes indicando que los ha cambiado y la fecha de cualquier cambio. b. Debe hacer que cualquier trabajo que distribuya o publique y que en todo o en parte contenga o sea derivado del Programa o de cualquier parte de él sea licenciada como un todo, sin carga alguna, a todas las terceras partes y bajo los términos de esta Licencia. c. Si el programa modificado lee normalmente órdenes interactivamente cuando es ejecutado, debe hacer que, cuando comience su ejecución para ese uso interactivo de la forma más habitual, muestre o escriba un mensaje que incluya un anuncio de copyright y un anuncio de que no se ofrece ninguna garantía (o por el contrario que sí se ofrece garantía) y que los usuarios pueden redistribuir el programa bajo estas condiciones, e indicando al usuario cómo ver una copia de esta licencia. (Excepción: si el propio programa es interactivo pero normalmente no muestra ese anuncio, no se requiere que su trabajo basado en el Programa muestre ningún anuncio). 99 Estos requisitos se aplican al trabajo modificado como un todo. Si partes identificables de ese trabajo no son derivadas del Programa, y pueden, razonablemente, ser consideradas trabajos independientes y separados por ellos mismos, entonces esta Licencia y sus términos no se aplican a esas partes cuando sean distribuidas como trabajos separados. Pero cuando distribuya esas mismas secciones como partes de un todo que es un trabajo basado en el Programa, la distribución del todo debe ser según los términos de esta licencia, cuyos permisos para otros licenciatarios se extienden al todo completo, y por lo tanto a todas y cada una de sus partes, con independencia de quién la escribió. Por lo tanto, no es la intención de este apartado reclamar derechos o desafiar sus derechos sobre trabajos escritos totalmente por usted mismo. El intento es ejercer el derecho a controlar la distribución de trabajos derivados o colectivos basados en el Programa. Además, el simple hecho de reunir un trabajo no basado en el Programa con el Programa (o con un trabajo basado en el Programa) en un volumen de almacenamiento o en un medio de distribución no hace que dicho trabajo entre dentro del ámbito cubierto por esta Licencia. 4. Puede copiar y distribuir el Programa (o un trabajo basado en él, según se especifica en el apartado 2, como código objeto o en formato ejecutable según los términos de los apartados 1 y 2, supuesto que además cumpla una de las siguientes condiciones: a. Acompañarlo con el código fuente completo correspondiente, en formato electrónico, que debe ser distribuido según se especifica en los apartados 1 y 2 de esta Licencia en un medio habitualmente utilizado para el intercambio de programas, ó b. Acompañarlo con una oferta por escrito, válida durante al menos tres años, de proporcionar a cualquier tercera parte una copia completa en formato electrónico del código fuente correspondiente, a un coste no mayor que el de realizar físicamente la distribución del fuente, que será distribuido bajo las condiciones descritas en los apartados 1 y 2 anteriores, en un medio habitualmente utilizado para el intercambio de programas, ó c. Acompañarlo con la información que recibiste ofreciendo distribuir el código fuente correspondiente. (Esta opción se permite sólo para distribución no comercial y sólo si usted recibió el programa como código objeto o en formato ejecutable con tal oferta, de acuerdo con el apartado b anterior). Por código fuente de un trabajo se entiende la forma preferida del trabajo cuando se le hacen modificaciones. Para un trabajo ejecutable, se entiende por código fuente completo todo el código fuente para todos los módulos que contiene, más cualquier fichero asociado de definición de interfaces, más los guiones utilizados para controlar la compilación e instalación del ejecutable. Como excepción especial el código fuente distribuido no necesita incluir nada que sea distribuido normalmente (bien como fuente, bien en forma binaria) con los componentes principales (compilador, kernel y similares) del sistema operativo en el cual funciona el ejecutable, a no ser que el propio componente acompañe al ejecutable. Si la distribución del ejecutable o del código objeto se hace mediante la oferta acceso para copiarlo de un cierto lugar, entonces se considera la oferta de acceso para copiar el código fuente del mismo lugar como distribución del código fuente, incluso aunque terceras partes no estén forzadas a copiar el código fuente junto con el código objeto. 100 5. No puede copiar, modificar, sublicenciar o distribuir el Programa excepto como prevé expresamente esta Licencia. Cualquier intento de copiar, modificar sublicenciar o distribuir el Programa de otra forma es inválida, y hará que cesen automáticamente los derechos que te proporciona esta Licencia. En cualquier caso, las partes que hayan recibido copias o derechos de usted bajo esta Licencia no cesarán en sus derechos mientras esas partes continúen cumpliéndola. 6. No está obligado a aceptar esta licencia, ya que no la ha firmado. Sin embargo, no hay hada más que le proporcione permiso para modificar o distribuir el Programa o sus trabajos derivados. Estas acciones están prohibidas por la ley si no acepta esta Licencia. Por lo tanto, si modifica o distribuye el Programa (o cualquier trabajo basado en el Programa), está indicando que acepta esta Licencia para poder hacerlo, y todos sus términos y condiciones para copiar, distribuir o modificar el Programa o trabajos basados en él. 7. Cada vez que redistribuya el Programa (o cualquier trabajo basado en el Programa), el receptor recibe automáticamente una licencia del licenciatario original para copiar, distribuir o modificar el Programa, de forma sujeta a estos términos y condiciones. No puede imponer al receptor ninguna restricción más sobre el ejercicio de los derechos aquí garantizados. No es usted responsable de hacer cumplir esta licencia por terceras partes. 8. Si como consecuencia de una resolución judicial o de una alegación de infracción de patente o por cualquier otra razón (no limitada a asuntos relacionados con patentes) se le imponen condiciones (ya sea por mandato judicial, por acuerdo o por cualquier otra causa) que contradigan las condiciones de esta Licencia, ello no le exime de cumplir las condiciones de esta Licencia. Si no puede realizar distribuciones de forma que se satisfagan simultáneamente sus obligaciones bajo esta licencia y cualquier otra obligación pertinente entonces, como consecuencia, no puede distribuir el Programa de ninguna forma. Por ejemplo, si una patente no permite la redistribución libre de derechos de autor del Programa por parte de todos aquellos que reciban copias directas o indirectamente a través de usted, entonces la única forma en que podría satisfacer tanto esa condición como esta Licencia sería evitar completamente la distribución del Programa. Si cualquier porción de este apartado se considera inválida o imposible de cumplir bajo cualquier circunstancia particular ha de cumplirse el resto y la sección por entero ha de cumplirse en cualquier otra circunstancia. . No es el propósito de este apartado inducirle a infringir ninguna reivindicación de patente ni de ningún otro derecho de propiedad o impugnar la validez de ninguna de dichas reivindicaciones. Este apartado tiene el único propósito de proteger la integridad del sistema de distribución de software libre, que se realiza mediante prácticas de licencia pública. Mucha gente ha hecho contribuciones generosas a la gran variedad de software distribuido mediante ese sistema con la confianza de que el sistema se aplicará consistentemente. Será el autor/donante quien decida si quiere distribuir software mediante cualquier otro sistema y una licencia no puede imponer esa elección. Este apartado pretende dejar completamente claro lo que se cree que es una consecuencia del resto de esta Licencia. 9. Si la distribución y/o uso de el Programa está restringida en ciertos países, bien por patentes o por interfaces bajo copyright, el tenedor del copyright que coloca este Programa bajo esta Licencia puede añadir una limitación explícita de distribución geográfica excluyendo esos países, de forma que la distribución se permita sólo en o entre los países no excluidos de esta manera. En ese caso, esta Licencia incorporará la limitación como si estuviese escrita en el cuerpo de esta Licencia. 101 10. La Free Software Foundation puede publicar versiones revisadas y/o nuevas de la Licencia Pública General de tiempo en tiempo. Dichas nuevas versiones serán similares en espíritu a la presente versión, pero pueden ser diferentes en detalles para considerar nuevos problemas o situaciones. Cada versión recibe un número de versión que la distingue de otras. Si el Programa especifica un número de versión de esta Licencia que se refiere a ella y a «cualquier versión posterior», tienes la opción de seguir los términos y condiciones, bien de esa versión, bien de cualquier versión posterior publicada por la Free Software Foundation. Si el Programa no especifica un número de versión de esta Licencia, puedes escoger cualquier versión publicada por la Free Software Foundation. 11. Si quiere incorporar partes del Programa en otros programas libres cuyas condiciones de distribución son diferentes, escribe al autor para pedirle permiso. Si el software tiene copyright de la Free Software Foundation, escribe a la Free Software Foundation: algunas veces hacemos excepciones en estos casos. Nuestra decisión estará guiada por el doble objetivo de de preservar la libertad de todos los derivados de nuestro software libre y promover el que se comparta y reutilice el software en general. AUSENCIA DE GARANTÍA 12. Como el programa se licencia libre de cargas, no se ofrece ninguna garantía sobre el programa, en toda la extensión permitida por la legislación aplicable. Excepto cuando se indique de otra forma por escrito, los tenedores del copyright y/u otras partes proporcionan el programa «tal cual», sin garantía de ninguna clase, bien expresa o implícita, con inclusión, pero sin limitación a las garantías mercantiles implícitas o a la conveniencia para un propósito particular. Cualquier riesgo referente a la calidad y prestaciones del programa es asumido por usted. Si se probase que el Programa es defectuoso, asume el coste de cualquier servicio, reparación o corrección. 13. En ningún caso, salvo que lo requiera la legislación aplicable o haya sido acordado por escrito, ningún tenedor del copyright ni ninguna otra parte que modifique y/o redistribuya el Programa según se permite en esta Licencia será responsable ante usted por daños, incluyendo cualquier daño general, especial, incidental o resultante producido por el uso o la imposibilidad de uso del Programa (con inclusión, pero sin limitación a la pérdida de datos o a la generación incorrecta de datos o a pérdidas sufridas por usted o por terceras partes o a un fallo del Programa al funcionar en combinación con cualquier otro programa), incluso si dicho tenedor u otra parte ha sido advertido de la posibilidad de dichos daños. FIN DE TÉRMINOS Y CONDICIONES Apéndice: Cómo aplicar estos términos a sus nuevos programas. Si usted desarrolla un nuevo Programa, y quiere que sea del mayor uso posible para el público en general, la mejor forma de conseguirlo es convirtiéndolo en software libre que cualquiera pueda redistribuir y cambiar bajo estos términos. Para hacerlo, añada los siguientes anuncios al programa. Lo más seguro es añadirlos al principio de cada fichero fuente para transmitir lo más efectivamente posible la ausencia de garantía. Además cada fichero debería tener al menos la línea de «copyright» y un indicador a dónde puede encontrarse el anuncio completo. <una línea para indicar el nombre del programa y una rápida idea de qué hace> Copyright (C) 19aa <nombre del autor> 102 “Este programa es software libre. Puede redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General de GNU según es publicada por la Free Software Foundation, bien de la versión 2 de dicha Licencia o bien (según su elección) de cualquier versión posterior.” “Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA, incluso sin la garantía MERCANTIL implícita o sin garantizar la CONVENIENCIA PARA UN PROPÓSITO PARTICULAR. Véase la Licencia Pública General de GNU para más detalles.” “Debería haber recibido una copia de la Licencia Pública General junto con este programa. Si no ha sido así, escriba a la Free Software Foundation, Inc., en 675 Mass Ave, Cambridge, MA 02139, EEUU.” Añada también información sobre cómo contactar con usted mediante correo electrónico y postal. Si el programa es interactivo, haga que muestre un pequeño anuncio como el siguiente, cuando comienza a funcionar en modo interactivo: Gnomovision versión 69, Copyright (C) 19aa nombre del autor Gnomovision no ofrece ABSOLUTAMENTE NINGUNA GARANTÍA. Para más detalles escriba «show w». Los comandos hipotéticos «show w» y «show c» deberían mostrar las partes adecuadas de la Licencia Pública General. Por supuesto, los comandos que use pueden llamarse de cualquier otra manera. Podrían incluso ser pulsaciones del ratón o elementos de un menú (lo que sea apropiado para su programa). También deberías conseguir que su empleador (si trabaja como programador) o tu Universidad (si es el caso) firme un «renuncia de copyright» para el programa, si es necesario. A continuación se ofrece un ejemplo, altere los nombres según sea conveniente: Yoyodyne, Inc. mediante este documento renuncia a cualquier interés de derechos de copyright con respecto al programa Gnomovision (que hace pasadas a compiladores) escrito por Pepe Programador. <firma de Pepito Grillo>, 20 de diciembre de 1996 Pepito Grillo, Presidente de Asuntillos Varios. Esta Licencia Pública General no permite que incluya sus programas en programas propietarios. Si su programa es una biblioteca de subrutinas, puede considerar más útil el permitir el enlazado de aplicaciones propietarias con la biblioteca. Si este es el caso, use la Licencia Pública General de GNU para Bibliotecas en lugar de esta Licencia. NOTA IMPORTANTE: Esta es una traducción no oficial al español de la GNU General Public License. No ha sido publicada por la Free Software Foundation, y no establece legalmente las condiciones de distribución para el software que usa la GNU GPL. Estas condiciones se establecen solamente por el texto original, en inglés, de la GNU GPL. Sin embargo, esperamos que esta traducción ayude a los hispanohablantes a entender mejor la GNU GPL. 103