Nagios Core 4
Nagios Core 4
Nagios Core 4
Instalación y
configuración desde fuentes en Debian 7
(wheezy).
15 Replies
artículo
Instalación de Nagios.
Instalamos previamente algunos paquetes necesarios:
Creamos cuenta para Nagios (por defecto crea el grupo) y asignamos password:
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
./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”)
Download
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:
Si accedemos a nuestro Nagios veremos que tiene algunos chequeos clásicos en el localhost
que ya están usando los plugins instalados.
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.
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:
./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
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
#
# 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
#
# 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…
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/
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?.
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: