Nagios + Nginx, monitorinzando servidores

Nagios monitoriza tus servidores, te puede avisar si se cae algun servicio, o si el servidor se ha quedado sin disco duro, tiene muchas funciones distintas de monitorización y alertas, @elbinario lo usa.

Necesitas algunas cosas, doy por sentado que tienes instalado nginx, php7, fpm y el servidor nginx funcionando. Hay que instalar fcgiwrap(simple server to run CGI applications over FastCGI):

sudo apt install nagios4 fcgiwrap

modificamos /etc/nginx/nginx.conf y añadimos estas líneas dentro de la sección http

#nagios upstream and fcgiwrap extra config
        upstream php {
            server unix:/var/run/php7-fpm.sock;
        }

        upstream fcgiwrap {
             server unix:/var/run/fcgiwrap.socket;
        }

Editamos el archivo /etc/nagios4/contacts.cfg, cambiamos la dirección de email por la que deseamos que reciba las alertas

# Just one contact defined by default - the Nagios admin (that's you)
# This contact definition inherits a lot of default values from the 'generic-contact' 
# template which is defined elsewhere.

define contact{
        contact_name                    nagiosadmin             ; Short name of user
        use                             generic-contact         ; Inherit default values from generic-contact template (defined above)
        alias                           Nagios Admin            ; Full name of user
        email                           root@localhost  ; < <***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
        }

¿No querrás entrar a tu web nagios sin un mínimo de seguridad?, puedes usar un certificado autofirmado si es que no deseas usar el del dominio propiamente. Si quieres usar certbot, adelante, también tenemos tutoriales ;)

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/ngagios-selfsigned.key -out /etc/ssl/certs/nagios-selfsigned.crt
server {
        listen 8080 ssl;
        server_name raspi;
        ssl_certificate /etc/ssl/certs/nagios-selfsigned.crt;
        ssl_certificate_key /etc/ssl/private/ngagios-selfsigned.key;

        #listen   8080;
        #server_name  pi;

        access_log  /var/log/nginx/nagios.access.log;
        error_log   /var/log/nginx/nagios.error.log info;

        expires 31d;

        root /usr/share/nagios4/htdocs;
        index index.php index.html;

        auth_basic "Nagios Restricted Access";
        #auth_basic_user_file /etc/nagios4/htpasswd.users;
        auth_basic_user_file /etc/nginx/conf.d/.htpasswd;


        location /stylesheets {
                alias /etc/nagios4/stylesheets;
        }

        location ~ \.cgi$ {
                root /usr/lib/cgi-bin/nagios4;
                rewrite ^/cgi-bin/nagios4/(.*)$ /$1;
                #rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break;
                include /etc/nginx/fastcgi_params;
                
                fastcgi_param AUTH_USER $remote_user;
                fastcgi_param REMOTE_USER $remote_user;
                fastcgi_param SCRIPT_FILENAME /usr/lib/cgi-bin/nagios4$fastcgi_script_name;

                fastcgi_pass fcgiwrap;
        }
         location ~ \.php$
        {
          include snippets/fastcgi-php.conf;
          fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;

        }
}

Creamos el usuario para loguearse en nginx con el módulo auth_basic:

sudo htpasswd -c  /etc/nginx/conf.d/.htpasswd nagiosadmin

Reiniciamos el tinglado para que lo que hemos hecho tenga efecto:

systemctl restart nginx
systemctl restart nagios

A lo mejor un día me animo a escribir otro post explicando como utilizar las alertas y las notificaciones a través de xmpp y otras cosas interesantes

Compartir

1 Comentario

  1. En vez de nagios se puede optar por algún fork moderno como naemon o icinga2.

    https://labs.consol.de/omd/ esos repos de omd son una maravilla para montar un sistema de monitoring chulo.

    Con naemon, thruk interface, PNP4Nagios, … y opcionales otros motores, otras interfaces e incluso grafana para gráficas.

Deja una respuesta

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax