Servicios

Instalar nagios4 en debian 8 – jessie

Creo que ya es hora de actualizar mi vetusto nagios2 por un nuevo y flamante nagios4 (si, ya sé que me he saltado la 3). A fecha de hoy no existe nagios4 en repositorios oficiales, por lo que instalo directamente desde los fuentes.

La guía oficial de instalación está disponible en Installing_Nagios_Core_From_Source.pdf. A continuación describo el proceso que realizo en mi server.

  • Instalación de prerequisitos.
apt-get update
apt-get install wget build-essential apache2 php5-gd libgd2-xpm-dev libapache2-mod-php5
  • Creación de usuario y adición a grupos.
useradd -m -s /bin/bash nagios
passwd nagios
groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagcmd www-data

  • Descargar source del core y plugins.
wget http://downloads.sourceforge.net/project/nagios/nagios-4.x/nagios-4.0.8/nagios-4.0.8.tar.gz
wget http://nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz
  • Configurar y compilar
# Desde el directorio donde estén los fuentes.
./configure --with-command-group=nagcmd
make all
  • Instalación.
make install
make install-init
make install-config
make install-commandmode
  • Instalación de la interfaz web de Nagios
make install-webconf

Aquí me aparece un error donde indica que no puede crear el archivo nagios.conf

/usr/bin/install: no se puede crear el fichero regular «/etc/httpd/conf.d/nagios.conf»: No existe el fichero o el directorio
Makefile:296: recipe for target 'install-webconf' failed
make: *** [install-webconf] Error 1

Nagios está intentando crear el archivo nagios.conf en /etc/httpd/conf.d/. Pero en debian, el lugar para los archivos de «virtual host» deben ir a /etc/apache2/sites-enabled/. Para solventar el problema, basta con copiar manualmente el archivo nagios.conf a su lugar, ejecutando:

/usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/sites-enabled/nagios.conf

La instalación no copia ciertos archivos necesarios y es necesario hacerlo manualmente.

cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/
chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers
  • Ahora le toca el turno a los plugins
tar xzf nagios-plugins-2.0.3.tar.gz
cd nagios-plugins-2.0.3
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install
  • Crear el usuario nagiosadmin para la interfaz web. También habilitar rewrite y cgis.
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
a2enmod rewrite
a2enmod cgi
service apache2 restart
  • Una vez que tenemos todo compilado e instalado, además de apache2 configurado adecuadamente, ya se puede iniciar nagios.
# Crear un enlace simbólico, para que arranque el servicio al encender nuestra máquina.
ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios

# Comprobar la configuración.
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

# Arrancar nagios.
/etc/init.d/nagios start

Al intentar arrancar devuelve errores que impiden la ejecución de nagios como demonio. Al revisar el script de inicio cambio varios detalles.

#Dentro de /etc/init.d/nagios. Cambiar el nombre de la variable NagiosCGIDir
NagiosCGI=${exec_prefix}/sbin
Vuelvo a compilar la utilidad daemonchk.cgi ya que no se había creado el binario
/downloads/nagios-4.0.8/contrib# make all

La instalación no crea un archivo para systemd y es necesario crearlo a mano. Tenéis más información acerca de systemd por ejemplo en http://www.tecmint.com/manage-services-using-systemd-and-systemctl-in-linux/

#vi /lib/systemd/system/nagios.service

[Unit]
Description=Nagios Core Monitoring Daemon
After=network.target

[Service]
User=nagios
Group=nagios
Type=forking
ExecStart=/etc/init.d/nagios start
ExecStop=/etc/init.d/nagios stop
ExecReload=/etc/init.d/nagios reload

[Install]
WantedBy=multi-user.target
# Activación y prueba de uso del script

:~/downloads/nagios-4.0.8# systemctl is-active nagios.service
inactive

:~/downloads/nagios-4.0.8# systemctl enable nagios.service

:~/downloads/nagios-4.0.8# /etc/init.d/nagios stop
[ ok ] Stopping nagios (via systemctl): nagios.service.
root@grigori:~/downloads/nagios-4.0.8# /etc/init.d/nagios start
[ ok ] Starting nagios (via systemctl): nagios.service.
root@grigori:~/downloads/nagios-4.0.8# /etc/init.d/nagios status
● nagios.service - Nagios Core Monitoring Daemon
   Loaded: loaded (/lib/systemd/system/nagios.service; enabled)
   Active: active (running) since jue 2015-06-18 10:13:56 CEST; 4s ago
  Process: 29553 ExecStart=/etc/init.d/nagios start (code=exited, status=0/SUCCESS)
 Main PID: 29573 (nagios)
   CGroup: /system.slice/nagios.service
           ├─29573 /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
           ├─29575 /usr/local/nagios/bin/nagios --worker /usr/local/nagios/var/rw/nagios.qh
           ├─29576 /usr/local/nagios/bin/nagios --worker /usr/local/nagios/var/rw/nagios.qh
           ├─29577 /usr/local/nagios/bin/nagios --worker /usr/local/nagios/var/rw/nagios.qh
           ├─29578 /usr/local/nagios/bin/nagios --worker /usr/local/nagios/var/rw/nagios.qh
           └─29585 /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg

Y finalmente tenemos funcionando NAGIOS.

nagios

2 Comments

  • Juan Martín

    Gracias por la guía, sin embargo he cambiado sobre la marcha algunas cosillas:
    1. El sitio para apache lo puse en sites-availables y lo habilité con a2ensite
    2. El script de init.d me fallaba al hacer el «systemctl enable nagios.service» quejándose de que no tenía Default-Start y Default-Stop aunque fuese vacíos.
    3. Tras forzar el compilado del daemonchk hice un make install para que lo copiase a su sitio

    Aun así me quedan dudas como ¿para qué el grupo nagcmd si luego configuramos grupo nagios?

    • jvalera

      Hola Juan,
      respecto a la duda de los grupos, ambos son necesarios siendo especial el grupo nagcmd que contiene los usuarios que pueden ejecutar comandos externos lanzados desde el interfaz web. Por esta razón se añade al grupo el usuario de apache.

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

Deja un comentario