systemadmin.es » Monitorización » Instalación de Nagios con MediaWiki y RRDtool (I)

Instalación de Nagios con MediaWiki y RRDtool (I)

En esta serie veremos cómo instalar un Nagios combinado con un MediaWiki para gestionar la documentación y usando el RRDtool para generar gráficos de los servicios.

En esta primera parte veremos como instalar un Nagios con una configuración básica. Empezamos con el Nagios Core:

cd /usr/local/src/
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz
tar xzf nagios-3.2.1.tar.gz
cd nagios-3.2.1

A continuación el configure para dejar las cosas en el /usr/local:

./configure \
             --prefix=/usr/local/  \
             --exec-prefix=/usr/local/  \
             --with-nagios-user=nagios \
             --with-nagios-group=nagios  \
             --with-command-user=nagcmd  \
             --with-command-group=nagcmd  \
             --with-httpd-conf=/usr/local/apache22/conf/extra/  \
             --localstatedir=/usr/local/var/nagios

Nos dará el siguiente resumen:

*** Configuration summary for nagios 3.2.1 03-09-2010 ***:

 General Options:
 -------------------------
        Nagios executable:  nagios
        Nagios user/group:  nagios,nagios
       Command user/group:  nagcmd,nagcmd
            Embedded Perl:  no
             Event Broker:  yes
        Install ${prefix}:  /usr/local/
                Lock file:  /usr/local/var/nagios/nagios.lock
   Check result directory:  /usr/local/var/nagios/spool/checkresults
           Init directory:  /etc/rc.d/init.d
  Apache conf.d directory:  /usr/local/apache22/conf/extra/
             Mail program:  /bin/mail
                  Host OS:  linux-gnu

 Web Interface Options:
 ------------------------
                 HTML URL:  http://localhost/nagios/
                  CGI URL:  http://localhost/nagios/cgi-bin/
 Traceroute (used by WAP):  /bin/traceroute

Añadimos los usuarios:

useradd nagios
useradd nagcmd

Compilamos e instalamos todas las partes:

make all
make install
make install-init
make install-config

En el fichero de inicio añadimos la opción configtest para validar la configuración mediante el siguiente sed:

sed 's/*)/configtest)\n\t\tprintf "Running configuration check..."\n\t\t\$NagiosBin -v \$NagiosCfgFile\n\t\t;;\t\n\n\t*)/g' -i /etc/init.d/nagios

Podemos comprobar la opción añadida:

# /etc/init.d/nagios  configtest
Running configuration check...
Nagios Core 3.2.1
Copyright (c) 2009-2010 Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 03-09-2010
License: GPL

Website: http://www.nagios.org
Reading configuration data...
   Read main config file okay...
Processing object config file '/usr/local//etc/objects/commands.cfg'...
Processing object config file '/usr/local//etc/objects/contacts.cfg'...
Processing object config file '/usr/local//etc/objects/timeperiods.cfg'...
Processing object config file '/usr/local//etc/objects/templates.cfg'...
Processing object config file '/usr/local//etc/objects/localhost.cfg'...
   Read object config files okay...

Running pre-flight check on configuration data...

Checking services...
	Checked 8 services.
Checking hosts...
	Checked 1 hosts.
Checking host groups...
	Checked 1 host groups.
Checking service groups...
	Checked 0 service groups.
Checking contacts...
	Checked 1 contacts.
Checking contact groups...
	Checked 1 contact groups.
Checking service escalations...
	Checked 0 service escalations.
Checking service dependencies...
	Checked 0 service dependencies.
Checking host escalations...
	Checked 0 host escalations.
Checking host dependencies...
	Checked 0 host dependencies.
Checking commands...
	Checked 24 commands.
Checking time periods...
	Checked 5 time periods.
Checking for circular paths between hosts...
Checking for circular host and service dependencies...
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...

Total Warnings: 0
Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight check

A continuación arreglamos la configuración para disponer en /usr/local/etc de un fichero llamado nagios.cfg que será el fichero general y luego dentro de un directorio llamado también nagios el resto de ficheros específicos:

