Nagios

De WikiEtl
Saltar a: navegación, buscar

Indicaciones básicas.

Nagios es un sistema que nos permite monitorizar equipos de forma remota. Actualmente está instalado en el docserv2.lab.it.uc3m.es, y se utiliza para monitorizar todos los equipos del departamento.

La URL para acceder a nagios es : https://nagios.lab.it.uc3m.es Preguntar usuario y password.

Tenemos los equipos divididos en dos grandes grupos, "Clientes" y "Servidores".

Esta división esta motivada por el tipo de seguimiento que se hace sobre el equipo y si este envía o no envía notificaciones sobre su estado, la división no responde a si los equipos son clientes o son servidores.

Los "CLIENTES" no envían notificaciones de ninguna clase, ni cuando se caen ni cuando se encienden, ya que son demasiados y no controlamos del todo si los alumnos los encienden o apagan.

Los "SERVIDORES" si envían notificaciones acerca de su estado, si un servicio falla, o una máquina pierde ping, envían un email al respecto, todos los equipos que no son clientes, entran en el grupo de servidores, incluidos los monitores y los switches.

Las notificaciones que se envían desde nagios corresponden siempre a un cambio de estado, es decir, un equipo/servicio que pasa de apagado a encendido, o de encendido a pagado. Si un equipo se apaga, recibimos un correo informando de que se ha apagado, y no volvemos a recibir ningún correo del host hasta que este vuelve a ser encendido, aunque pasen días entre un estado y otro.

Añadir un nuevo servicio.

Este procedimiento se puede resumir en 3 pasos. Desde docserv2.lab.it.uc3m.es:

  • Definir ubicación del script a utilizar. Generalmente /usr/lib/nagios/plugins/
  • Añadir el comando que va a utilizar Nagios para llevar a cabo la monitorización. Modificar el fichero .cfg correspondiente. Generalmente /etc/nagios-plugins/config/<fichero>.cfg
 La estructura que debe tener el nuevo comando es la siguiente:
 
 define command{
       command_name    <nombre_comando>
       command_line    [intérprete] <Ruta completa del script a utilizar>
 }
  
 <nombre_comando>: Con este nombre se debe llamar a la hora de definir el servicio.
  
 <Ruta completa del script a utilizar>: Es la ruta del apartado anterior.
  
 [intérprete]: Es opcional, algunas veces hay que especificar explícitamente el intérprete de comandos para ejecutar el script. Por ejemplo, si el script está escrito en perl, se debe poner su ruta, /usr/bin/perl
  • Definir el servicio en el equipo que se va a monitorizar.
 En cada equipo se debe especificar el servicio que va a ejecutar. Dependiendo del tipo de equipo el fichero .cfg varía. Generalmente /etc/nagios3/Equipos/<Tipo de equipo>/<fichero.cfg>
  
 <Tipo de equipo>:Servidores, PuntosAcceso, Clientes, Monitores, Kvm, Switchs...
  
 <fichero.cfg>: Fichero para definir los servicios que tendrá cada equipo.
  
 La estructura de un servicio dentro del fichero .cfg correspondiente es:
 
 define service{
       use                     servicio
       host_name               <nombre_del_host>
       service_description     <Descripción>
       check_command           <nombre_comando>!<argumentos_opcionales> Debe coincidir con el comando del apartado anterior. Puede incluir parámetros de ejecución separados por un simbolo ! dependiendo de la sintaxis.
 }

Miguelg (discusión) 17:14 29 may 2015 (CEST)

Docencia

En los CLIENTES monitorizamos estos servicios :

PING    -- Nos indica si el equipo tiene red o no.
SSHD    -- Nos permite saber si el equipo responde a peticiones ssh.

Ya que la idea de monitorizar los clientes, es conseguir un estado de OK o DOWN básico, para saber cuantos equipos están fuera de servicio y para usarlo a la hora de revisar aulas, solo se monitorizan dos cosas, que el equipo tiene ping, y que no está colgado, ya que SSHD responde a las peticiones. Ningun equipo incluido en el grupo de clientes envía notificaciones de ningún tipo, el objetivo de incluirlos en Nagios es para realizar consultas sobre su estado de forma "manual", no para recibir notificaciones sobre su estado de forma automática.


