Hoy actualizaremos Nagios, la conocida suite de monitoreo de sistemas. Lo primero es tener actualizado nuestro sistema con:
apt update && apt dist-upgrade -y
Habiendo hecho esto ahora pasamos a revisar nuestro archivo /etc/hosts:
127.0.0.1 nagios.inutil.cu nagios # Our servers 10.10.1.1 gw.inutil.cu gw 10.10.1.2 dns.inutil.cu dns 10.10.1.3 mail.inutil.cu mail 10.10.1.4 pdc.inutil.cu pdc 10.10.1.5 proxy.inutil.cu proxy 10.10.1.6 jabber.inutil.cu jabber 10.10.1.7 mx.inutil.cu mx
Ahora bien, comenzamos el proceso. Descargaremos nagios y lo compilaremos:
cd /opt wget -c https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.2/nagios-4.4.2.tar.gz tar xvf nagios-4.4.2.tar.gz cd nagios-4.4.2
Detengámonos un minuto. Compilar Nagios puede llevar muchas opciones de compilación, las cuales usted puede adaptar según sus necesidades. En este tutorial usaré las que generalmente se usan:
# ./configure --with-nagios-group=nagios --with-command-group=nagcmd --bindir=/usr/bin \ --sbindir=/usr/share/nagios/cgi --sysconfdir=/etc/nagios4 --libdir=/usr/lib/nagios \ --prefix=/usr/share/nagios --localstatedir=/var/lib/nagios --with-logdir=/var/log/nagios \ --with-mail=/usr/sbin/sendmail
Todo esto debe ir en una sola línea. Ahora compilaremos, crearemos grupo/usuario e instalaremos:
# make all # make install-groups-users # groupadd nagcmd # usermod -a -G nagcmd nagios # usermod -a -G nagios,nagcmd www-data # make install # make install-commandmode # make install-init # make install-config
Ahora bien, editaremos la config de Nagios para que monitorée nuestros servers…
nano /etc/nagios4/nagios.cfg
Descomentamos la opción:
cfg_dir=/etc/nagios4/servers
Creamos la carpeta «servers»:
mkdir -p /etc/nagios4/servers
Y dentro configurar los servidores que monitorearemos. NOTA: Nagios por default dentro de las ubicaciones configuradas, usa, lee la config y parsea las opciones, de todo archivo terminado en la extensión «.cfg». Por lo cual, crearemos un archivo de ejemplo:
nano /etc/nagios4/servers/local.cfg
Con el siguiente contenido:
define host {
use linux-server
host_name nagios
alias Localhost
address 127.0.0.1
max_check_attempts 5
check_period 24x7
notification_interval 30
notification_period 24x7
}
define service {
use generic-service
host_name nagios
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
define service {
use generic-service
host_name nagios
service_description SSH
check_command check_ssh
notifications_enabled 0
}
A Nagios se le puede configurar una dirección de correo para enviar alertas o avisos de posibles fallos en cualquier parte de la infraestructura informática que se monitorée, ese correo se puede configurar dentro de:
nano /etc/nagios4/objects/contacts.cfg
Acá:
email nagios@localhost ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
Ahora compilaremos los plugins del Nagios:
cd .. wget -c http://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz tar xvf nagios-plugins-2.2.1.tar.gz cd nagios-plugins-2.2.1 ./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl \ --sysconfdir=/etc/nagios4 --prefix=/usr/share/nagios make make install
Aqui no hay mucho que hacer. Ahora NRPE, o Nagios Remote Plugin Executor.
cd .. wget -c https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz tar xvf nrpe-3.2.1.tar.gz cd nrpe-3.2.1 ./configure --enable-command-args --with-nagios-user=nagios --with-nagios-group=nagios \ --prefix=/usr/share/nagios --sysconfdir=/etc/nagios4 --with-logdir=/var/log/nrpe \ --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu make all make install make install-init make install-config
Iniciando servicios con el sistema:
systemctl enable nrpe.service systemctl status nagios.service systemctl start nagios.service systemctl enable nagios.service
Y ahora instalaremos Nginx el cual nos asistirá sirviéndonos la interfaz.
apt install nginx-extras fcgiwrap php-cgi php-fpm php-pear php-mcrypt php7.0-mbstring \ apache2-utils
Necesitamos una carpeta donde crear el password para proteger la carpeta del nagios:
mkdir /etc/nginx/htpasswd htpasswd -c /etc/nginx/htpasswd/nagios nagiosadmin
Securizamos un poquito Nginx con SSL:
mkdir /etc/nginx/ssl cd /etc/nginx/ssl openssl dhparam 2048 -out > /etc/nginx/ssl/dhparam.pem openssl genrsa -out nginx.key 4096 openssl req -out nginx.csr -key nginx.key -new -sha256 openssl x509 -req -days 3650 -in nginx.csr -signkey nginx.key -out nginx.crt -sha512
Virtualhosting del Nagios:
nano /etc/nginx/sites-available/nagios.conf
server {
listen 80;
server_name nagios.inutil.cu;
return 301 https://nagios.inutil.cu$request_uri;
}
server {
listen 443 http2 ssl;
server_name nagios.inutil.cu;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 180m;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
add_header Strict-Transport-Security "max-age=31536000";
access_log /var/log/nginx/nagios.inutil.cu-access.log;
error_log /var/log/nginx/nagios.inutil.cu-error.log;
auth_basic "Nagios";
auth_basic_user_file /etc/nginx/htpasswd/nagios;
###
root /var/www/vhosts/nagios.inutil.cu;
index index.php index.html;
location / {
try_files $uri $uri/ index.php /nagios;
}
location /nagios {
alias /usr/share/nagios/share;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param AUTH_USER $remote_user;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ \.cgi$ {
root /usr/share/nagios/cgi;
rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param AUTH_USER $remote_user;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
}
}
location /nagiosgraph {
alias /usr/share/nagiosgraph/share;
}
location ~ ^/nagiosgraph/cgi-bin/(.*\.cgi)$ {
alias /usr/share/nagiosgraph/cgi/$1;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param AUTH_USER $remote_user;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}
Ahora activamos el virtualhost:
ln -s /etc/nginx/sites-available/nagios.conf /etc/nginx/sites-enabled/nagios.conf
Probamos la configuracion:
nginx -t
Y reiniciamos si todo esta bien
/etc/init.d/nginx restart
Lo próximo es ir al Nagios recién instalado:
https://nagios.inutil.cu/

Ahora instalaremos Nagiosgraph, es decir un gráficador de los stats de Nagios.
Instalando Nagiosgraph:
cd .. wget -c https://downloads.sourceforge.net/project/nagiosgraph/nagiosgraph/1.5.2/nagiosgraph-1.5.2.tar.gz tar xvf nagiosgraph-1.5.2.tar.gz cd nagiosgraph-1.5.2
Módulos de Perl que necesitaremos antes de continuar:
apt install libcgi-pm-perl librrds-perl libnagios-object-perl libgd-perl
Ejecutando el instalador
root@nagios:/opt/nagiosgraph-1.5.2# ./install.pl --check-prereq checking required PERL modules Carp...1.40 CGI...4.35 Data::Dumper...2.160 Digest::MD5...2.54 File::Basename...2.85 File::Find...1.34 MIME::Base64...3.15 POSIX...1.65 RRDs...1.5001 Time::HiRes...1.9733 checking optional PERL modules GD...2.53 Nagios::Config...36 checking nagios installation found nagios exectuable at /usr/bin/nagios checking web server installation apache not found in any of: /usr/bin /usr/sbin /bin /sbin /usr/local/apache2/bin /usr/local/apache/bin /usr/local/httpd/bin /opt/apache2/bin /opt/apache/bin /opt/httpd/bin *** one or more problems were detected!
Tenemos algunos errores, pues como estamos usando Nginx en vez de Apache y nagiosgraph esta prediseñdo para trabajar con Apache, el instalador no detecta ciertos parametros. Estos errores no son preocupantes, asi que seguiremos adelante.
./install.pl --layout standalone --prefix /usr/share/nagiosgraph
Nos preguntará algunos detalles:
Destination directory (prefix)? [/usr/share/nagiosgraph] Location of configuration files (etc-dir)? [/usr/share/nagiosgraph/etc] /etc/nagiosgraph Location of executables? [/usr/share/nagiosgraph/bin] Location of CGI scripts? [/usr/share/nagiosgraph/cgi] Location of documentation (doc-dir)? [/usr/share/nagiosgraph/doc] Location of examples? [/usr/share/nagiosgraph/examples] Location of CSS and JavaScript files? [/usr/share/nagiosgraph/share] Location of utilities? [/usr/share/nagiosgraph/util] Location of state files (var-dir)? [/usr/share/nagiosgraph/var] Location of RRD files? [/usr/share/nagiosgraph/var/rrd] Location of log files (log-dir)? [/usr/share/nagiosgraph/var/log] /var/log/nagiosgraph Path of log file? [/var/log/nagiosgraph/nagiosgraph.log] Path of CGI log file? [/var/log/nagiosgraph/nagiosgraph-cgi.log] Base URL? [/nagiosgraph] URL of CGI scripts? [/nagiosgraph/cgi-bin] URL of CSS file? [/nagiosgraph/nagiosgraph.css] URL of JavaScript file? [/nagiosgraph/nagiosgraph.js] URL of Nagios CGI scripts? [/nagios/cgi-bin] Path of Nagios performance data file? [/tmp/perfdata.log] username or userid of Nagios user? [nagios] username or userid of web server user? [www-data] Modify the Nagios configuration? [n] n Modify the Apache configuration? [n] n
Aceptamos los cambios e instalamos.
Ahora debemos hacer un par de cambios en la configuración de Nagios para poder mostrar los gráficos en Nagiosgraph.
En /etc/nagios4/nagios.cfg debemos añadir al final del archivo:
# process nagios performance data using nagiosgraph process_performance_data=1 service_perfdata_file=/tmp/perfdata.log service_perfdata_file_template=$LASTSERVICECHECK$||$HOSTNAME$||$SERVICEDESC$||$SERVICEOUTPUT$|| service_perfdata_file_mode=a service_perfdata_file_processing_interval=30 service_perfdata_file_processing_command=process-service-perfdata-for-nagiosgraph
Y en /etc/nagios4/objects/comands.cfg:
define command {
command_name process-service-perfdata-for-nagiosgraph
command_line /usr/share/nagiosgraph/bin/insert.pl
}
Y listo! Ahora accedemos a:
https://nagios.inutil.cu/nagiosgraph/cgi-bin/showhost.cgi

Seleccionamos el host y el período de tiempo del cual necesitemos ver las estadísticas…
Listo! Ya tenemos un Nagios con todo su andamiaje funcionando, ahora sólo queda agregar hosts a la config del Nagios. Suerte con eso.
Hasta aqui llega el tutorial de actualizar Nagios. Espero les sirva.





Nagios es muy bueno, de hecho todavía ninguno de sus sucesores reemplaza el mapa con los nodos hijos, el consumo y todas las potencialidades y muchos de ellos lo usan(o usaron) como base, pero recomiendo que se cambien a zabbix o centreon, la configuración te aleja un poco de los archivos de configuración, aunque para todo sysadmin trabajar directo en los archivos de configuración es algo que se disfruta.