Actualizando Nagios a la 4.4.2

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.

Un comentario de “Actualizando Nagios a la 4.4.2

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

Responder a rlsalgueiro Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *