Instalamos
librerías para compilación de Nagios
apt-get install make
gcc g++ sudo
Además
instalamos las últimas versiones (Debian SID para amd64) de los siguientes paquetes:
- libjpeg-dev
- libgd2-xpm
- libgd2-xpm-dev
- libpng12-dev
- libgd-tools
mediante
apt-get
install nombre_paquete.
El
siguiente paso va a consistir en instalar la librería gráfica GD (http://www.boutell.com/gd/) desde https://bitbucket.org/pierrejoye/gd-libgd/get/GD_2_0_33.tar.gz :
wget
https://bitbucket.org/pierrejoye/gd-libgd/get/GD_2_0_33.tar.gz
y
descomprimimos e instalamos:
tar
-zxvf GD_2_0_33.tar.gz
cd
pierrejoye-gd-libgd-5551f61978e3
cd
src
./configure
make
make
install
El
siguiente paso consistirá en la creación de un usuario y un grupo a los que
denominaremos “nagios” (tanto uno como otro) y al usuario lo incorporamos al
grupo www-data (servidor web Apache):
adduser
nagios
groupadd
nagios
usermod
-G nagios nagios
usermod
-G www-data,nagios www-data
Creados
el usuario y grupo, e instaladas las librerías básicas necesarias, procedemos a
la instalación del core de Nagios, en su versión 3.5.0:
tar
zvfx nagios-3.5.0.tar.gz
cd
nagios
./configure
-prefix=/usr/local/nagios -with-cgiurl=/nagios/cgi-bin -with-htmurl=/nagios/ -with-nagios-user=nagios
-with-nagios-group=nagios -with-command-group=nagios
make
all
make
install
make
install-init
make
install-commandmode
ls
make install-config
Una
vez configurado el core, continuamos con los plugins:
tar
-zxvf nagios-plugins-1.4.16.tar.gz
cd
nagios-plugins-1.4.16
./configure
make
En este punto se produce un error de tipo check_http.c:312:9: error: 'ssl_version' undeclared (first use in this function)
Para
lo cual instalamos la siguiente librería:
apt-get
install libssl-dev
y
volvemos a lanzar el configure / make y a continuación
make
install
Si
la instalación se ha realizado correctamente, podremos acceder a la ruta /usr/local/nagios/libexec/
y listar todos los plugins:
ls
/usr/local/nagios/libexec/
El
siguiente paso va a consistir en añadir nagios al inicio del sistema:
ln
-s /etc/init.d/nagios /etc/rcS.d/S99nagios
y
añadimos al fichero /etc/init.d/nagios , justo después de #!/bin/sh, las siguientes líneas:
###
BEGIN INIT INFO
#
Provides: Nagios
#
Required-Start: $syslog
#
Required-Stop: $syslog
#
Default-Start: 2 3 4 5 S
#
Default-Stop: 0 1 6
#
Short-Description: Nagios Boot Script
#
Description:
#
###
END INIT INFO
Una
vez realizados estos pasos, vamos a añadir a nuestro servidor web Apache un
nuevo sitio para Nagios. Vamos a crear el fichero nagios en la ruta /etc/apache2/sites-available
:
mcedit
/etc/apache2/sites-available/nagios
con
las siguientes líneas:
ScriptAlias
/nagios/cgi-bin /usr/local/nagios/sbin
<Directory
“/usr/local/nagios/sbin”>
Options
ExecCGI
AllowOverride
None
Order
allow,deny
Allow
from all
AuthName
“Nagios Access”
AuthType
Basic
AuthUserFile
/usr/local/nagios/etc/htpasswd.users
Require
valid-user
</Directory>
Alias
/nagios /usr/local/nagios/share
<Directory
“/usr/local/nagios/share”>
Options
None
AllowOverride
None
Order
allow,deny
Allow
from all
AuthName
“Nagios Access”
AuthType
Basic
AuthUserFile
/usr/local/nagios/etc/htpasswd.users
Require
valid-user
</Directory>
Activamos
nuestro nuevo sitio mediante el comando
a2ensite
nagios
y
definimos una contraseña para el usuario por defecto, nagiosadmin, utilizado
para el acceso al panel de control web:
htpasswd
-c /usr/local/nagios/etc/htpasswd.users nagiosadmin
y
comprobamos que el fichero /usr/local/nagios/etc/cgi.cfg
contenga use_authentication=1 para que en el acceso se solicite.
Reiniciamos
los servicios de apache y nagios
service
apache2 restart
service
nagios restart
y
comprobamos el correcto funcionamiento del sitio accediendo vía web.
Instalación de NDO y NAGVIS
Una
vez instalado Nagios, procedemos a instalar la utilidad gráfica NagVis. Para
ello, realizamos la instalación previa de los prerrequisitos. En primer lugar
instalamos las utilidades snmp para
los chequeos pertinentes:
apt-get install libsnmp-base libsnmp15
snmp snmpd
A
continuación vamos a instalar RRD Tools, una BBDD que maneja planificación de tipo Round Robin,
necesaria para la instalación de pnp4nagios (http://www.mrtg.org/rrdtool/download.en.html):
apt-get install rrdtool
RRDTools
permite generar logs y gráficas para datos seriales y temporales.
Otra
utilidad que vamos a instalar es MRTG (Multi Router Traffic Grapher). Se trata
de una herramienta que nos permite monitorizar varias características de
servidores (la carga del sistema, capacidad del disco duro, tráfico en las
interfaces de red, etc.) , reportando información gráfica visible en HTML:
apt-get install mrtg
Durante la instalación se nos preguntará si
deseamos que sólo el usuario “root” tenga acceso al fichero de configuración de
MRTG.
Indicamos que “Sí”. A continuación lo configuramos:
mkdir /etc/mrtg
mv /etc/mrtg.cfg /etc/mrtg/
cfgmaker
--global 'WorkDir:/var/www/mrtg' --global 'Options[_]: bits,growright' --output
/etc/mrtg/mrtg.cfg public@10.x.x.x public@10.y.y.y
·
mkdir
/var/www/mrtg
indexmaker
--output=/var/www/mrtg/index.html /etc/mrtg/mrtg.cfg
También vamos a instalar Smokeping, una herramienta
que nos va a permitir monitorizar la latencia de la red además de permitir almacenar las
mediciones a largo plazo y presentarlas en gráficas vía web mostrando la carga
de la conexión a red.
En
primer lugar agregamos los siguiente módulos CPAN:
apt-get
install librrds-perl
apt-get install libnet-telnet-perl
apt-get install libnet-dns-perl
apt-get install libnet-ldap-perl
apt-get install libfcgi-perl
apt-get install libcgi-fast-perl
apt-get install
libconfig-grammar-perl
Vamos a instalar también el módulo FastCGI para Apache
apt-get install libapache2-mod-fcgid php5-cgi
a2enmod actions
a2enmod fcgid
service apache2 restart
A continuación creamos un fichero /etc/apache2/conf.d/php.conf con el
siguiente contenido:
<Directory /usr/share>
AddHandler
fcgid-script .php
FCGIWrapper
/usr/lib/cgi-bin/php5 .php
Options ExecCGI
FollowSymlinks Indexes
</Directory>
<Files ~ (\.php)>
AddHandler
fcgid-script .php
FCGIWrapper
/usr/lib/cgi-bin/php5 .php
Options
+ExecCGI
allow from all
</Files>
Y
reiniciamos Apache
service
apache2 restart
Deberemos así mismo, instalar la utilidad fping, que nos
permitirá hacer ping a un rango de IPs. De esta forma se puede enumerar una red
en muy poco tiempo.
tar
-zxvf fping-3.4.tar.gz
cd
fping-3.4
./configure
make
make install
una vez instalado fping, instalamos Smokeping:
tar xvfz
smokeping-2.6.9.tar.gz
cd
smokeping-2.6.9
./configure
Observamos que la variable de entorno PERL5LIB no está
configurada, así que hacemos los siguiente:
perl -e 'print join "\n", @INC;'
Y
exportamos a las rutas configuradas, la nueva del smokeping:
export PERL5LIB=/home/nagios/nagiosFile/smokeping-2.6.9/lib"${PERL5LIB:+:$PERL5LIB}"
env|grep -i perl
(comprobamos que se ha añadido).
Y lanzamos las instalación de la aplicación:
make
make install
El siguiente paso consistirá en instalar y configurar
NRPE. Instalamos la librería libssl-dev y el
servicio xinetd como requisitos previos:
apt-get
install libssl-dev
apt-get
install xinetd
y descargamos la última version disponible de NRPE:
tar xvfz
nrpe-2.14.tar.gz
cd nrpe-2.14
./configure --with-ssl=/usr/bin/openssl
--with-ssl-lib=/usr/lib/x86_64-linux-gnu
make all
make install-plugin
make install-daemon
make install-daemon-config
make install-xinetd
El siguiente paso consiste en configurar NRPE, para
lo cual editamos el fichero /etc/xinetd.d/nrpe
nano /etc/xinetd.d/nrpe
y añadimos a la etiqueta "only_from=" la dirección
IP de nuestro servidor Nagios
only_from = 127.0.0.1 172.16.18.38
A continuación añadimos la siguiente entrada para
el daemon de NRPE en el fichero /etc/services:
echo "nrpe 5666/tcp #NRPE" >>
/etc/services
y reiniciamos el servicio NRPE con
/etc/init.d/xinetd restart
Podemos probar si NRPE se encuentra escuchando con
el comando:
netstat -l | grep nrpe
y para comprobar que el daemon funciona
correctamente podemos ejecutar el plugin check_nrpe
/usr/local/nagios/libexec/check_nrpe -H localhost
A continuación vamos a instalar la BBDD mySQL
(versión 5.5 actualmente):
apt-get install mysql-server php-mysql mysql-devel
y creamos una base de datos “nagios” y un usuario
“nagios” para acceder a la misma:
create database nagios;
create user 'nagios';
grant usage on *.* to nagios identified by
'nagios';
grant all privileges on nagios.* to nagios;
A continuación vamos a configurar el servidor de
correo Exim4, que viene por defecto en
Debian. Para ello lanzaremos el comando:
dpkg-reconfigure exim4-config
que nos lanzará un asistente que
nos ayudará a configurar nuestro servidor de correo.
Aceptaremos la mayoría de las
opciones por defecto, modificando las siguientes:
1. En la configuración general de correo, indicaremos que “se envía mediante un smarthost, se
recibe a través de SMTP”:
2.
Deberemos indicar el nombre de nuestro equipo (en
este caso concreto, nagios.dominio.corp),
desde el cual se va a realizar los envíos de correo:
Y por último, deberemos indicar el nombre del
“smarthost”, indicando así mismo el puerto utilizado si no es el puerto por
defecto SMTP:
Llegado a este punto, podemos realizar unas
pruebas, añadiendo una serie de ficheros de configuración a nuestro nagios. La
ruta de estos ficheros es /usr/local/nagios/etc.
Podemos indicar en el fichero “nagios.cfg” un
directorio donde almacenaremos los ficheros de los hosts que queremos
monitorizar. Esto se hace añadiendo la línea:
cfg_dir=/usr/local/nagios/etc/dir_cfg_hosts (en mi caso es ‘servers’)
También podemos agrupar nuestros equipos, añadiendo
a “nagios.cfg” la línea
cfg_file=/usr/local/nagios/etc/objects/hostgroup.cfg
y creando en este fichero los grupos que deseemos.
P.ej.
define
hostgroup{
hostgroup_name windows-servers
alias Windows Servers
members servidor1, servidor2, servidor3
}
En http://nagios.sourceforge.net/docs/3_0/objectdefinitions.html podemos
encontrar la sintaxis de este tipo de objetos.
También es importante definir los contactos en el
fichero /usr/local/nagios/etc/objects/contacts , siguiendo el patrón:
define contact{
contact_name vpena
use generic-contact
alias Victor Pena
email vpena@dominio.corp
}
Estos contactos (a través del “contact_name”) son
los que se utilizan en el los ficheros de configuración de los servidores, a
través del parámetro “contacts” en la definición de los servicios.
P.ej.,
fichero /usr/local/nagios/etc/servers/coreup.cfg
:
define host{
use generic-switch
host_name coreup
alias coreup
address 172.x.y.z
}
define service{
use local-service
host_name coreup
service_description PING
check_command check_ping!100.0,20%!500.0,60%
contacts nombre_usuario1, nombre_usuario2, vpena
}
Mediante estos ficheros de configuración, podemos
realizar una prueba del funcionamiento de Nagios. En primer lugar probamos que
los servicios de mysql, ndo2db y nagios están en funcionamiento:
ps -ef |
grep mysql
ps -ef |
grep ndo2db
ps -ef |
grep nagios
y probamos que la nueva configuración de nagios es
correcta:
/usr/local/nagios/bin/ndo2db -v
/usr/local/nagios/etc/ndo2db.cfg
/etc/init.d/ndo2db stop
/usr/local/nagios/bin/ndo2db -c
/usr/local/nagios/etc/ndo2db.cfg
/etc/init.d/nagios restart
Accedemos a la web de nagios (en mi caso http://172.16.18.38/nagios/ ):
Una vez realizados estos pasos, el siguiente va a
consistir en la instalación de NagVis, un sistema gráfico para la visualización
de datos de Nagios.
Se va a realizar la instalación de la última
versión disponible de Nagvis en el momento de la creación de este manual, la
1.7.8. Se puede realizar la descarga desde la web oficial de esta herramienta: http://www.nagvis.org/
Los pasos a seguir son los siguientes:
1.
MKLivestatus:
b.
tar xzf check_mk-1.2.0p4.tar.gz
c.
cd check_mk-1.2.0p4
d.
./setup.sh
Además, se debe añadir a nagios.cfg la línea (en
una única línea):
broker_module=/usr/lib/check_mk/livestatus.o
/usr/local/nagios/var/rw/live
2.
Se
Instalan los siguientes paquetes:
- php5-gd
- php5-gettext *
- php5-mbstring (à php5-imap )
- php5-session / php5-json (àphp-common)
- php5-pdo (añadir a /etc/php5/apache2/php.ini : extension=pdo.so y extension=pdo_mysql.so)
- pdo-sqlite
- php-net-socket
- php5-mysql
- graphviz
- rsync
- sqlite3
Los paquetes que aparecen con el *
han sido descargados de forma manual e instalados mediante dpkg:
- wget http://ftp.es.debian.org/debian/pool/main/p/php-gettext/php-gettext_1.0.10-1_all.deb
- dpkg – i php-gettext_1.0.10-1_all.deb
3.
Se
descarga e instala Nagvis. Se va a realizar la instalación de la última versión
disponible en el momento de la redacción de este articulo (v.1.7.8):
- wget http://www.nagvis.org/share/nagvis-1.7-nightly.tar.gz
- tar xzf nagvis-1.7-nightly.tar.gz
- cd nagvis-1.7-nightly
- chmod +x install.sh
- ./install.sh
4.
Se
deben cambiar los siguientes permisos y propietarios:
- chown nagios:nagios /usr/local/nagvis -R
- chmod 664 /usr/local/nagvis/etc/nagvis.ini.php
- chmod 775 /usr/local/nagvis/etc/maps
- chmod 664 /usr/local/nagvis/etc/maps/*
- chmod 775 /usr/local/nagvis/etc/geomap
- chmod 664 /usr/local/nagvis/etc/geomap/*
- chmod 775 /usr/local/nagvis/share/userfiles/images/maps
- chmod 664 /usr/local/nagvis/share/userfiles/images/maps/*
- chmod 775 /usr/local/nagvis/var
- chmod 664 /usr/local/nagvis/var/*
- chmod 775 /usr/local/nagvis/var/tmpl/cache
- chmod 664 /usr/local/nagvis/var/tmpl/cache/*
- chown www-data.www-data /usr/local/nagvis/var/tmpl –R
5.
Modificamos
el fichero usr/local/nagios/share/side.php y sustituimos la línea
<li><a
href="<?php echo $cfg["cgi_base_url"];?>/statusmap.cgi?host=all"
target="<?php echo $link_target;?>">Map</a></li>
por el enlace al
mapa de Nagvis.
6.
Se
pueden añadir usuarios mediante el comando htpasswd htpasswd.users nuevo_usuario
(lanzado desde /usr/local/nagios/etc
). Posteriormente se concederán los permisos de acceso en el fichero /usr/local/nagios/etc/cgi.cfg.
Con estos pasos se habrá instalado y se
encontrará en funcionamiento Nagvis. Por último se van a ver los pasos a seguir
para realizar la instalación de PNP4Nagios y NagiosGrapher. PNP4Nagios es un
complemento para Nagios que analiza los datos de rendimiento obtenidos por los
plugins y los almacena automáticamente en bases de datos Round Robin (RDD).
Mientras tanto NagiosGrapher genera automáticamente gráficas de rendimiento
asignando servicios a varias fuentes de datos (RRD).
Se realiza la descarga desde http://sourceforge.net/projects/pnp4nagios/ y se instala siguiendo los pasos
habituales:
2. tar xzf pnp4nagios-0.6.21.tar.gz
3. cd pnp4nagios-0.6.21
4. ./configure --with-nagios-user=nagios
--with-nagios-group=nagios
5. make all
6. make install ,y siguiendo las indicaciones del
instalador:
7. make install-webconf
8. make install-config
9. make install-init
Se puede consultar la documentación http://docs.pnp4nagios.org/es/pnp-0.6/start para obtener más información.
A continuación se va a describir los
pasos a seguir para realizar la instalación de NagiosGrapher. En primer lugar
instalaremos los siguientes paquetes:
apt-get install autoconf rrdtool perl perl-base perl-modules
libcalendar-simple-perl libgd-gd2-perl perlmagick librrds-perl liburi-perl
Nos
descargamos la versión 1.7.1, la descomprimimos e instalamos:
1. wget -c http://downloads.sourceforge.net/project/nagiosgrapher/nagiosgrapher/NagiosGrapher-1.7.1/NagiosGrapher-1.7.1.tar.gz
2. tar xfvz NagiosGrapher-1.7.1.tar.gz
3. cd NagiosGrapher-1.7.1
4. autoconf
5. ./configure
6. make testdeps (se chequea las librerias
perl-libs, requeridas).
7. make install
Para
la configuración de Nagios Grapher tendremos añadir las siguientes líneas en
los siguientes ficheros siguientes:
1.
Fichero
de configuración de nagios (/usr/local/nagios/etc/nagios.cfg):
cfg_dir=/usr/local/nagios/etc/serviceext
process_performance_data=1
service_perfdata_file=/usr/local/nagios/var/service-perfdata
service_perfdata_file_template=$HOSTNAME$\t$SERVICEDESC$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\t$TIMET$\n
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=30
service_perfdata_file_processing_command=process-service-perfdata-file
2.
Fichero de configuración de
nagiosGrapher (/usr/local/nagios/etc/ngraph.ncfg):
perffile_path /usr/local/nagios/var
3.
Fichero de definición de comandos de
nagios (/usr/local/nagios/etc/objects/commands.cfg):
define command {
command_name process-service-perfdata-file
command_line mv /usr/local/nagios/var/service-perfdata /usr/local/nagios/var/service-perfdata.$TIMET$
}
Enviar notificaciones html por correo
Para
el envío de correo formados mediante HTML se va a emplear el script
pnp4n_send_service_main.pl (http://nagios.frank4dd.com/howto/manual/pnp4n_send_service_mail.htm
).
Este
plugin, después de recibir la información del estado del servicio de Nagios,
compone un correo electrónico de acuerdo con varios flags y envía la
notificación a través de un servidor SMTP. Entre la información que se puede
enviar destaca la posibilidad de enviar gráficos de rendimiento de un
determinado servicio a través del paquete PNP4Nagios.
El
script depende de los siguientes paquetes (Perl CPAN):
- Mail::Sendmail
- Getopt::Long
- Digest::MD5
- LWP
- MIME::Base64
- File::Temp
Así
como los paquetes netpbm y libnetpbm (para la conversión PNG-to-JPG).
No hay comentarios:
Publicar un comentario