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)