Monitorización por red con Nagios
Contents
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)