Nagios y NRPE Material Completo
Nagios y NRPE Material Completo
Monitoreo: Capítulo 5
Nagios y NRPE
blog.carreralinux.com.ar 1
MONITOREO DE REDES LINUX · Capítulo 05
ÍNDICE
Nagios 3
Objetivos y necesidades 4
Descripción 5
Instalación 6
Creando directivas 7
Agregando grupo de contactos 8
Agregando contactos 10
Agregando comandos 11
Agregando servicios 14
Grupos de servicios 16
Creando el host-template 17
Agregando un nuevo check 22
Utilizando el agente de Nagios 23
blog.carreralinux.com.ar 2
MONITOREO DE REDES LINUX · Capítulo 05
Nagios
Nagios, como diferentes tipos de software libre, tendrá su versión community (que
es con la que vamos a trabajar ahora) y su versión paga.
Creado para ayudar a los administradores a tener el control de qué está pasando en
la red que administran y conocer los problemas que ocurren en la infraestructura que
manejan antes de que los usuarios y gerente, para de esta manera como comenta-
mos anteriormente, se pueda tomar la iniciativa o asumir la responsabilidad de hacer
que las cosas sucedan; decidir en cada momento lo que queremos hacer y cómo lo
vamos a hacer, debido a que este software nos permite obtener datos, interpretarlos
y tomar decisiones en base a ello como:
· Conservar y almacenar datos de la red para manejar reportes y tendencias.
· Ver y analizar la red, así como el tráfico de la red a través del tiempo.
· Monitorear el estado de la red en comparación a los reportes de análisis.
· Generar reportes sustentados para justificar actualizaciones de la red.
blog.carreralinux.com.ar 3
MONITOREO DE REDES LINUX · Capítulo 05
Para facilitar tareas de explotación de data mining hay diferentes aditivos como un
visor de reportes integrados en el cual se puede ver el histórico de actividad y perfor-
mance de servicios, y además un visor de diagramas de red con el estado actual de
cada equipo.
Los mismos pueden estar programados en diversos lenguajes como C, C++, Python,
Perl, PHP, Java, Bash etc., ya que aunque Nagios esté desarrollado en su mayoría en
c, de los plugins solo procesa los datos recibidos, para la posterior elaboración y en-
vío de notificaciones a los encargados de la administración del sistema en cuestión.
Objetivos y necesidades
blog.carreralinux.com.ar 4
MONITOREO DE REDES LINUX · Capítulo 05
3° pos para una elaboración de reportes etc., por medio de testeo de paque-
tes de red, o haciendo uso de diferentes funciones que provee el protocolo
SNMP (Simple Network Management Protocol) que nos permite gestionar
y/o supervisar datos de diferentes elementos y componentes de la red
como routers, switches, servidores etc. y al ser un protocolo standard es
posible monitorizar una amplia variedad de casos en escenarios con siste-
mas ó equipos diferentes.
Descripción
blog.carreralinux.com.ar 5
MONITOREO DE REDES LINUX · Capítulo 05
Instalación
Hechas las presentaciones vamos a instalar Nagios. En este caso vamos a utilizar los
repositorios y ciertos paquetes adicionales que nos van a ayudar al correcto funcio-
namiento de Nagios:
# apt-get -y install perl rrdtool freetype2-demos graphviz ndou-
tils-common nagios3 nagios-plugins nagios-snmp-plugins nagios-nr-
pe-plugin
blog.carreralinux.com.ar 6
MONITOREO DE REDES LINUX · Capítulo 05
Creando directivas
Las diferentes carpetas y/o archivos que incluye podremos obtenerlos de las senten-
cias cfg_file y cfg_dir.
# Commands definitions
cfg_file=/etc/nagios3/commands.cfg
blog.carreralinux.com.ar 7
MONITOREO DE REDES LINUX · Capítulo 05
Cuando revisemos si los archivos de configuración están OK, el error puede hacer
referencia a que un archivo de configuración no puede cargar porque otro archivo de
configuración, al que hace referencia, está mal.
Esos grupos están conformados por contactos, y dichos contactos son a los que le
definimos las direcciones de correo:
# cat /etc/nagios3/nagios.cfg | grep conf.d | grep -v \#
cfg_dir=/etc/nagios3/conf.d
Aquí podemos ver que incluye todo un directorio llamado conf.d. Si observamos que
hay dentro de ese directorio:
# ls /etc/nagios3/conf.d
blog.carreralinux.com.ar 8
MONITOREO DE REDES LINUX · Capítulo 05
blog.carreralinux.com.ar 9
MONITOREO DE REDES LINUX · Capítulo 05
Agregando contactos
Aquí es donde se crean los miembros del grupo. Vamos a crear un par de contactos.
Los archivos para que sean leídos tienen que terminar en .cfg. La totalidad del direc-
torio será leída ya que:
# vi /etc/nagios3/conf.d/contacts-CLA.cfg
define contact{
contact_name clatutor
alias Administrador Nagios
contactgroups carreralinux
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email alejandro.drabenche@carre-
ralinux.com.ar
}
define contact{
contact_name pgrillo
alias La voz de la oncienca
contactgroups carreralinux
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email [email protected]
}
blog.carreralinux.com.ar 10
MONITOREO DE REDES LINUX · Capítulo 05
Agregando comandos
Esto es una de las grandes virtudes de Nagios. Nagios no precisa un script hecho
en un lenguaje específico. Simplemente necesita un script que devuelva 0 para OK,
1 para WARNING y 2 para CRITICAL. O sea, cualquier cosa que sea chequeable
mediante un script Nagios lo podrá revisar.
blog.carreralinux.com.ar 11
MONITOREO DE REDES LINUX · Capítulo 05
Podemos hacer una división entre los comandos de performance y los comandos de
chequeo, nosotros vamos a utilizar mayormente los de chequeo. Estos últimos traen
datos de los equipos a monitorear, como CPU, memoria:
# cat /etc/nagios3/nagios.cfg | grep cfg_dir | grep config | grep -v \#
cfg_dir=/etc/nagios-plugins/config
blog.carreralinux.com.ar 12
MONITOREO DE REDES LINUX · Capítulo 05
Donde:
· command_name: el nombre que el comando tendrá para nuestra configuración per-
sonal de Nagios. Dicho de otra manera, este es el nombre con el que invocaremos al
comando y en este caso precisaremos pasarle 6 parámetros.
· command_line: modo del cual Nagios ejecutará el comando en cuestión, con su ruta
física y argumentos Lo que vemos en entre signos $ son variables internas de Nagios
o lo mismo que decir variables de entorno, llamadas macros, las más comunes son:
· $USER1$: contiene datos del path de ejecución de los plugins de Nagios
· $HOSTADDRESS$: tiene la IP de hosts desde el cual se está corriendo el ser-
vicio
· $ARG1$ $ARG2$ $ARG3$ $ARG4$: son los números en orden de argumentos
que recibe el comando a ejecutar. Estos argumentos son enviados cuando invo-
camos al comando.
Es por eso que si quisiéramos agregar nuevos servicios, con sus respectivos coman-
dos para chequearlo, simplemente agregaríamos aquí el .cfg correspondiente. Eso
sí, no es que cada cosa que chequeamos esté en un archivo separado, sino que los
chequeos de http, por ejemplo, están en el mismo archivo:
# cat /etc/nagios-plugins/config/http.cfg
Para que quede un poco más claro el concepto, veamos uno de los checks de http:
# ‘check_http_hostname’ command definition
define command{
command_name check_httpname
command_line /usr/lib/nagios/plugins/check_http -H
‘$HOSTNAME$’ -I ‘$HOSTADDRESS$’ ‘$ARG1$’
}
blog.carreralinux.com.ar 13
MONITOREO DE REDES LINUX · Capítulo 05
El comando que ven, es el comando que ejecuta Nagios siendo usuario Nagios, por
lo que podremos ejecutarlo de manera manual siendo Nagios:
# su -s /bin/bash nagios
$ / usr/lib/nagios/plugins/check_http
Vemos que nos devuelve el help. Ahora, guiándonos con lo anterior, ejecutemos el
comando con los parámetros correctos:
$ /usr/lib/nagios/plugins/check_http -H www.institutolinux.com
Y el valor de salida:
$ echo $?
0
Agregando servicios
blog.carreralinux.com.ar 14
MONITOREO DE REDES LINUX · Capítulo 05
Primero veamos el archivo de template del servicio. Este archivo define el compor-
tamiento y las propiedades del servicio por lo que cualquier servicio asociado a este
template se comportará de la misma manera, que es la siguiente:
# vi /etc/nagios3/conf.d/cla_services.cfg
# definición servicio SNMP
define service{
name cla-service
service_description Chequeo servicios criticos
active_checks_enabled 1
servicegroups criticos
passive_checks_enabled 1
parallelize_check 1
obsess_over_service 1
check_freshness 0
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
notification_interval 0
is_volatile 0
check_period 24x7
normal_check_interval 2
retry_check_interval 1
max_check_attempts 4
notification_period 24x7
notification_options w,u,c,r
contact_groups carreralinux
register 0
}
blog.carreralinux.com.ar 15
MONITOREO DE REDES LINUX · Capítulo 05
Grupos de servicios
blog.carreralinux.com.ar 16
MONITOREO DE REDES LINUX · Capítulo 05
Creando el host-template
Ahora vamos a crear el template para el host ya que como les comenté anteriormen-
te, para Nagios una cosa son los servicios y otra es el host:
# vi /etc/nagios3/conf.d/cla_hosts.cfg
define host{
name cla-critical-host
hostgroups critical-hosts
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
check_command check-host-alive
max_check_attempts 3
notification_interval 0
notification_period 24x7
notification_options d,u,r
contact_groups carreralinux
register 0
}
blog.carreralinux.com.ar 17
MONITOREO DE REDES LINUX · Capítulo 05
define host{
name cla-noncritical-host
hostgroups noncritical-hosts
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
check_command check-host-alive
max_check_attempts 3
notification_interval 0
notification_period never
notification_options d,u,r
contact_groups carreralinux
register
}
blog.carreralinux.com.ar 18
MONITOREO DE REDES LINUX · Capítulo 05
define hostgroup {
hostgroup_name noncritical-hosts
alias noncritical-hosts
}
Ahora es donde todo lo anterior empieza a tener sentido, ya que vamos a definir los
hosts y los servicios que vamos a chequear dentro de los mismos. Voy a crear dentro
de Nagios, una carpeta que sea servers:
# mkdir -p /etc/nagios3/servers/
blog.carreralinux.com.ar 19
MONITOREO DE REDES LINUX · Capítulo 05
Primero definamos que solo vamos a hacer un check del servicio de SSH al cliente:
# vi /etc/nagios3/servers/monitoreo-cliente.cfg
define host{
use cla-noncritical-host
host_name monitoreo-cliente
alias monitoreo-cliente
address 192.168.1.113
icon_image base/debian.png
vrml_image debian.png
statusmap_image base/debian.gd2
}
Un primer bloque que define el host y ahí indicamos que estamos hacien-
blog.carreralinux.com.ar 20
MONITOREO DE REDES LINUX · Capítulo 05
Y reiniciamos el servicio:
# /etc/init.d/nagios3 restart
blog.carreralinux.com.ar 21
MONITOREO DE REDES LINUX · Capítulo 05
Que es el ejemplo de ejemplo el http que habíamos visto antes; pero vamos a hacerlo
fallar a propósito pasándole como parámetro el puerto 8080. Por lo que si el coman-
do era:
/usr/lib/nagios/plugins/check_http -H ‘$HOSTNAME$’ -I ‘$HOSTAD-
DRESS$’ ‘$ARG1$’
Y reiniciar:
# /etc/init.d/nagios3 restart
blog.carreralinux.com.ar 22
MONITOREO DE REDES LINUX · Capítulo 05
Por ejemplo, el script de chequeo de especio en disco en el cual le pido que me avise
si el filesystem / warning cuando tenga menos de 2GB y critical si tiene menos de
1GB. Manualmente, ejecutaríamos:
/usr/lib/nagios/plugins/check_disk -w 2000 -c 1000 -p /
Bien, esto lo está haciendo en el equipo local; pero yo quiero que esto mismo lo
ejecute el equipo remoto, para que me devuelva la información del equipo remoto.
Entonces Nagios le solicitará al agente NRPE que está corriendo en el equipo remoto
que, como usuario Nagios, ejecute este scritpt.
blog.carreralinux.com.ar 23
MONITOREO DE REDES LINUX · Capítulo 05
Luego debemos compilarlo desde el source para activar una opción que no viene por
defecto:
# cd /tmp
# wget --no-check-certificate https://github.com/NagiosEnterpri-
ses/nrpe/releases/download/3.0.1/
# tar-zxvf nrpe-3.0.1.tar.gz
# cd nrpe-3.0.1
# ./configure --enable-command-args --enable-ssl
# make all
# make install
Esta nos indicará de que dirección/es IP aceptará el agente solicitudes. Aquí debe
figurar la dirección IP de Nagios:
dont_blame_nrpe=1
Este parámetro nos indicará si aceptamos que nos envíen parámetros. O sea, hay
ciertos checks que requieren de parámetros. Si dejamos esto en 1 aceptarán los
mismos.
blog.carreralinux.com.ar 24
MONITOREO DE REDES LINUX · Capítulo 05
Los checks, como por ejemplo el de los discos, tienen la siguiente manera. Veamos
un ejemplo:
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c
10% -p /dev/hda1
Donde:
· check_hda1: es el nombre del check. Esto recordémoslo ya que así lo llamaremos
desde el Nagios
· /usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1: es el comando
que ejecutará.
Por lo que si queremos nosotros crear un nuevo check, debemos respetar esa sinta-
xis. Por lo pronto nosotros modificaremos esta línea para que quede de la siguiente
manera:
command[check_sda]=/usr/lib/nagios/plugins/check_disk -w 20% -c
10% -p $ARG1$
Como podemos ver, cambiamos el nombre del check del plugin y aparte vamos a
pasarle como parámetro la partición a revisar. Guardamos y reiniciamos el agente:
# /etc/init.d/nagios-nrpe-server restart
Para saber si está bien configurado el agente en el cliente, primero deberemos invo-
carlo, desde el NMS, con el siguiente comando:
$ /usr/lib/nagios/plugins/check_nrpe -H 192.168.1.113
NRPE v2.15
blog.carreralinux.com.ar 25
MONITOREO DE REDES LINUX · Capítulo 05
Si todo fue bien nos habrá devuelto la versión de NRPE. Ahora, si queremos invocar
al check:
$ /usr/lib/nagios/plugins/check_nrpe -H 192.168.1.113 -c check_sda
Unknown argument
Usage:
check_disk -w limit -c limit [-W limit] [-K limit] {-p path | -x
device}
[-C] [-E] [-e] [-f] [-g group ] [-k] [-l] [-M] [-m] [-R path ]
[-r path ]
[-t timeout] [-u unit] [-v] [-X type] [-N type]
¿Por qué nos devolvió esto? Bien, esto es porque nuestro check
tenía parámetros, y la respuesta es la que da el comando cuan-
do no tiene parámetros.
O sea, esta respuesta es la respuesta por defecto ante la ejecución de ese comando,
sin parámetros; pero se ejecutó en el cliente.
blog.carreralinux.com.ar 26
MONITOREO DE REDES LINUX · Capítulo 05
blog.carreralinux.com.ar 27