%Instalaci—n y Configuraci—n de Nagios % #Introduccion ## Metas *Ejercicios opcionales para Nagios ## Notas: * Los comandos precedidos por "$" implican que debe ejecutar el comando como usuario genérico - no como root * Los comandos precedidos por "#" implican que debería estar trabajando como usuario root. * Los comandos con inicios de línea más específicos como "rtrX>" o "mysql>" indican que debe ejecutar los comandos en un equipo remoto, o dentro otro programa # Ejercicios # PARTE IX - Ejercicios Opcionales ## 1. Compruebe que Nagios está activo En vez de simplemente comprobar que un servidor está operativo en las PCs virtuales, podríamos tambien comprobar que el servicio de Nagios está disponible, solicitando el camino específico /nagios3/. Esto implica que hay que pasar más opciones al plugin de check_http. Para ver una descripción de las opciones disponibles, escriba esto: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # /usr/lib/nagios/plugins/check_http (ayuda breve) # /usr/lib/nagios/plugins/check_http --help (en detalle) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ y por supuesto, puede navegar hasta la documentación de Nagios o buscar en Google sobre check_http. Puede incluso ejecutar el plugin a mano para realizar una comprobación única: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # /usr/lib/nagios/plugins/check_http -H localhost -u /nagios3/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Así que la meta es configurar Nagios para ejecutar check_http de esta manera: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ {hint, /etc/nagios-plugins/config/http.cfg) define command{ command_name check_http_url command_line /usr/lib/nagios/plugins/check_http -H '$HOSTADDRESS$' -u '$ARG1$' } (hint, /etc/nagios3/conf.d/services_nagios2.cfg_ define service { hostgroup_name nagios-servers service_description NAGIOS check_command check_http_url!/nagios3/ use generic-service } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ y por supuesto, necesitará crear un hostgroup llamado nagios-servers para asignarle este servicio (pista: /etc/nagios3/conf.d/hostgroups_nagios2.cfg) Una vez hecho esto, compruebe que Nagios le advierte sobre un fallo de autenticación (porque está tratando de bajar la página sin proveer el usuario y la clave). Hay un parámetro extra que se puede pasar a check_http para proveer tal información. A ver si lo puede encontrar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ define command{ command_name check_http_url_auth command_line /usr/lib/nagios/plugins/check_http -H '$HOSTADDRESS$' -u '$ARG1$' -a '$ARG2$' } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ y se invoca: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_command check_http_url_auth!/nagios3/!nagiosadmin:password ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ADVERTENCIA: en la tradici—n de "Debian lo sabe todo", la configuración del comando check_http en /etc/nagios-plugins/config/http.cfg *NO ES LA MISMA* que se recomienda en la documentación de Nagios. Le falta $ARG1$, así que cualquier parámetro que se pase a check_http es ignorado. Así que usted pensará que está monitorizando /nagios3/, pero en realidad está monitoreando a root! Por esta raz—n tuvimos que crear una nueva definici—n de comando "check_http_url". Usted podría crear una más específica como "check_nagios", o en su lugar podría modificar la definición de check_http de Ubuntu para ajustarla al uso estándar. ## 2. Compruebe que SNMP está activo en el servidor NOC Este ejercicio no funcionará si no completá la instalación de MIBs SNMP adicionales al comienzo de la semana, y si no configurá /etc/snmp/snmp.conf apropiadamente. Por favor, consulte los ejercicios originales de SNMP si no está seguro. Primero tendrá que agregar un chequeo de servicio para SNMP en el archivo /etc/nagios3/conf.d/services_nagios2.cfg. Aquí es donde Nagios es impresionante. Hay cientos, si no miles, de chequeos de servicio disponibles a través de los diferentes sitios web sobre Nagios. Puede ver cuáles plugins están instalados por Ubuntu via el paquete nagios3, mirando en el siguiente directorio: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ls /usr/lib/nagios/plugins ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Como podrá verificar, ya existe un plugin llamado check_snmp disponible. Si está interesado en las opciones del plugin, puede ejecutarlo así: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # /usr/lib/nagios/plugins/check_snmp (ayuda breve) # /usr/lib/nagios/plugins/check_snmp --help (en detalle) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Puede usar el plugin check_snmp junto con Nagios para crear comprobaciones de sistema muy complejas o específicas. Ahora para ver los chequeos de servicio y host que se han creado con el plugin check_snmp, puede echar un vistazo en /etc/nagios-plutins/config/snmp.cfg. Verá una gran cantidad de chequeos pre-configurados que usan SNMP, incluyendo: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Y además, aún mejor, puede crear chequeos de servicio muy fácilmente. Para el caso de verificar que snmpd (el agente SNMP de Linux) está activo usaremos una solicitud SNMP. Si no recibimos una respuesta, entonces Nagios puede asumir que el servicio SNMP está caído en tal nodo. Al usar chequeos de servicio tales como check_http, check_ssh y check_telnet, ésto es lo que hacen también. En nuestro caso, vamos a crear un nuevo chequeo de servicio y llamarlo "check_system". Este chequeo se conectará al nodo especificado, usará una comunidad de sólo lectura definida en clase y solicitará via SNMP una varialble, en particular la descripción del sistema, o el OID "sysDescr.0". Para ello, comience por editar el arcihvo /etc/nagios-plugins/config/snmp.cfg ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # editor /etc/nagios-plugins/config/snmp.cfg ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Al comienzo (o al final, como quiera) agregue la siguiente entrada: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # '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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ COPIE Y PEGUE esto. No lo escriba a mano y asegurarse de que la l’nea "command_line" es una sola línea. Note que "command_line" es una sola línea. Si lo copia y pega en su editor, la línea probablemente se partirá en dos, y tendrá que unirlas en una. - Ahora necesita editar otro archivo y agregar el chequeo de servicio. Haremos esta comprobación a todos los servidores de la clase, o al groupo "debian-servers". Edite el archivo /etc/nagios3/conf.d/services_nagios2.cfg ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # editor /etc/nagios3/conf.d/services_nagios2.cfg ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Al final, agregue: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Comprobar que SNMP está activo en todos los servidores define service { hostgroup_name snmp-servers service_description SNMP check_command check_system!xxxxxx use generic-service notification_interval 0 ; set > 0 if you want to be renotified } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ "xxxxxx" es la comunidad definida anteriormente en clase. Note que hemos incluído nuestra propia comunidad aquí en lugar de configurarla globalmente en el archivo snmp.cfg. Usted debe cambiar el "xxxxx" por la comunidad SNMP dada en la clase o esta verificación no va a funcionar. Ahora debemos crear el grupo "snmp-servers". Edite el fichero /etc/nagios3/conf.d/hostgroups_nagios2.cfg y vaya al final. Agregue lo siguiente: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Lista de nodos con SNMP define hostgroup { hostgroup_name snmp-servers alias snmp servers members noc,localhost,pc1,pc2,pc3,pc4...pc36,rtr1,rtr2,rtr3...rtr9 } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Note que en "members" puede agregar todas las PCs y todos los enrutadores, ya que todos deberían tener SNMP activado en este momento. Recuerde EXCLUIR su PC y usar localhost en su lugar. Ahora verifique que todos los cambios son correctos y reinicie Nagios. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # service nagios3 restart ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *** DEFECTO en Ubutnu 12.04 LTS *** El paquete net-snmp 5.6.x no se instala el MIB IANAifType-MIB. Esto va a causar un error que va a causar que falla el plugin para snmp. Para rectifar la situacion haz lo siguiente (como root): ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # cd /usr/share/mibs # wget http://www.iana.org/assignments/ianaiftype-mib/ianaiftype-mib # mv ianaiftype-mib ianaiftype-mib.my ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Y, ahora puede seguir. Si oprime el enlace "Service Detail" en el menú, debería ver el chequeo de SNMP para el nodo NOC, y para cualesquiera otros nodos haya colocado en la línea "members" de más arriba.