Quantcast
Channel: PNP4Nagios – El Despistado.
Viewing all articles
Browse latest Browse all 9

Nagios Core 4 + PNP4Nagios. Instalación y configuración desde fuentes en Debian 7 (wheezy).

$
0
0

Recientemente mostramos como instalar la nueva versión de Nagios, Nagios Core 4 en CentOS / Redhat. En este artículo vamos a repetir con Debian 7 / Ubuntu (posiblemente no cambie apenas nada para este). La instalación se realizará compilando ya que parece que de momento no hay paquetes disponibles para las distribuciones habituales. Además también instalaremos PNP4Nagios.

La instalación de esta versión 4 parece que es idéntica a la de la versión 3 por lo que seguiremos la misma guía de instalación, en nuestro caso la guía para Ubuntu nos puede valer. Aunque veremos que no está todo tan claro, si no no habría razón para escribir este artículo 🙂

Instalación de Nagios.

Instalamos previamente algunos paquetes necesarios:

apt-get install build-essential apache2 libapache2-mod-php5 libgd2-xpm-dev

Cuentas de usuario y grupo.

Creamos cuenta para Nagios (por defecto crea el grupo) y asignamos password:

useradd -m -s /bin/bash nagios
passwd nagios

Creamos un grupo nagcmd que usaremos luego para los commandos externos y metemos en dicho grupo a nuestro usuario Nagios y al usuario que usa apache.

/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -a -G nagcmd nagios
/usr/sbin/usermod -a -G nagcmd www-data

Bajamos  Nagios 4 (core) en su versión “free”, descomprimimos y compilamos (asignandole el grupo). Nos irá guiando por todos los pasos:

./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-commandmode
make install-config
make install-webconf
make install-exfoliation
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
service apache2 restart

Hasta aquí todo bien… excepto que cuando vamos a iniciar el demonio de nagios nos dará un error. Si echamos un ojo al script veremos que… es para Redhat.

# /etc/init.d/nagios start
/etc/init.d/nagios: 20: .: Can't open /etc/rc.d/init.d/functions

Para hacerlo funcionar correctamente he pillado un script de Nagios 3 (el que viene con el empaquetado de Nagios para Debian 7) y lo he modificado. Puedes bajártelo aquí (renómbralo como “nagios”)

Según está funciona correctamente aunque veras que al iniciar / parar Nagios da un error. Esto es debido a que usa un plugin para detectar si Nagios está ejecutándose en un caso concreto y no lo encuentra porque aún no hemos instalado los plugins. Posteriormente al instalar estos se subsanará.

Nagios Plugins.

Instalamos previamente algunos paquetes necesarios para algunos plugins. Si no vamos a usar plugin concretos (samba, mysql, radius,…) no es necesario que instalamos esos paquetes en concreto:

apt-get install apache2 libpng12-dev libjpeg8-dev libgd2-xpm-dev \
fping qstat libldap2-dev libmysqlclient-dev \
libradius1 libradius1-dev libsnmp-base libsnmp15 libsnmp-dev libnet-snmp-perl \ 
smbclient samba-common ntp libpq-dev snmp snmpd openssl rrdtool librrds-perl \ 
gcc make

Bajamos, descomprimimos y compilamos los plugins:

./configure -with-nagios-user=nagios -with-nagios-group=nagios
 make
 make install

Si reiniciamos Nagios veremos que ya no nos da error el script de inicio.

Si accedemos a nuestro Nagios veremos que tiene algunos chequeos clásicos en el localhost que ya están usando los plugins instalados.

NagiosCore4_VistaLocalhost

Dado que cada vez que cambiamos la configuración de ficheros de Nagios conviene chequearla (y necesitamos “recargar” la configuración) nos pueden venir bien unos alias para tenerlo más a mano. En el fichero .bashrc podemos añadirlos.

# ALIAS PARA NAGIOS
alias q1='/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg'
alias q2='/etc/init.d/nagios reload'

