Monitorización por red con Nagios

From Luniwiki
Jump to: navigation, search

Preinstalación

Los paquetes siguientes son necesarios para el

apache2
apache2-common
mysql-client 
mysql-common 
mysql-server 
php4-mysql 
phpmyadmin 
libmysqlclient-dev 
libmysqlclient10-dev 
libmysqlclient12
libgd-ruby1.6
libgd-ruby1.8 
libgd-tools 
libgd2-xpm 
libgd2-xpm-dev

De las librairias gd no se que paquete era el necesario lo que si fue necesario fue un ldconfig a continuación.

Descarga del Software

En la Web de nagios, nos descargarmos el soft

nagios vers. 1.3
nagios-plugins 1.3
La versión 2 de nagios no puede almacenar datos en base de datos y la versión 1.4 de los plugins tiene un problema de con el check-host-alive

Compilación

cd nagios-1.3
./configure 
   --with-nagios-user=nagios 
   --with-nagios-grp=nagios 
   --with-mysql-comments 
   --with-mysql-status 
   --with-template-extinfo 
   --with-template-objects
   --with-mysql-retention 
   --with-mysql-downtime 
   --with-cgiurl=/cgi 
   --with-htmurl=     

La salida del configure tendria que ser:

General Options:
-------------------------
      Nagios executable:  nagios
      Nagios user/group:  nagios,nagios
     Command user/group:  nagios,nagios
          Embedded Perl:  no
      Install ${prefix}:  /usr/local/nagios
              Lock file:  ${prefix}/var/nagios.lock
         Init directory:  /etc/init.d
Web Interface Options:
------------------------
               HTML URL:  http://localhost/
                CGI URL:  http://localhost/cgi/
Traceroute (used by WAP):  /usr/sbin/traceroute
External Data Routines:
------------------------
            Status data:  Database (MySQL)
            Object data:  Template-based (text file)
           Comment data:  Database (MySQL)
          Downtime data:  Database (MySQL)
         Retention data:  Database (MySQL)
        Peformance data:  Default (external commands)
     Extended info data:  Template-based (text file)

Despues de preparar la instalación, compilamos

make all

Instalación

Antes de instalar el software tenemos que crear el usuario, con login deshabilitado.

adduser --shell /bin/false --no-create-home --disabled-password --disabled-login nagios

Instalación de los ejecutables propiamente dicho

make install
make install-init 
make install-commandmode
make install-config

Luego a continuación hay que compilar los plugins

cd nagios-plugins-1.4.2
./configure
make 
make install

Apache

Yo he elegido deshabilitar la authentificación de apache y utilizar una conexión segura con autentificación por certificado. Esta opción me perece más segura, ya que quiero poder administrar mi red desde cualquier sitio, pero la utilización de usuario y contraseña en CGI me parece demasiado insegura. Me limita a poder utilizarlo únicamente en los equipos en los que tenga instalado mi certificado personal.

Virtual Host

Al instalar en una máquina debian, para la estructura particular de configuración de Debian (Bastante util), no dice que tenemos que definir el Virtual Host en la carpeta /etc/apache2/site-availables, en esta carpeta creamos un fichero, yo le he denominado nagios

NameVirtualHost *:442
<VirtualHost *:442>
      ServerName nagios.luniel.com
      ServerAdmin webmaster@luniel.com
      SSLCertificateKeyFile /ruta certificados/nagios.luniel.com.key
      SSLCertificateFile /ruta certificados/nagios.luniel.com.crt
      #   Server Certificate Chain:
      SSLCertificateChainFile /ruta certificados/ca.crt
      #   Certificate Authority (CA):
      SSLCACertificateFile /ruta certificados/ca.crt
      SSLVerifyClient require
      SSLVerifyDepth 1
      SSLEngine on
      SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
      DocumentRoot /usr/local/nagios/share/
      <Directory />
              Options FollowSymLinks
              AllowOverride None
      </Directory>
      <Directory /usr/local/nagios/share/>
              Options Indexes FollowSymLinks MultiViews
              AllowOverride None
              Order allow,deny
              Allow from all
              # This directive allows us to have apache2's default start page
              # in /apache2-default/, but still have / go to the right place
              #RedirectMatch ^/$ /apache2-default/
      </Directory>
      ScriptAlias /cgi/ /usr/local/nagios/sbin/
      <Directory "/usr/local/nagios/sbin/">
              AllowOverride None
              Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
              Order allow,deny
              Allow from all
      </Directory>
      ErrorLog /var/log/apache2/nagiosssl_error.log
      # Possible values include: debug, info, notice, warn, error, crit,
      # alert, emerg.
      LogLevel warn
      CustomLog /var/log/apache2/nagiosssl_access.log combined
      ServerSignature On
