Gestion y Monitoreo de Redes Instalacion y Configuracion de Nagios Notas: ------ * Comandos que empiezan con un "$" implica que deberia ejecutar el comando como un usuario general - no como root. * Comandos que empiezan con un "#" implica que deberia trabajar como el usuario root. * Comandos con lineas mas especificas (como "GW-RTR>" o "mysql>") implica que esta ejecutando el comando en un equipo remoto o dentro otro programa. * Si una linea termina con un "\" esto indica que el comando sigue en la proxima linea y Ud. deberia tratar el comando si como fuera en una sola linea. Ejercicios ----------- Ejercicios Parte I ------------------ 0. Haz un log in en su PC o abre una ventana de terminal como el usuario sysadmin. 1. Para instalar Nagios version 3 en Ubuntu podria hacer esto como el usuario sysadmin usando "sudo" o como root: # apt-get install nagios3 Ya esta instalado Version 3 de Nagios, pero puede correr el comando si quiere. 2. Nagios deberia estar corriendo ya - En un Navegador vaya al: http://localhost/nagios3/ - Cuando pregunta por un usuario y clave usa: user: nagiosadmin pass: 3. Miramos a los archivos instalados... # 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 210 2009-02-14 12:33 host-gateway_nagios3.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 version 2 de Nagios. El archivo host-gateway_nagios3.cfg fue cambiado entre versiones, asi tiene un nombre nuevo. PARTE II Configurando Equipos en Nagios ----------------------------------------------------------------------------- 0. El Orden de la Configuracion Conceptualmente vamos a construir nuestra configuracion desde arriba por abajo de nuestra Red. Asi, vamos a definir entradas por los rutadores y conmutadores (switches) primero. Despues esto empezamos con los PCs, etc... Llendo desde arriba por abajo habra definido los dispositivos que acutan como parientes por el resto de los dispositvos primero. 1. Configurar Nagios monitorear las rutadores del curso # cd /etc/nagios3/conf.d/ # vi routers.cfg define host { use generic-host host_name gw-rtr alias rutador del borde address 10.10.10.1 } Now define entries for our two group routers: define host { use generic-host host_name grupo1-rtr alias rutador del grupo 1 address 10.10.10.65 } define host { use generic-host host_name grupo2-rtr alias rutador del grupo 2 address 10.10.10.129 } Graba y salga del archivo /etc/nagios3/conf.d/routers.cfg 2. Configuramos los Conmutadores (Switches) Nota que cada switch tendra una relacion de pariente con uno de las rutadores. # vi switches.cfg Primero el switch de "backbone" define host { use generic-host host_name bb-sw alias switch de backbone address 10.10.10.2 parents gw-rtr } Nota las entradas de "parents" - Ya hicimos las entradas de los "parents" en el archivo rutadores.cfg, asi esto funciona. Ahora los dos switches de los dos grupos del taller: define host { use generic-host host_name grupo1-sw alias conmutador del grupo 1 address 10.10.10.66 parents grupo1-rtr } define host { use generic-host host_name grupo2-sw alias conmutador del grupo 2 address 10.10.10.130 parents grupo2-rtr } Graba y salga del archivo /etc/nagios3/conf.d/switches.cfg 3. Actualizar el archivo routers.cfg con entradas de "parents" El rutador de borde no tendra un pariente porque tenemos que decidir a parar de hacer monitoreo en algun parte de la topologia de la Red. Los does rutaders de los grupos si tienen parientes. Revisa el diagrama de la Red: http://noc/trac/wiki/DiagramaRed si no entiendes porque son los dos rutadores de los grupos. # vi /etc/nagios3/conf.d/routers.cfg Agrega "parents" a las dos entradas de los rutadores de los grupos: define host { use generic-host host_name grupo1-rtr alias rutador del grupo 1 address 10.10.10.65 parents bb-sw } define host { use generic-host host_name grupo2-rtr alias rutador del grupo 2 address 10.10.10.129 parents bb-sw } Graba y salga del archivo /etc/nagios3/conf.d/routers.cfg 4. Create entries for each PC in the classroom 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 Nota los parientes (parents) de cada uno. PCs de grupo 1 tienen como pariente el switch del grupo 1, o grupo1-sw. PCs de grupo 2 tienen como pariente el switch del grupo 2 or grupo2-sw. 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. Puede ver el archivo /etc/hosts para ver todo los PCs, conmutadores y rutatores de la sala. No todo los PCs definied in /etc/hosts estan funcionando, pero haz una entrada por cada uno. Grupo 1 ------- pc1 a pc18 Grupo 2 ------- pc19 a pc33 Ahora, hacemos las entradas: # vi pcs.cfg # Nuestro NOC define host { use generic-host host_name noc alias Centro de Operaciones address 10.10.10.5 parents bb-sw } # PCs de Grupo 1 define host { use generic-host host_name pc1 alias pc1 grupo 1 address 10.10.10.71 parents grupo1-sw } # PCs de Grupo 2 define host { use generic-host host_name pc19 alias pc19 grupo 2 address 10.10.10.139 parents grupo2-sw } 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. Verificamos que nuestros archivos estan bien configurados # 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. 5. Recargar / Reinicializar Nagios # /etc/init.d/nagios3 stop # /etc/init.d/nagios3 start Puede hacer "restart" pero no es 100% confiable. 6. Vaya al interfaz de la Web (http://localhost/nagios3) y verifica que las entradas (PCs, conmutadores, rutadores) estan visibles. Apreta "Host Detail" por la izquierda en Nagios para ver todo esto. PART III Configurar un Chequeo de Servicio por el NOC del Taller ----------------------------------------------------------------------------- 0. Configurando Ahora que tenemos el hardware configurado vamos a configurar monitoreo de services, hacer grupos de hardware y servicios, etc. 1. Associar un chequeo de servicio por el NOC del Taller # vi hostgroups_nagios2.cfg - Busca el hostgroup con nombre "ssh-servers". En la linea de "Members" cambia la linea: members localhost a members localhost,noc 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 PC noc: # /etc/init.d/nagios3 Restart Apreta "Service Detail" para ver su entrada nueva. PART IV Definir Servicios por todo sus PCs ----------------------------------------------------------------------------- 1. Determinar que servicios estan corriendo por que dispositivos - Esto es la clave de como uno usa Nagios y las herramientas de monitoreo. Ahora decidimos que servicios vamos a monitorear para cada PC en nuestra sala: - En nuestro casa tenemos: rutadores: corriendo ssh y snmp conmutadores: corriendo telnet y/o ssh y snmp pcs: Corriendo ssh, http y snmp Configuramos Nagios hacer checqueos por estes servicios en las maquinas de la sala 2.) Verificar que SSH esta corriendo en los rutadores y en los PCs - 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. Al principio la entrada se vea asi: # A list of your ssh-accessible servers define hostgroup { hostgroup_name ssh-servers alias SSH servers members localhost } 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,pc1,pc2,pc3,pc4....,bb-rtr,grupo1-rtr,grupo2-rtr } Pero, incluye todo los PCs - Ahora 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. 3.) Verifica que http esta corriendo en todo los PCs de la sala. - 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" PART 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 los cambos en el interfaz Web. PART V Extended Host Information ("making your graphs pretty") 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. PART VI 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" PART VII 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.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. OPCIONAL (No traducido) ----------------------- 1.) Verifica que SNMP esta corriendo en el NOC - Esto es mas complicado. Tiene que - 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 "public" 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 3 de Agosto 2010 por HA