PNP4Nagios.

Como hemos instalado Nagios Core 4 y los plugins compilando, la mejor opción será también instalar PNP4Nagios de esta forma.
Requisitos: Perl, RRDtool, PHP, mod_rewrite de apache. Instalamos los que nos faltan:

apt-get install php5-gd librrds-perl

Bajamos PNP4Nagios, descomprimimos y compilamos:

./configure
make all
make fullinstall
*** Configuration summary for pnp4nagios-0.6.21 03-24-2013 ***
General Options:
 ------------------------- -------------------
 Nagios user/group: nagios nagios
 Install directory: /usr/local/pnp4nagios
 HTML Dir: /usr/local/pnp4nagios/share
 Config Dir: /usr/local/pnp4nagios/etc
 Location of rrdtool binary: /usr/bin/rrdtool Version 1.4.7
 RRDs Perl Modules: FOUND (Version 1.4007)
 RRD Files stored in: /usr/local/pnp4nagios/var/perfdata
 process_perfdata.pl Logfile: /usr/local/pnp4nagios/var/perfdata.log
 Perfdata files (NPCD) stored in: /usr/local/pnp4nagios/var/spool
Web Interface Options:
 ------------------------- -------------------
 HTML URL: http://localhost/pnp4nagios
 Apache Config File: /etc/apache2/conf.d/pnp4nagios.conf

Nos copia el demonio npcd. Configuramos npcd y nagios para arrancar al inicio y reiniciamos los implicados:

update-rc.d nagios start 20 2 3 4 5 . stop 80 0 1 6
update-rc.d npcd start 19 2 3 4 5 . stop 79 0 1 6
service npcd restart && service nagios restart && service apache2 restart

Si accedemos al interface http://nuestro_nagios/pnp4nagios/ deberíamos ver todo en verde menos un error: “Apache mod_rewrite is not enabled”. Para activar mod_rewrite:

a2enmod rewrite && service apache2 restart

Recargamos la página y debemos tener ya todo OK. Procedemos como dice a renombrar el fichero /usr/local/pnp4nagios/share/install.php para que se dé por enterado de que está correctamente instalado.
Volvemos a cargar la página y veremos que nos da otro error:

Please check the documentation for information about the following error:
perfdata directory “/usr/local/pnp4nagios/var/perfdata/” is empty. Please check your Nagios config. Read FAQ online

Este es normal ya que no hemos acabado la configuración. Vamos con ello…

PNP4Nagios tiene varias formas de configurar la integración con Nagios. Usaremos el método bulk-mode. Si estás pensando en usar el más sencillo e igual de eficaz “Bulk Mode with npcdmod” olvídalo de momento. La API “event broker”de Nagios Core 4 ha cambiado, con lo cual el broker nocdmod no va a funcionar (al menos no el de la última versión probada en este artículo – pnp4nagios 0.6.21-).

En el directorio /usr/local/pnp4nagios/etc tenemos dos ficheros de ejemplo para hacer copy/paste.
Del fichero nagios.cfg-sample copiamos la siguiente configuración a el fichero /usr/local/nagios/etc/nagios.cfg

 

#
# Bulk / NPCD mode
# 
process_performance_data=1

# *** the template definition differs from the one in the original nagios.cfg
#
service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata
service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=15
service_perfdata_file_processing_command=process-service-perfdata-file

# *** the template definition differs from the one in the original nagios.cfg
#
host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$
host_perfdata_file_mode=a
host_perfdata_file_processing_interval=15
host_perfdata_file_processing_command=process-host-perfdata-file

Del fichero misccommands.cfg-sample copiamos la siguiente configuración a /usr/local/nagios/etc/objects/commands.cfg

#
# Bulk with NPCD mode
#
define command {
 command_name process-service-perfdata-file
 command_line /bin/mv /usr/local/pnp4nagios/var/service-perfdata /usr/local/pnp4nagios/var/spool/service-perfdata.$TIMET$
}
define command {
command_name process-host-perfdata-file
command_line /bin/mv /usr/local/pnp4nagios/var/host-perfdata /usr/local/pnp4nagios/var/spool/host-perfdata.$TIMET$
}