cd /usr/local/etc
rm -f cgi.cfg~ nagios.cfg~ resource.cfg~
rm -f /usr/local/etc/nagios/objects/*~
mkdir /usr/local/etc/nagios -p
mv cgi.cfg objects resource.cfg nagios
sed 's#/objects/#/nagios/objects/#g' -i /usr/local/etc/nagios.cfg
sed 's#etc/resource.cfg#etc/nagios/resource.cfg#g' -i /usr/local/etc/nagios.cfg

A continuación instalamos los plugins de Nagios, que son los programas que realizan las comprobaciones de los servicios:

cd /usr/local/src/
wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
tar xzf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15

Igualmente hacemos el configure para que los instale en el /usr/local y indicamos que queremos que compile el check de MySQL:

./configure \
             --prefix=/usr/local/ \
             --exec-prefix=/usr/local/ \
             --with-mysql

En el resumen del configure deberíamos ver lo siguiente:

            --with-apt-get-command:
              --with-ping6-command:
               --with-ping-command: /bin/ping -n -U -w %d -c %d %s
                       --with-ipv6: yes
                      --with-mysql: /usr/local/mysql/bin/mysql_config
                    --with-openssl: yes
                     --with-gnutls: no
               --enable-extra-opts: no
                       --with-perl: /usr/bin/perl
             --enable-perl-modules: no
                     --with-cgiurl: /nagios/cgi-bin
               --with-trusted-path: /bin:/sbin:/usr/bin:/usr/sbin
                   --enable-libtap: no

A continuación los compilamos e instalamos:

make && make install

Seguimos instalando el rrdtool de paquetes, en el caso de una CentOS, una RHEL o una Fedora lo haríamos con yum:

yum install rrdtool rrdtool-perl -y

A continuación volvemos al Nagios Core para instalar la parte de la interfaz web:

cd /usr/local/src/nagios-3.2.1
make install-webconf

Si tenemos el apache instalado en /usr/local/apache22 deberemos borrar el fichero que nos habrá generado allí:

rm -f /usr/local/apache22/conf/extra//nagios.conf

A continuación prepararemos la interfaz para que se ejecute desde /var/www en lugar de usar el /usr/local/share:

mkdir -p /var/www/nagios/sbin
mkdir -p /var/www/nagios/htdocs
cd /usr/local/sbin
cp avail.cgi  cmd.cgi  config.cgi  extinfo.cgi  history.cgi  notifications.cgi  outages.cgi  showlog.cgi  status.cgi  statuswml.cgi  statuswrl.cgi  summary.cgi  tac.cgi /var/www/nagios/sbin
find /usr/local/share/ -maxdepth 1 -mindepth 1 -uid $(id -u nagios) -exec mv {} /var/www/nagios/htdocs/ \;

A continuación añadimos el VirtualHost para el Nagios. En el caso que tengamos instalado el apache según el procedimiento de esta web, simplemente añadimos un fichero en el /usr/local/apache22/conf/extra/vhosts/, por ejemplo llamado nagios.conf:

<VirtualHost *:80>
    ServerAdmin weblooser@dummy-host.example.com
    DocumentRoot "/var/www/nagios/htdocs"
    ServerName nagios.dominio.com
    DirectoryIndex index.php index.html index.htm

    ErrorLog "| /usr/local/sbin/cronolog -S /var/www/nagios/logs/current.error.log /var/www/nagios/logs/%Y/%m/%d/error.log"
    CustomLog "| /usr/local/sbin/cronolog -S /var/www/nagios/logs/current.custom.log /var/www/nagios/logs/%Y/%m/%d/custom.log" common

	ScriptAlias /nagios/cgi-bin/ "/var/www/nagios/sbin/"
	Alias /nagios/ "/var/www/nagios/htdocs/"

	<Directory "/var/www/nagios/sbin">
	#  SSLRequireSSL
	   Options ExecCGI
	   AllowOverride None
	   Order deny,allow
           Allow from 127.0.0.1
           Deny from All
	   AuthName "qui entra aqui no en surt mai mes"
	   AuthType Basic
	   AuthUserFile /usr/local/etc/nagios/htpasswd.users
	   Require valid-user
	</Directory>

	<Directory "/var/www/nagios/htdocs">
	#  SSLRequireSSL
	   Options None
	   AllowOverride None
	   Order deny,allow
           Allow from 127.0.0.1
           Deny from All
	   AuthName "qui entra aqui no en surt mai mes"
	   AuthType Basic
	   AuthUserFile /usr/local/etc/nagios/htpasswd.users
	   Require valid-user
	</Directory>

</VirtualHost>

Mediante esta configuración sólo se permite acceder desde localhost, pero podemos añadir las IPs o redes separadas por espacios para ir agregando permisos de acceso.

Evidentemente deberemos recargar la configuración del apache, por ejemplo con un graceful:

# /usr/local/apache22/bin/apachectl graceful

A continuación generaremos el fichero de contraseñas de acceso creando el usuario administrador, llamado nagiosadmin:

/usr/local/apache22/bin/htpasswd -cb /usr/local/etc/nagios/htpasswd.users nagiosadmin systemadmin

Podemos agrear usuarios mediante el mismo comando sin la opción -c:

/usr/local/apache22/bin/htpasswd -b /usr/local/etc/nagios/htpasswd.users jprats systemadmin

A continuación creamos los directorios que necesita el Nagios para funcionar y eliminamos configuración de demo organizando un poco nuestro directorio nagios del /usr/local/etc:

mkdir -p /usr/local/var/nagios/rw/
chown nagios. /usr/local/var/nagios -R
mv /usr/local/etc/nagios/cgi.cfg /usr/local/etc/
mkdir -p /usr/local/supervise/nagios
cat <<EOF > /usr/local/supervise/nagios/run
#!/bin/bash
exec /usr/local/bin/nagios /usr/local/etc/nagios.cfg 2>&1 > /dev/null
EOF
chmod +x /usr/local/supervise/nagios/run
ln -s /usr/local/supervise/nagios/ /service/
cd /usr/local/etc/nagios/objects
rm -f printer.cfg switch.cfg windows.cfg
mkdir /usr/local/etc/nagios/contacts -p
mv contacts.cfg timeperiods.cfg /usr/local/etc/nagios/contacts
sed 's@/usr/local//etc/nagios/objects/contacts.cfg@/usr/local/etc/nagios/contacts/contacts.cfg@g' -i /usr/local/etc/nagios.cfg
sed 's@/usr/local//etc/nagios/objects/timeperiods.cfg@/usr/local/etc/nagios/contacts/timeperiods.cfg@g' -i /usr/local/etc/nagios.cfg
mkdir -p /usr/local/etc/nagios/templates
mv templates.cfg /usr/local/etc/nagios/templates
sed 's@/usr/local//etc/nagios/objects/templates.cfg@/usr/local/etc/nagios/templates/templates.cfg@g' -i /usr/local/etc/nagios.cfg
mkdir -p /usr/local/etc/nagios/commands
mv commands.cfg /usr/local/etc/nagios/commands
sed 's@/usr/local//etc/nagios/objects/commands.cfg@/usr/local/etc/nagios/commands/commands.cfg@g' -i /usr/local/etc/nagios.cfg

A continuación ya podremos acceder por la interfaz web, la cual nos pedirá el usuario y contraseña que hemos definido anteriormente. De momento deberemos usar el nagiosadmin ya que no hemos configurado nada.

Lo que veremos dentro de la interfaz del Nagios en "Services" es unos checks básicos para el equipo dónde este instalado el Nagios:

Instalación por defecto de Nagios

Instalación por defecto de Nagios

El resto de partes de esta instalación de Nagios con MediaWiki y RRDtool son las siguientes:

Relacionados

Imprimir Imprimir

6 comments to “Instalación de Nagios con MediaWiki y RRDtool (I)”

  1. Muy bueno.

    La verdad es que tengo ganas desde hace tiempo, ponerle las pilas con Nagios.

    Saludos.

  2. Excelente se agradece el tutorial. Ojala venga luego la segunda parte.

  3. Hola,

    muy interesante el articulo y muy bueno el blog. Enhorabuana.

    Una pregunta ¿en que versión de linux instalas el Nagios? Dimela exacta por favor porque quiero hacerlo paso a paso yo en una vm mia en la que pondre el mismo linux que tu usas.

    Gracias y saludos,

    Juan (Barcelona)

  4. Hola,
    Lo estoy haciendo sobre una CentOS 5

    saludos!

  5. Ok, gracias. Yo lo hiba a hacer en un Debian, que es el linux que mejor conozco, pero entre Debian y Centos poca diferencia hay.

    Supongo que necesitare prerequisitos para el Nagios, pero ya me irán saliendo. Voy a la aventura por que si te digo la verdad Nagios por lo que me he mirado me parece demasiado complejo, para controlar un sistema hay que hacer demasiado…

    Pero bueno allá voy..

    Juan

  6. Alguien sabe configurar QMAIL en nagios 3.2????

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>