</VirtualHost>
<VirtualHost *:80>
# redirect to https when available (thanks omen@descolada.dartmouth.edu)
#
#  Note: There are multiple ways to do this, and which one is suitable for
#  your site's configuration depends. Consult the apache documentation if
#  you're unsure, as this example might not work everywhere.
#
     ServerName nagios.luniel.com
     ServerAdmin webmaster@luniel.com
     DocumentRoot /luniel/web/
      <Directory /luniel/web/>
              php_flag register_globals off
              Options Indexes FollowSymLinks
              <IfModule mod_dir.c>
                      DirectoryIndex index.php
              </IfModule>
              <Files configtest.php>
              order deny,allow
              deny from all
              allow from 127.0.0.1
              </Files>
      </Directory>
      <IfModule mod_rewrite.c>
        <IfModule mod_ssl.c>
        <Location />
            RewriteEngine on
            RewriteCond %{HTTPS} !^on$ [NC]
            RewriteRule . https://%{HTTP_HOST}:442%{REQUEST_URI}  [L]
          </Location>
        </IfModule>
      </IfModule>
      ErrorLog /var/log/apache2/webmail_error.log
      # Possible values include: debug, info, notice, warn, error, crit,
      # alert, emerg.
      LogLevel warn
      CustomLog /var/log/apache2/webmail_access.log combined
      ServerSignature On
</VirtualHost>

Luego con a2ensite, activamos el Virtual Host.

MySql

Lo primero que hay que hacer es crear la BD

mysqladmin -p create nagios

Luego hay que crear la estructura, el scrip esta en la carpeta contrib/database de los fuentes de nagios

mysql -p nagios < create_mysql

Una vez creada la estructura, hay que crear un usuario que tenga acceso a la base de datos

mysql -p 
mysql> GRANT ALL PRIVILEGES ON nagios.* TO nagios@localhost IDENTIFIED BY 'nagios';

Ficheros de Configuración

Lo primero que he hecho para tener los ficheros de configuración facilmente a mano es crearme un link

ln -s /usr/local/nagios/etc /etc/nagios

nagios.cfg

log_file=/var/log/nagios/nagios.log

He variado la localización del log para que me lo deje en /var

cgi.cfg

use_authentication=0

No uso la authentication de apache sino que la hago por el certificado propio

default_statusmap_layout=4

Cambio el dibujo del mapa de status

xeddb_host=localhost
xeddb_port=3306
xeddb_database=nagios
xeddb_username=usuario nagios
xeddb_password=contraseña nagios
xsddb_host=localhost
xsddb_port=3306
xsddb_database=nagios
xsddb_username=usuario nagios
xsddb_password=contraseña nagios
xcddb_host=localhost
xcddb_port=3306
xcddb_database=nagios
xcddb_username=usuario nagios
xcddb_password=contraseña nagios
xdddb_host=localhost
xdddb_port=3306
xdddb_database=nagios
xdddb_username=usuario nagios
xdddb_password=contraseña nagios 

Cambiamos los datos de acceso a la base de datos por los datos de conexión adecuados

checkcommands.cfg

Este fichero hay remplazarle por el que viene con los pluggins. Para ello hay primero que compilar el programa contenido en la carpeta contrib de la distribución de nagios

cd  contrib
make convertcfg
/ruta_nagios/contrib/convertcfg /ruta_pluggins/commands.cfg command > /etc/nagios/checkcommands.cfg

Referencias

--Daniel Simao 18:54, 10 Dec 2005 (CET)