OJO, la segunda y tercera línea de cada command es solo una línea, la misma…

Reiniciamos el demonio npcd de pnp4nagios y el propio Nagios:

service npcd restart && service nagios restart

Y ya podemos conectarnos a la URL de PNP4Nagios. En breve desaparecerá el error y veremos al rato que empieza a pintar nuestras gráficas.

Nos faltaría ahora una cosa importante. Poder acceder directamente desde el Host / Servicio en Nagios a las gráficas correspondientes de este sin tener que ir a el interface de PNP4 para localizarlo. Siguiendo las instrucciones de la documentación nos vamos directamente a configurarlo para POPUPs. Creamos unos “templates” para aplicarlos luego a los objetos.
En el fichero /usr/local/nagios/etc/objects/templates.cfg añadimos:

define host {
 name host-pnp
 action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_
 register 0
}
define service {
 name srv-pnp
 action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$
 register 0
}

Y modificamos nuestros objetos Host / Servicios para que hereden dicha plantilla. Por ejemplo:

define host{
 use linux-server,host-pnp
 host_name localhost
 alias localhost
 address 127.0.0.1
 }
define service{
 use local-service,srv-pnp
 host_name localhost
 service_description PING
 check_command check_ping!100.0,20%!500.0,60%
 }

OJO. Es necesario copiar un fichero a la configuración web de Nagios y las rutas de la doc. de PNP4Nagios no coinciden con las nuestras. Copiamos el fichero correctamente de los fuentes de pnp4nagios:

cp contrib/ssi/status-header.ssi /usr/local/nagios/share/ssi/

Reiniciamos nagios y ncmd (módulo de pnp):

 service npcd restart && service nagios restart

Veremos que nos han aparecido los iconos para acceder pinchando directamente a las gráficas del Host / Servicio directamente desde este y además, si pasamos solo el ratón por el icono nos muestra ya un popup con la gráfica. Bonito ¿no?.

pnp4nagios_icon_graph_popup
Si no controlas bien el tema de los ficheros de configuración de Nagios es que no leíste el artículos sobre ficheros de configuración de Nagios . Si no te aclaras con los objetos, échale un ojo al artículos sobre configuración de objetos en Nagios.

Podemos añadirle la plantilla a todos aquellos host / servicios que queramos tengan gráfica. Las estrategias pueden ser diferentes; uno a uno, definición de servicios asignadas a grupos de host en lugar de a hosts (lo normal), asignar la plantilla a la plantillas a otra plantilla (local-service p.e.), ….

Para saber más de PNP4Nagios échale un ojo al artículo de Características de PNP4Nagios.

check_mk

Si estás pensando instalar check_mk parece que de momento no es posible. Nagios Core 4 cambia la arquitectura de la API “Event broker” con respecto a la versión previa y parece que de momento (probado con check_mk-1.2.3i1) MK_Livestatus no incluye el broker adecuado para esta versión de Nagios 4. Si intentas instalarlo, al iniciar Nagios verás que da un error en nagios.log al cargar el broker de MK_Livestatus:

[1380298713] Error: Could not load module '/usr/lib/check_mk/livestatus.o' -> /usr/lib/check_mk/livestatus.o: undefined symbol: last_command_check
[1380298713] Error: Failed to load module '/usr/lib/check_mk/livestatus.o'.
[1380298713] Error: Module loading failed. Aborting.

Imagino que no tardarán en hacer compatible dicho módulo. NUEVO (06/04/2014) Ya hay versión de check_mk con Livestatus para Nagios Core 4.

 

The post Nagios Core 4 + PNP4Nagios. Instalación y configuración desde fuentes en Debian 7 (wheezy). appeared first on El Despistado..


Viewing all articles
Browse latest Browse all 9