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.
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