Departamento

En este apartado o grupo, entran todos los servidores del departamento, los switches, algunos de los equipos especiales que usamos los técnicos y los monitores, que aunque son de docencia, al ser equipos críticos sobre los que se quiere recibir notificaciones de estado, se han incluido en este grupo.

En los SERVIDORES monitorizamos estos servicios :

PING       -- Nos indica si el equipo tiene red o no. 
SSHD       -- Nos permite saber si el equipo responde a peticiones ssh.
NFS        -- Nos indica si el servicio de NFS está funcionando.
BANDWITH   -- Nos da una medida del ancho de banda que está usando el servidor.

No todos los servidores aceptan todos los chequeos, de forma que los hay que tienen monitorizadas 4 cosas, y los hay que solamente monitorizan el servicio de SSH, ya que para los chequeos de SNMP es necesario tiene instalado un demonio en el host sobre el que se hace el check y es necesario tener configurado el servicio de SNMP.

En los SWITCHES monitorizamos estos servicios :

PING                -- Nos indica si el equipo tiene red o no.
PUERTO X            -- Nos indica el estado del puerto, si tiene conexión y el ancho de banda que está usando.
BANDWITH INPUT :    -- Nos indica el ancho de banda de entrada del switch.
BANDWITH OUTPUT :   -- Nos indica el ancho de banda de salida del switch.

En los MONITORES monitorizamos mas servicios :

PING    -- Nos indica si el equipo tiene red o no.
SSHD    -- Al igual que los clientes, nos permite saber si el equipo responde a peticiones ssh.
NFSD    -- Nos indica si el servicio de NFS que exporta las cuentas de los alumnos, está funcionando.
APACHE2 -- Nos dice si el servidor de páginas web de apache está corriendo.
FTP     -- Nos indica si el servicio de FTP se encuentra en marcha.

Ficheros importantes para la configuración de nagios.

El fichero de configuración general de nagios que se encuentra en la ruta /etc/nagios3/nagios.cfg contiene parámetros básicos de la configuración, tales como:

Rutas donde buscar configuraciones añadidas.
Rutas donde buscar hosts para ser monitorizados.
Número de chequeos por minuto.
Tiempo entre chequeos.
Numero máximo de chequeos al mismo tiempo.
Y muchas mas cosas... es un fichero de 1300 lineas.

Nuestras configuraciones propias se encuentran bien señaladas mediante comentarios dentro del fichero de nagios.cfg


Los ficheros de configuraciones añadidos, son ficheros en los que se definen chequeos personalizados, o los hosts que se van a monitorizar.

Los ficheros de configuración de los hosts que monitorizamos se encuentran repartidos en varias carpetas, todas ellas cuelgan de /etc/nagios3/ y tienen esta estructura:

/etc/nagios3/
            Switchs/
                    A05
                    B01-B02
                    J02-J03
            Servidores/
            Clientes/
                    B01
                    B02
                    D03
                    D04
                    J02
                    J03
                    Especiales
                    Monitores

Existen también unos ficheros de configuracion generales, que se encuentran en : /etc/nagios3/conf.d/

contacts_nagios2.cfg         -- Aquí definimos las formas y los grupos de contacto que se usan para las notificaciones de los servicios y los hosts.
generic-host_nagios2.cfg     -- Aquí definimos unos tipos genéricos de hosts, en nuestro caso hay dos tipos, los clientes y los servidores.
generic-service_nagios2.cfg  -- Aquí se definen unos tipos genéricos de servicios, estableciendo cuando se ejecutan, si envía notificaciones o no, a quien las envía, etc...
localhost_nagios2.cfg        -- Aquí se configuran algunas configuraciones acerca de la monitorización del equipo anfitrión.
hostgroups_nagios2.cfg       -- Aquí se definen los grupos de hosts que tenemos establecidos, en nuestro caso, los separamos por aulas (B01, B02, etc...) y por tipo (Switches, Servidores, Monitores y Especiales)
timeperiods_nagios2.cfg      -- Aquí se definen los modelos de tiempo que luego se asignan a cada tipo check, si se ejecuta todos los días a todas horas es 24x7 si se ejecuta solo entre semana es 24x5, etc...

Es desde estos ficheros desde donde de configuran que chequeos se quieren ejecutar para ese host en concreto.

Que chequeos se ejecutan.
Que parámetros le pasamos.

Los chequeos de nagios también tienen sus propios ficheros de configuración en esta ruta /etc/nagios-plugins/config y es en estos ficheros donde se establece el comando que se usa para ejecutar el check : En esta carpeta tenemos un fichero que se llama snmp_uc3m.cfg en el que se han definido todos los chequeos que he tenido que adaptar para nuestros sistemas, los que no he tenido que modificar no han sido incluidos en este fichero.

Los parámetros le queremos pasar.
El binario que queremos ejecutar.

Los ejecutables de los chequeos de nagios se encuentran en esta carpeta : /usr/lib/nagios/plugins/

Aquí se puede modificar el código de los chequeos, o incluir códigos que consigamos descargarnos.
Como por ejemplo Bandwith.sh que fue descargado y se usa en los chequeos de algunos switches.

Por ultimo, nagios establece una diferencia entre los chequeos que el trae predefinidos, y los chequeos que incluimos nosotros de forma manual. Los chequeos que establecemos nosotros de forma manual se denominan external comandsv, y los trata de forma diferente al resto, por lo que podemos aplicar diferentes intervalos de tiempo para unos que para otros.

El fichero de configuración de los external comands, esta en /etc/nagios3/Comandos/commands.cfg, mientras que los ejecutables han de encontrarse en la ruta /usr/lib/nagios/plugins/ al igual que los demás.

Añadir nuevos equipos a Nagios

Se recomienda haber leído previamente todo el texto anterior a esta sección para una completa comprensión del procedimiento.

Se ejemplifica con el equipo dit112.

Fichero de configuración

Lo primero que tenemos que hacer para añadir un nuevo equipo a Nagios es crear un fichero de configuración para dicho equipo. Cualquiera de los otros existentes nos sirven como plantilla.

Lo primero es conectarnos a docserv2 y acceder al directorio que nos interese según el tipo de equipo a añadir. En este ejemplo añadimos un equipo de despacho, así que accederemos a Especiales.

rejimene@docserv2:/$ cd /etc/nagios3/Equipos/Clientes/Especiales/
rejimene@docserv2:/etc/nagios3/Equipos/Clientes/Especiales$ ls
dit105.cfg  dit106.cfg  dit111.cfg  dit184.cfg
rejimene@docserv2:/etc/nagios3/Equipos/Clientes/Especiales$ sudo cp dit105.cfg dit112.cfg

A continuación, editamos el nuevo archivo y cambiamos el equipo origen de la copia por el que nos interesa, en este caso cambiaríamos todo aquello donde ponga "dit105.lab.it.uc3m.es" por "dit112.lab.it.uc3m.es".

Interfaz web

El siguiente paso es añadir el nuevo equipo al grupo correspondiente de Nagios para que salga en la interfaz web.

rejimene@docserv2:/$ cd /etc/nagios3/conf.d/
rejimene@docserv2:/$ sudo vi hostgroups_nagios2.cfg

Dentro de este archivo nos vamos al grupo que nos interese y añadimos el equipo copiando el formato del resto.

El último paso es reiniciar el servicio para que coja la nueva configuración:

rejimene@docserv2:/$ sudo /etc/init.d/nagios3 restart

Ya podemos ir a la interfaz de Nagios y comprobar que se han añadido correctamente los equipos.

Configurar archivos de nagios para mostrar gráficas de ping, SSH y CPU-utilization

Si queremos añadir un nuevo servido debemos crearnos el archivo .cfg y alojarlo dentro de la carpeta que corresponda al servidor, cliente, switch... dentro de la ruta /etc/nagios3/Equipos en docserv2.

Un archivo con el host configurado sería:

define host{
host_name               it001.lab.it.uc3m.es
alias                   it001
use                     servidores,host-pnp
address                 163.117.144.15
parents                 labsb01-1.lab.it.uc3m.es
}

host-pnp nos permitiría hacer gráficas del ping a ese host debido a la configuración de pnp4nagios.

Un archivo algo más complejo con SSH y CPU sería:

define host{
host_name               bambam.it.uc3m.es
alias                   bambam
use                     servidores,host-pnp
address                 163.117.139.118
}
define service{
use                     servicio,srv-pnp
host_name               bambam.it.uc3m.es
service_description     SSH
check_command           check_ssh_port!7000
}
define service{
use                     servicio,srv-pnp
host_name               bambam.it.uc3m.es
service_description     CPU Utilization
check_command           check_snmp_load_v2!netsl!4,4,3!6,6,4!-f!etl-monitorizacion
}

Definimos el host, con host-pnp como uso, y dos servicios. El primero de ellos sería el SSH con puerto 7000 y con uso srv-pnp (lo cual también nos haría gráficas). En el segundo servicio tenemos la CPU Utilization con el check_snmp_load, el primer argumento es el tipo de máquina con sus OIDS. También podríamos pasar estas como parámetro mirándolas en cacti o modificándolas en las que vienen por defecto en los comandos de nagios.

Otro ejemplo sería:

define host{
host_name               itswitch11.lab.it.uc3m.es
alias                   itswitch11
use                     servidores,host-pnp
address                 163.117.171.11
parents                 benet.lab.it.uc3m.es
}
define service{
use                    generic-service,srv-pnp
host_name              itswitch11.lab.it.uc3m.es
service_description    CPU load
check_command          check_snmp_load_v2!cata!60,40,30!70,60,50!-f!etl-monitorizacion
}
define service{
use                    generic-service,srv-pnp
host_name              itswitch11.lab.it.uc3m.es
service_description    Temperature
check_command          check_snmp!itswitch11.lab.it.uc3m.es -o .1.3.6.1.4.1.674.10895.5000.2.89.53.15.1.9.1 -c 43 -w 38 -C etl-monitorizacion
}

Aquí hemos definido el servicio CPU load o utilization con las OIDs cata, modificadas previamente para que se cree un registro cada 5s, 1 min y 5 mins. En el servicio Temperature, hemos definido directamente la OID con un valor crítico de 43 grados y con aviso a los 38.

Para manejar la página web voy a dar algunas indicaciones básicas.

Esta es la vista a la que accedemos nada mas conectarnos a la url de nagios.

Home.png


Para ver con claridad los diferentes host que tenemos, ordenador por grupos, esta es la mejor vista.


HostGroups.png


Para obtener un resumen por grupos del estado de los clientes, esta es la mejor vista.


Sumary.png


Si seleccionamos uno de los diferentes grupos en los que tenemos divididos los hosts, obtenemos información mas detallada acerca de cada uno de sus miembros.


Grupos.png


Si seleccionamos un host concreto, accederemos a esta vista.


Archivo:Monitor04.png


Desde la vista de cada host, podemos ejecutar una serie de acciones sobre el mismo, tales como re-ejecutar chequeos, o desactivar las notificaciones, temporal o definitivamente, etc...


Comandos.png


Para obtener una lista de los últimos estados del equipo, accedemos a esta página.


History.png


Para obtener una grafica acerca del estado de un equipo durante un periodo de tiempo accedemos a esta página.


Trned.png


Podemos realizar algunos cambios sobre la gráfica, tales como el periodo de tiempo que abarca.


Cambios.png


Este es el resultado, una gráfica que nos indica el tiempo (rojo) que un equipo ha permanecido apagado o sin red, y (verde) el tiempo que un equipo ha permanecido encendido.


Grafica.png