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

Deja un comentario

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