Gestión y Monitoreo de Redes Instalación y Configuración de Nagios Notas: ------ * Comandos que empiezan con un "$" implica que debería ejecutar el comando como un usuario general - no como root. * Comandos que empiezan con un "#" implica que debería trabajar como el usuario root. * Comandos con líneas mas especificas (como "GW-RTR>" o "mysql>") implica que está ejecutando el comando en un equipo remoto o dentro otro programa. * Si una línea termina con un "\" esto indica que el comando sigue en la próxima línea y Ud. deberia tratar el comando si como fuera en una sola línea. Ayuda ----- * Todo los archivos de configuración están disponibles aquí: http://noc.ws.nsrc.org/configs/nagios3/ Ejercicios ----------- Ejercicios Parte I ------------------ 0. HAZ UNA CONEXIÒN SSH A SU MAQUINA VITUAL 1. INSTALA NAGIOS Para instalar Nagios version 3 en Ubuntu podría hacer esto como el usuario sysadmn usando "sudo" o como root. Como sysadm es asi: $ sudo apt-get install nagios3 Durante la instalación es posible que Nagios va a instalar el programa Postfix como un MTA (Servidor de Correo) para que se puede mandar correos si es necesario. Si tiene que elegir como se instala Postfix responde con: "Internet Site" Cuando Nagios te pide por una contraseña usa la contraseña del curso. Si quieres tener la documentación de Nagios en HTML (disponible a traves el interfaz de Nagios) instala: $ sudo apt-get install nagios3-doc Ya, Nagios esta instalado. 2. USAR NAGIOS - En un Navegador vaya al: http://ip.de.su.maquina.vitual/nagios3/ - Cuando pregunta por un usuario y contraseña usa: user: nagiosadmin pass: Vas a ver que Nagios tiene una entrada por tu máquina (pcN.ws.nsrc.org como "localhost" y por el enlace del puerto (gateway) de nuestra red del taller. 3. REVISAR LOS ARCHIVOS DE CONFIGURACIÓN $ cd /etc/nagios3/ # ls -l -rw-r--r-- 1 root root 1882 2008-12-18 13:42 apache2.conf -rw-r--r-- 1 root root 10524 2008-12-18 13:44 cgi.cfg -rw-r--r-- 1 root root 2429 2008-12-18 13:44 commands.cfg drwxr-xr-x 2 root root 4096 2009-02-14 12:33 conf.d -rw-r--r-- 1 root root 26 2009-02-14 12:36 htpasswd.users -rw-r--r-- 1 root root 42539 2008-12-18 13:44 nagios.cfg -rw-r----- 1 root nagios 1293 2008-12-18 13:42 resource.cfg drwxr-xr-x 2 root root 4096 2009-02-14 12:32 stylesheets $ ls -l conf.d/ -rw-r--r-- 1 root root 1695 2008-12-18 13:42 contacts_nagios2.cfg -rw-r--r-- 1 root root 418 2008-12-18 13:42 extinfo_nagios2.cfg -rw-r--r-- 1 root root 1152 2008-12-18 13:42 generic-host_nagios2.cfg -rw-r--r-- 1 root root 1803 2008-12-18 13:42 generic-service_nagios2.cfg -rw-r--r-- 1 root root 976 2008-12-18 13:42 hostgroups_nagios2.cfg -rw-r--r-- 1 root root 2167 2008-12-18 13:42 localhost_nagios2.cfg -rw-r--r-- 1 root root 1005 2008-12-18 13:42 services_nagios2.cfg -rw-r--r-- 1 root root 1609 2008-12-18 13:42 timeperiods_nagios2.cfg Archivos con un "2" en su nombre no han cambiado desde versión 2 de Nagios. PARTE II Configurando Equipos en Nagios ----------------------------------------------------------------------------- 0. EL ORDEN DE LA CONFIGURACION Conceptualmente vamos a construir nuestra configuracion desde arriba hacia abajo de nuestra Red. Asi, vamos a definir entradas por los ruteadores y conmutadores (switches) primero. Despues empezamos con los PCs. Cuando tengas todo los dispositivos configurado tienes que configurar grupos de dispositivos y darles nombres. Finalmente, agregra chequeos de servicios a los grupos de dispositivos. Flujo Conceptual de Configuracion --------------------------------- == Etapa 1 == gw-rtr ==> routers.cfg | | sw ==> switches.cfg (padre es gw-rtr) | | rtrN ==> routers.cfg (padre es sw) | | pcN ==> pcs.cfg (padre es rtrN) == Etapa 2 == Agrupar los dispositivos ==> hostgroups_nagios2.cfg - routers (gw-rtr,rtr1,rtr2,...,rtr6) - switches (sw) - pcs (pc1,pc2,...,pc24,noc) - ssh-servers (localhost,pc1,pc2,...,pc24,ap1,ap2,rtr1,...,rtr6) - http-servers (localhost,pc1,pc2,...,pc24) == Etapa 3 == Asignar chequeos de servicio a grupos ==> services_nagios2.cfg - http-servers ==> HTTP - ssh-servers ==> SSH == Opcional 1 == Configura acceso de "guest" al interfaz web ==> /etc/nagios3/cgi.cfg == Opcional 2 == Crea Grupos de Servicios ==> servicegroups.cfg == Opcional 3 == Agregar informacion extendida a los dispositivos ==> extinfo_nagios2.cfg 1. CONFIGURAR NAGIOS PARA MONITOREAR LOS ROUTERS DEL CURSO Vamos a trabajar como el usuario root. # sudo su # cd /etc/nagios3/conf.d/ # vi routers.cfg Abajo son las entradas del archivo. Sugerimos que ud. tipea uno a dos de las entradas. Despues puede hacer un corte y pegar por lo demas. Entiende porque el "parent" de rtr1 a rtr6 es "sw"? Despues que terminamos con este archivo vamos a configurar la entrada por el switch "sw". Se puede usar el diagrama de red como referencia. # # Archivo con definiciones de los Routers por Nagios # define host { use generic-host host_name rtr alias rutador del borde address 192.168.7.200 } define host { use generic-host host_name rtr1 alias rutador del grupo 1 de VMs address 192.168.7.201 parents sw } define host { use generic-host host_name rtr2 alias rutador del grupo 2 de VMs address 192.168.7.202 parents sw } # # Fin del archivo # Graba y salga del archivo /etc/nagios3/conf.d/routers.cfg 2. CONFIGURACION DE LOS SWITCHES Nota que cada switch tendra una relacion de pariente con uno de las rutadores. # vi switches.cfg Primero el switch de "backbone" (troncal) # # Archivo con definiciones de los Switches por Nagios # define host { use generic-host host_name sw alias conmuatdor troncal address 10.10.0.253 parents rtr } # # Fin del archivo # Graba y salga del archivo /etc/nagios3/conf.d/switches.cfg Por este taller hay solo un switch para configurar. 3. CONFIGURACION DE LOS PCS Ahora en un solo archivo vamos a definir todo los PCs en la sala. Puede hacer esto en varios archivos (grupo1-pcs.cfg, grupo2-pcs.cfg) si quiere, pero por nuestro curso usamos un solo archivo. Abajo hay tres entradas de ejemplo. Usa estos para hacer las entradas por todo los PCs PCs de grupo 1 tienen como padre el enrutador del grupo 1, o rtr1. PCs de grupo 2 tienen como padre el enrutador del grupo 2 or rtr2. Normalmente seria un switch, pero por el hecho que estamos usando maquinas virtuales no hay un switch fisico disponible. IMPORTANTE! No agrega una entrada por tu PC. Esto ya esta hecho en el archivo /etc/nagios3/conf.d/localhost_nagios2.cfg - En este archivo puede definir el "parent" por el localhost para que el instante de Nagios aparesca bien en los graficos de su Red. Vea http://nsrcwsnoc.ddns.net/wikis/gt/wiki/DiagramaRed para ver todo los PCs, los grupos, y que router pertenesca a cada grupo. # vi pcs.cfg # # Archivo con definiciones de los PCs por Nagios # # # Nuestro NOC # define host { use generic-host host_name noc alias Centro de Operaciones address 10.10.0.254 parents sw } # # PCs del Grupo 1 # define host { use generic-host host_name pc1 alias pc1 del grupo 1 address 10.10.1.1 parents rtr1 } define host { use generic-host host_name pc3 alias pc3 del grupo 1 address 10.10.1.3 parents rtr1 } # # termina pc5 y pc7 # # # PCs del Grupo 2 # define host { use generic-host host_name pc2 alias pc2 del grupo 2 address 10.10.2.2 parents rtr2 } define host { use generic-host host_name pc4 alias pc4 del grupo 2 address 10.10.2.4 parents rtr2 } # # termina pc6 y pc8 # # # termina el archivo por grupos 3 a 6 # Ahora sigue y agrega entradas por todo los PCs. Graba y salga del archivo /etc/nagios3/conf.d/pcs.cfg Ahora verificamos que nuestros archivos estan bien configurados 5. VERIFICAR CONFIGURATION DE NAGIOS # nagios3 -v /etc/nagios3/nagios.cfg ... Deberia ver : Total Warnings: NN (aviso de falta de chequeo de servicios. No se preocupa.) Total Errors: 0 Things look okay - No serious problems were detected during the check. Si hay errores lea que dice en la pantalla y intenta reparar los problemas en los archivos de configuracion. 6. COMO PARAR, INICIALIZAR Y/O REINICIALIZR NAGIOS # /etc/init.d/nagios3 stop # /etc/init.d/nagios3 start Puede hacer "restart" pero no es 100% confiable. 7. VERIFICA LA CONFIGURACION DE NAGIOS HASTA AHORA Vaya al interfaz de la Web (http://pcN.ws.nsrc.org/nagios3) y verifica que las entradas (PCs, conmutadores, rutadores) estan visibles. Apreta "Host Detail" por la izquierda en Nagios para ver esto. PARTE III Configurar un Chequeo de Servicio por el NOC del Taller ----------------------------------------------------------------------------- 0. CONFIGURAR CHEQUE DE SERVICIOS Ahora que tenemos el hardware configurado vamos a configurar monitoreo de services, hacer grupos de hardware y servicios, etc. 1. HACER UN CHEQUEO DE SERVICIO SSH POR EL ROUTER DE SU GRUPO # vi hostgroups_nagios2.cfg - Busca el hostgroup con nombre "ssh-servers". En la linea de "Members" cambia la linea: members localhost a members localhost,rtrN donde el "N" es el numero de su grupo (asi, "rtr1" por el grupo uno). Salga y graba el archivo. Verifica que todo esta bien: # nagios3 -v /etc/nagios3/nagios.cfg Reinitializar Nagios para ver los servicios nuevos asociado con el router rtrN: # /etc/init.d/nagios3 stop # /etc/init.d/nagios3 start En el interfaz Web de Nagios: http://ip.de.su.maquina.vitual/nagios3/ Apreta "Service Detail" (menu a la izquierda) para ver su entrada nueva. PARTE IV Definir Servicios por todo sus Dispositvos ----------------------------------------------------------------------------- 0. SERVICIOS CORRIENDO rutadores: ssh y snmp conmutadores: snmp aps: ssh y snmp pcs: ssh, http y snmp Configuramos Nagios hacer checqueos por estes servicios en las maquinas de nuestro taller. La configuracion de chequeo de SSH y HTTP es facil. De SNMP es mas involcrado y es un ejercicio opcional. 1. CONFIGURAR EL CHEQUEO DE SSH POR LOS PCS, ROUTERS Y APS En el archivo /etc/nagios3/conf.d/hostgroups_nagios2.cfg ya hay una entrada por el chequeo del servicio de SSH. Solo tiene que redefinirlo. Abre el archivo: # vi /etc/nagios3/conf.d/hostgroups_nagios2.cfg Al principio la entrada de ssh se vea asi: # A list of your ssh-accessible servers define hostgroup { hostgroup_name ssh-servers alias SSH servers members localhost,noc } Que deberiamos cambiar? Si, la linea de "members". Va a ser largo con todo los PCs listado _menos_ su PC. Por ejemplo: define hostgroup { hostgroup_name ssh-servers alias SSH servers members localhost,noc,pc1,pc2,pc3,pc4....,rtr1,rtr2,rtr3,...,ap1,ap2 } Pero, incluye todo los PCs, Routers y APs hora salga y graba el archivo y verifica que todo esta bien: # nagios3 -v /etc/nagios3/nagios.cfg Si todo esta bien haz: # /etc/init.d/nagios3 stop # /etc/init.d/nagios3 start y revisa todo en la pagina web de Nagios que el chequeo de servicio de SSH esta funcionando. 2. CONFIGURAR EL CHEQUEO DE HTTP POR TODO LOS PCS - Esto es casi igual que el ejercicio anterior. Solo haz el cambio por el servicio HTTP agregando los miembros de cada PC (rutadores y conmutadores no). Recuerda de no agregar tu maquina porque ya esta configurado como "localhost" PARTE V Crear mas Grupos del Host ----------------------------------------------------------------------------- 1. Actualizar /etc/nagios3/conf.d/hostgroups_nagios2.cfg Por los ejercicios que vienen es muy util tener hech los grupos de hosts: debian-servers routers switches Abre el archivo /etc/nagios3/conf.d/hostgroups_nagios2.cfg y vas a ver una entra para debian-servers que solo incluya el localhost. Actualizar esto para incluir todo los PCs en la sala. # vi /etc/nagios3/conf.d/hostgroups_nagios2.cfg Actualizar la entrada que dice: # A list of your Debian GNU/Linux servers define hostgroup { hostgroup_name debian-servers alias Debian GNU/Linux Servers members localhost } Para que "members" contiene todo los pcs. Mas o menos asi: members localhost,pc1,pc2,pc3,pc4,pc5,pc6,pc7,pc8,pc9 pc10,pc11,pc12,pc13,pc14,pc15,pc16,pc17,pc18, etc... - La linea no puede tener un break. Tiene que seguir como una sola linea. - Despues agrega entradas por "routers" y uno por "switches" - Usa los nombres "routers" y "switches" - Cuando terminas verifica que todo esta bien, recarga Nagios y vea si haya cambos en el interfaz Web. PARTE VI (OPCIONAL) Configurar acceso a "Guest" por el Interfaz Web de Nagios ----------------------------------------------------------------------------- 1. Abre el archivo /etc/nagios3/cgi.cfg para dar acceso de solo leer (r/o) a un usuario "guest" por el interfaz de Web. - Por defecto el usuario nagiosadmin tiene acceso leer y escribir (r/w) a traves el interfaz Web de Nagios. Si quiere permitir otros usuarios ver el estatus de su Red pero sin tener acceso de escribir (ejecutar comandos, etc.) tenemos que hacer algunos cambios en el archivo de cgi.cfg. - Primero hacemos el usuario "guest" con un clave en el archivo do htpasswd.user. # cd /etc/nagios3 # htpasswd /etc/nagios3/htpasswd.users guest Puede usar cualquier clave, pero uno de "guest" no es tan malo... - Ahora abre el archivo /etc/nagios3/cgi.cfg and busca el tipo de acceso que quiere dar. Vas a ver esto (hemos sacado todo los comentarios que haya en el archivo): authorized_for_system_information=nagiosadmin authorized_for_configuration_information=nagiosadmin authorized_for_system_commands=nagiosadmin authorized_for_all_services=nagiosadmin authorized_for_all_hosts=nagiosadmin authorized_for_all_service_commands=nagiosadmin authorized_for_all_host_commands=nagiosadmin Cambia estas entradas para permitir que el usuario "guest" tiene acceso a todo la informacion que da Nagios, pero que no tiene acceso para hacer cambios. Lo siguiente es tipico de acceso solo leer: authorized_for_system_information=nagiosadmin,guest authorized_for_configuration_information=nagiosadmin,guest authorized_for_system_commands=nagiosadmin authorized_for_all_services=nagiosadmin,guest authorized_for_all_hosts=nagiosadmin,guest authorized_for_all_service_commands=nagiosadmin authorized_for_all_host_commands=nagiosadmin - Haz los cambios, graba el archivo, salga del archivo, verifica que todo esta bien y recargar Nagios. - Para ver si esta funcionando vay a http://localhost/nagios3 y en tu navegador tiene que limpiar los "cookies" para que recibes el dialogo de login por Nagios. Haz un recargar de la pagina y intenta de entrar como el usuario guest. PARTE VII (OPCIONAL) Informacion Extendida de los Hosts (maquinas) - "O, hacer los graficos bonitos" ------------------------------------------------------------------------------- 1. Actualizar extinfo_nagios2.cfg - Si quiere usar iconos en los opciones de graficos que tiene Nagios (el Statusmap) esto es el archivo donde se define esto. Tenemos tres tipos de maquinas: Rutadores Conmutadores Servidores Hay un repositorio bastante grande de imagenes de iconos disponible aqui: /usr/share/nagios/htdocs/images/logos/ Estan instalado por defecto cuando instalamos Nagios en Ubuntu. Hay iconos muy especifico de varios modelos de equipos, pero para hacer las cosas mas simples vamos a usar los siguiente iconos: /usr/share/nagios/htodcs/images/logos/base/debian.* /usr/share/nagios/htdocs/images/logos/cook/router.* /usr/share/nagios/htdocs/images/logos/cook/switch.* - El proximo paso es editar el archivo /etc/nagios3/conf.d/extinfo_nagios2.cfg y decir a Nagios que icons usar por cada maquina. # vi /etc/nagios3/conf.d/extinfo_nagios2.cfg Aqui es una muestra de como se vea una entrad para los rutadores. Ya hay una entrada por debian-servers que funciona como esta. El modelo de rutador listado no esta importante. El imagen es generico. define hostextinfo { hostgroup_name routers icon_image cook/router.png icon_image_alt Cisco Routers (3600) vrml_image router.png statusmap_image cook/router.gd2 } Ahora agrega una entrada por tus conmutadores. Recuerda que llamaste el grupo "switches". Despues, graba el archivo, verifica que todo esta bien y revise el Status Map en la interfaz web para ver como esta todo. PARTE VIII (OPCIONAL) Crear Grupos de Servicio ----------------------------------------------------------------------------- 1. Crear un grupo de servicio para ssh y http for cada PC. - La idea es crear dos grupos de services. Es un dispositivo y los servicios asociado con el dispostivo por los dos grupos. Para hacer esto tiene que crear un archivo nuevo: # vi /etc/nagios3/conf.d/servicegroups.cfg Una muestra para el grupo 1 (no es completo): define servicegroup { servicegroup_name servidores-grupo1 alias Servidores de Grupo 1 members pc1,SSH,pc1,HTTP,pc2,SSH,pc2,HTTP,pc3,SSH,pc3,HTTP,pc4,SSH,pc4,HTTP,pc5,SSH, pc5,HTTP,pc6,SSH,pc6,HTTP,pc7,SSH,pc7,HTTP,pc8,SSH,pc8,HTTP,pc9,SSH,pc9,HTTP } - La linea es una sola linea. No puede tener un break. - SSH y FTP estan en mayuscalas porque asi es como la "service_description" esta escrito en el archivo /etc/nagios3/conf.d/services_nagios2.cfg. - Haz una entrada por los servidores de Grupo 2. - Graba sus cambios y salga del archivo. Verifica que todo esta bien y recarga Nagios. - Vea los grupos en el interfaz web bajo los menus "Servicegroup" OPCIONAL (No traducido) ----------------------- 1.) Verifica que SNMP esta corriendo en el NOC - First you will need to add in the appropriate service check for SNMP in the file /etc/nagios3/conf.d/services_nagios2.cfg. This is where Nagios is impressive. There are hundreds, if not thousands, of service checks available via the various Nagios sites on the web. You can see what plugins are installed by Ubuntu in the nagios3 package that we've installed by looking in the following directory: # ls /usr/lib/nagios/plugins As you'll see there is already a check_snmp plugin available to us. If you are interested in the options the plugin takes you can execute the plugin from the command line by typing: # /usr/lib/nagios/plugins/check_snmp to see what options are available, etc. You can use the check_snmp plugin and Nagios to create very complex or specific system checks. - Now to see all the various service/host checks that have been created using the check_snmp plugin you can look in /etc/nagios-plugins/config/snmp.cfg. You will see that there are a lot of preconfigured checks using snmp, including: snmp_load snmp_cpustats snmp_procname snmp_disk snmp_mem snmp_swap snmp_procs snmp_users snmp_mem2 snmp_swap2 snmp_mem3 snmp_swap3 snmp_disk2 snmp_tcpopen snmp_tcpstats snmp_bgpstate check_netapp_uptime check_netapp_cupuload check_netapp_numdisks check_compaq_thermalCondition And, even better, you can create additional service checks quite easily. For the case of verifying that snmpd (the SNMP service on Linux) is running we need to ask SNMP a question. If we don't get an answer, then Nagios can assume that the SNMP service is down on that host. When you use service checks such as check_http, check_ssh and check_telnet this is what they are doing as well. - In our case, let's create a new service check and call it "check_system". This service check will connect with the specified host, use the private community string we have defined in class and ask a question of snmp on that ask - in this case we'll ask about the System Description, or the OID "sysDescr.0" - - To do this start by editing the file /etc/nagios-plugins/config/snmp.cfg: # vi /etc/nagios-plugins/config/snmp.cfg At the top (or the bottom, your choice) add the following entry to the file: # 'check_system' command definition define command{ command_name check_system command_line /usr/lib/nagios/plugins/check_snmp -H '$HOSTADDRESS$' -C '$ARG1$' -o sysDescr.0 } You may wish to copy and past this vs. trying to type this out. Note that "command_line" is a single line. If you copy and paste in vi the line may not wrap properly and you may have to manually add the part: '$ARG1$' -o sysName.0 to the end of the line. - Now you need to edit the file /etc/nagios3/conf.d/services_nagios2.cfg and add in this service check. We'll run this check against all our servers in the classroom, or the hostgroup "debian-servers" - Edit the file /etc/nagios3/conf.d/services_nagios2.cfg # vi /etc/nagios3/conf.d/services_nagios2.cfg At the bottom of the file add the following definition: # check that snmp is up on all servers define service { hostgroup_name snmp-servers service_description SNMP check_command check_system!public use generic-service notification_interval 0 ; set > 0 if you want to be renotified } The "xxxxxx" is the community string previously (or to be) defined in class. In our case this is the class password for our PCs. For our routers and switches the community string is "unan-ro" - Create another service entry like this: # check that snmp is up on all servers define service { hostgroup_name snmp-routers-switches service_description SNMP check_command check_system!unan-ro use generic-service notification_interval 0 ; set > 0 if you want to be renotified } Note that we have included our private community string here vs. hard-coding it in the snmp.cfg file earlier. - Now we must create the "snmp-servers" group in our hostgroups_nagios2.cfg file. Edit the file /etc/nagios3/conf.d/hostgroups_nagios2.cfg and go to the end of the file. Add in the following hostgroup definition: # A list of snmp-enabled devices on which we wish to run the snmp service check define hostgroup { hostgroup_name snmp-servers alias snmp servers members noc,pc1,pc2,pc3,pc4,pc5, etc... } And for our routers and switches: define hostgroup { hostgroup_name snmp-routers-switches alias snmp on our network infrastructure members gw-rtr,grupo1-rtr,grupo2-rtr,grupo1-sw,grupo2-sw } - Now verify that your changes are correct and restart Nagios. - If you click on the Service Detail menu choice in web interface you should see the SNMP check appear. - After we do the SNMP presentation and exercises in class, then you could come back to this exercise and add in all the classroom PCs to the members list in the hostgroups_nagios2.cfg file, snmp-servers hostgroup definition. Remember to list your PC as "localhost". Ultima actualizacion 31 de Agosto 2011 por HA