Monitoreo de la red con Nagios – PARTE V

PARTE V

|_9. Definición de otros plugins

|_ _9.1.       Plugin “check_iftraffic64.pl”

|_ _9.2.       Plugin “check_uptime”

|_ _9.3.       Plugin “check_sensors”

|_ _9.4.       Plugin “check_mailq”

|_ _9.5.       Plugin “check_ftp”

|_10. Nagiosgraph

9.  Definición de otros plugins

9.1.      Plugin “check_iftraffic64.pl”

En esta sección se explicará cómo configurar el plugin «iftraffic64.pl» para poder monitorizar el consumo de ancho de banda de nuestras interfaces de red. Esta información es proporcionada por SNMP, y el plugin facilitará la interpretación de la misma, para conocer el consumo del ancho de banda de lo hosts que estén siendo monitorizados bajo este servicio específico. Será necesario configurar el plugin sólo en el host Linux que alberga el servidor Nagios y también en el host que sirve de proxy NRPE, para los chequeos indirectos de Nagios (fw1-debian9).

En todo host Linux (incluyendo servidor nagios) que vaya a hacer uso de este plugin:

Prerrequisitos:

apt-get install libnet-dns-perl libcrypt-des-perl libdigest-hmac-perl libcrypt-rijndael-perl

Obteniendo plugin y otorgándole permisos necesarios:

cd /usr/local/nagios/libexec
wget https://exchange.nagios.org/components/com_mtree/attachment.php?link_id=4019&cf_id=24
chmod +x check_iftraffic64.pl
chown -R nagios:nagios /usr/local/nagios/libexec/traffic

Comprobamos si el plugin es capaz de interpretar las estadísticas, para una interfaz GigabitEthernet, del host «nagios-debian9»:

/usr/local/nagios/libexec/check_iftraffic64.pl -H 127.0.0.1 -A 192.168.100.3 -u m -B -b 1000 -I 1000 -O 1000 -w 80 -c 90 -v 3 --username nagios --authpassword nagioskey --privpassword nagioskey --authprotocol SHA --privprotocol AES

Debe devolver algo como esto:

OK - Average IN: 1.99Kb (0.00%), Average OUT: 3.15Kb (0.00%)Total RX: 504.32Kbits, Total TX: 688.93Kbits|inUsage=0.00%;80;90 outUsage=0.00%;80;90 inBandwidth=248.23B outBandwidth=393.43B inAbsolut=63040c outAbsolut=86116c

Si hacemos la misma comprobación anterior, en el host “fw1-debian9” debería poder funcionar perfectamente el plugin, devolviéndonos los resultados pertinentes para una de sus interfaces de red.

En “nagios-debian9”:

La siguiente definición de comando permitirá adaptarse a cualquier host, local o remoto, que tenga los mismos datos SNMPv3 para su encuesta. Definimos el comando en nagios:

nano /etc/nagios/objects/commands.cfg

Agregamos la siguiente definición al final (para SNMPv3):

################################################################################
#
# BANDWIDTH MONITOR COMMAND (iftraffic64.pl)
#
################################################################################

define command {
command_name check_iftraffic64.pl
command_line $USER1$/check_iftraffic64.pl -H $ARG1$ -A $ARG2$ -u $ARG3$ $ARG4$ -b $ARG5$ -I $ARG6$ -O $ARG7$ -w $ARG8$ -c $ARG9$ -v $ARG10$ --username $ARG11$ --authpassword $ARG12$ --privpassword $ARG13$ --authprotocol $ARG14$ --privprotocol $ARG15$
}

Agregamos la siguiente definición al final (para SNMPv1):

define command {
command_name check_snmpv2c_iftraffic64.pl
command_line $USER1$/check_iftraffic64.pl -H $HOSTADDRESS$ -A $ARG1$ $ARG2$ -u $ARG3$ $ARG4$ -b $ARG5$ -I $ARG6$ -O $ARG7$ -w $ARG8$ -c $ARG9$ -v $ARG10$ -C$
}

Una vez definido el comando, nagios se encuentra listo para usarlo en las definiciones de los servicios que vayan a hacer uso de este chequeo en particular. Para usarlo, simplemente vamos al fichero de configuración de los hosts y definimos el servicio en los que lo requieran.

A continuación, un ejemplo, para el host “nagios-debian9” en la plantilla de “linux.cfg”:

# Define un servicio para obtener el consumo de ancho de banda en la interfaz de red:
#Warning: si el consumo llega a 80%
#Critical: si el consumo llega a 90%
define service {
use generic-service ; Inherit values from a template
host_name nagios-debian9
service_description BW eth0
check_command check_iftraffic64.pl!127.0.0.1!192.168.100.3!m!-B!1000!1000!1000!80!90!3!nagios!nagioskey!nagioskey!SHA!AES!
}

A continuación, un ejemplo, para el host “fw1-debian9” en la plantilla de “linux.cfg”:

# Define un servicio para obtener el consumo de ancho de banda en la interfaz de red:
#Warning: si el consumo llega a 80%
#Critical: si el consumo llega a 90%
define service {
use generic-service,graphed-service ; Inherit values from a template
host_name pve1-debian9
service_description BW eth0
check_command check_nrpe!check_iftraffic64.pl!-a 127.0.0.1 192.168.100.2 m -B 1000 1000 1000 80 90 3 nagios nagioskey nagioskey SHA AES
}

A continuación, un ejemplo, para el dispositivo de red “fw2-vyos1.2.0-rc8” en la plantilla de “linux.cfg”:

# Define un servicio para obtener el consumo de ancho de banda en la interfaz de red:
#Warning: si el consumo llega a 80%
#Critical: si el consumo llega a 90%
define service {
use generic-service,graphed-service ; Inherit values from a template
host_name fw2-vyos1.2.0-rc8
service_description BW bond0
check_command check_nrpe!check_iftraffic64.pl!-a 172.16.23.2 172.16.23.2 m -B 1000 1000 1000 80 90 3 nagios nagioskey nagioskey MD5 AES
}

A continuación, un ejemplo, para el host “hostmaster-pc” en la plantilla de “windows.cfg”:

# Define un servicio para obtener el consumo de ancho de banda en la interfaz de red:
#Warning: si el consumo llega a 80%
#Critical: si el consumo llega a 90%
define service {
use generic-service ; Inherit values from a template
host_name hostmaster-pc
service_description BW eth0
check_command check_snmpv2c_iftraffic64.pl!192.168.10.6!--32bit!m!-B!1000!1000!1000!80!90!1!public
}

Reiniciamos el servicio de nagios:

systemctl restart nagios.service

En “fw1-debian9” y cualquier otro host Linux que use nrpe para los chequeos de Nagios:

Editamos el fichero “nrpe.cfg”:

nano /etc/nagios/nrpe.cfg

Agregamos el nuevo comando para que nrpe ejecute el plugin de “iftraffic64.pl”:

command[check_iftraffic64.pl]= /usr/local/nagios/libexec/check_iftraffic64.pl -H $ARG1$ -A $ARG2$ -u $ARG3$ -B -b $ARG5$ -I $ARG6$ -O $ARG7$ -w $ARG8$ -c $ARG9$ -v $ARG10$ --username $ARG11$ --authpassword $ARG12$ --privpassword $ARG13$ --authprotocol $ARG14$ --privprotocol $ARG15$

Reiniciamos el servicio de nrpe:

systemctl restart nrpe.service

Tras realizar estos ajustes, podremos visualizar desde la web, por ejemplo, la del Check_MK, cómo se analiza el ancho de banda con este plugin:

Para “nagios-debian9”:

Para “fw1-debian9”:

Para “fw2-vyos1.2.0-rc8”:

Para “hostmaster-pc”:

9.2.      Plugin “check_uptime”

En “nagios-debian9”:

Definimos el comando para “check_uptime”:

nano /etc/nagios/objects/commands.cfg

Agregamos al final del documento:

################################################################################
#
# SYSTEM UPTIME
#
################################################################################

define command {
command_name check_uptime
command_line $USER1$/check_uptime
}

Definimos los servicios que harán uso del nuevo comando:

nano /etc/nagios/objects/linux.cfg

Agregamos el servicio como un servicio local de “nagios-debian9”:

# Define un servicio que muestre el tiempo que lleva encendido el servidor
define service{
use local-service ; Name of service template to use
host_name nagios-debian9
service_description Uptime
check_command check_uptime
}

También lo definimos como un servicio de grupo de los servidores Linux:

# Define un servicio que muestre el tiempo que lleva encendido el servidor
define service{
use local-service ; Name of service template to use
hostgroup_name linux-servers
service_description Uptime
check_command check_nrpe!check_uptime
}

Reiniciamos el servicio de nagios:

systemctl restart nagios.service

En todos los hosts Linux con nrpe:

Definimos el comando nrpe:

nano /etc/nagios/nrpe.cfg

Agregamos el nuevo comando en “OTHERS”

command[check_uptime]=/usr/local/nagios/libexec/check_uptime

Reiniciamos el nrpe:

systemctl restart nrpe.service

9.3.      Plugin “check_sensors”

En “nagios-debian9”:

Definimos el comando para “check_uptime”:

nano /etc/nagios/objects/commands.cfg

Agregamos al final del documento:

################################################################################
#
# SENSORS
#
################################################################################

define command {
command_name check_sensors
command_line $USER1$/check_sensors $ARG1$
}

Definimos los servicios que harán uso del nuevo comando:

nano /etc/nagios/objects/linux.cfg

Agregamos el servicio al host “pve1-debian9”, para conocer la información de los sensores del hardware de propósito general:

# Define un servicio que muestre la informacion de lm-sensors:
define service{
use generic-service ; Name of service template to use
host_name pve1-debian9
service_description Sensors
check_command check_nrpe!check_sensors -v
}

Reiniciamos el servicio de nagios:

systemctl restart nagios.service

En todos los hosts Linux con nrpe:

Definimos el comando nrpe:

nano /etc/nagios/nrpe.cfg

Agregamos el nuevo comando en “OTHERS”:

command[check_sensors]=/usr/local/nagios/libexec/check_sensors $ARG1$

Reiniciamos el nrpe:

systemctl restart nrpe.service

9.4.      Plugin “check_mailq”

En “nagios-debian9”:

Definimos el comando para “check_uptime”:

nano /etc/nagios/objects/commands.cfg

Agregamos al final del documento:

################################################################################
#
# MAILQ (MENSAJES EN COLA DEL MTA)
#
################################################################################

define command {
command_name check_mailq
command_line $USER1$/check_mailq -w $ARG1$ -c $ARG2$ -M $ARG3$
}

Definimos los servicios que harán uso del nuevo comando:

nano /etc/nagios/objects/linux.cfg

Agregamos el servicio y lo adaptamos a nuestra red:

# Define un servicio que muestre la informacion de los correos en cola en el MTA:
define service{
use local-service ; Name of service template to use
host_name mail1-debian9
service_description Mail Queue
check_command check_nrpe!check_mailq!-a -w 250 -c 350 -M postfix
}

Reiniciamos el servicio de nagios:

systemctl restart nagios.service

En todos los hosts Linux con nrpe:

Definimos el comando nrpe:

nano /etc/nagios/nrpe.cfg

Agregamos el nuevo comando en “OTHERS”:

command[check_mailq]=/usr/local/nagios/libexec/check_mailq -w $ARG1$ -c $ARG2$ -M $ARG3$

Reiniciamos el nrpe:

systemctl restart nrpe.service

9.5. Plugin “check_ftp”

En “nagios-debian9”:

Definimos el comando para “check_uptime”:

nano /etc/nagios/objects/commands.cfg

Buscamos la definición por defecto del comando “check_ftp” y la editamos, dejábndola de la siguiente manera:

define command {
command_name check_ftp
command_line $USER1$/check_ftp -H $HOSTADDRESS$ -p $ARG1$ -w $ARG2$ -c $ARG3$ $ARG4$
}

Definimos los servicios que harán uso del nuevo comando:

nano /etc/nagios/objects/linux.cfg

Agregamos el servicio y lo adaptamos a nuestra red:

# Define un servicio que muestre la informacion del estado del FTP:
define service{
use local-service ; Name of service template to use
host_name ftp2-debian9
service_description FTP Status
check_command check_nrpe!check_ftp!-a 127.0.0.1 -p 21 -w 2 -c 4 -v
}

Reiniciamos el servicio de nagios:

systemctl restart nagios.service

En todos los hosts Linux con nrpe:

Definimos el comando nrpe:

nano /etc/nagios/nrpe.cfg

Agregamos el nuevo comando en “OTHERS”:

command[check_ftp]=/usr/local/nagios/libexec/check_ftp -H $ARG1$ -p $ARG2$ -w $ARG3$ -c $ARG4$ $ARG5$

Reiniciamos el nrpe:

systemctl restart nrpe.service

10. Nagiosgraph

Nagiosgraph es otro de los agregados oficiales de Nagios, que nos permitirá graficar servicios y acceder a estas gráficas directamente desde la web de nagios, a diferencia de pnp4nagios, que no está enlazado a la web de nagios, al menos de manera predeterminada (sí lo hace check_mk). Nagiosgraph parsea los datos de salida y desempeño de los plugins de Nagios y los almacena en archivos RRD. Crea gráficas y genera páginas HTML con reportes gráficos de estos datos obtenidos.

En “nagios-debian9”:

Instalamos paquetes necesarios antes de compilar nagiosgraph:

apt install libnet-snmp-perl libsensors4 libsnmp-base libtalloc2 libtdb1 libwbclient0 whois mrtg libcgi-pm-perl librrds-perl libgd-perl libnagios-object-perl

#=============================================
NOTA:
Seleccionamos «no», para que el usuario root no sea el único que pueda leer la configuración de MRTG.
#=============================================

Procedemos a preparar la instalación de nagiosgraph

cd /opt/instaladores/
wget http://www.mediafire.com/file/pmx1t0bpq1fm8mr/nagiosgraph-1.5.2.tar.gz/file
tar -xvf nagiosgraph-1.5.2.tar.gz
cd nagiosgraph-1.5.2/
./install.pl --check-prereq

Debe devolver algo como esto:

checking required PERL modules
  Carp...1.40
  CGI...4.35
  Data::Dumper...2.160
  Digest::MD5...2.54
  File::Basename...2.85
  File::Find...1.34
  MIME::Base64...3.15
  POSIX...1.65
  RRDs...1.5001
  Time::HiRes...1.9733
checking optional PERL modules
  GD...2.53
  Nagios::Config...36
checking nagios installation
  found nagios exectuable at /usr/local/nagios/bin/nagios
checking web server installation
  found apache executable at /usr/sbin/apache2
  found apache init script at /etc/init.d/apache2

Instalamos nagiosgraph:

./install.pl --layout standalone --prefix /usr/local/nagiosgraph

Configuramos los directorios, de tal manera que sean los siguientes:

configuration:
  ng_prefix /usr/local/nagiosgraph
  ng_etc_dir /usr/local/nagiosgraph/etc
  ng_bin_dir /usr/local/nagiosgraph/bin
  ng_cgi_dir /usr/local/nagiosgraph/cgi
  ng_doc_dir /usr/local/nagiosgraph/doc
  ng_examples_dir /usr/local/nagiosgraph/examples
  ng_www_dir /usr/local/nagiosgraph/share
  ng_util_dir /usr/local/nagiosgraph/util
  ng_var_dir /usr/local/nagiosgraph/var
  ng_rrd_dir /usr/local/nagiosgraph/var/rrd
  ng_log_dir /usr/local/nagiosgraph/var/log
  ng_log_file /usr/local/nagiosgraph/var/log/nagiosgraph.log
  ng_cgilog_file /usr/local/nagiosgraph/var/log/nagiosgraph-cgi.log
  ng_url /nagiosgraph
  ng_cgi_url /nagiosgraph/cgi-bin
  ng_css_url /nagiosgraph/nagiosgraph.css
  ng_js_url /nagiosgraph/nagiosgraph.js
  nagios_cgi_url /nagios/cgi-bin
  nagios_perfdata_file /tmp/perfdata.log
  nagios_user nagios
  www_user www-data
  modify_nagios_config y
  nagios_config_file /etc/nagios/nagios.cfg
  nagios_commands_file /etc/nagios/objects/commands.cfg
  modify_apache_config y
  apache_config_dir /etc/apache2/sites-enabled
  apache_config_file

Presionamos «y» y continuamos con la instalación.

Nos aseguramos de que la configuración de nagiosgraph esté en apache:

cat /etc/apache2/sites-enabled/nagiosgraph.conf

Debe mostrar la siguiente configuración por defecto:

# enable nagiosgraph CGI scripts
ScriptAlias /nagiosgraph/cgi-bin "/usr/local/nagiosgraph/cgi"
<Directory "/usr/local/nagiosgraph/cgi">
    Options ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
#    AuthName "Nagios Access"
#    AuthType Basic
#    AuthUserFile NAGIOS_ETC_DIR/htpasswd.users
#    Require valid-user
</Directory>
# enable nagiosgraph CSS and JavaScript
Alias /nagiosgraph "/usr/local/nagiosgraph/share"
<Directory "/usr/local/nagiosgraph/share">
   Options None
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>

Modificamos la configuración de nagiosgraph para apache:

nano /etc/apache2/sites-enabled/nagiosgraph.conf

Borramos todo y agregamos lo siguiente:

# enable nagiosgraph CGI scripts
ScriptAlias /nagiosgraph/cgi-bin "/usr/local/nagiosgraph/cgi"
<Directory "/usr/local/nagiosgraph/cgi">
   Options ExecCGI
   AllowOverride None
   Order allow,deny
   Allow from all
   AuthName "Nagios Access"
   AuthType Basic
#   AuthUserFile NAGIOS_ETC_DIR/htpasswd.users
   AuthUserFile /etc/nagios/htpasswd.users
   Require valid-user
</Directory>
# enable nagiosgraph CSS and JavaScript
Alias /nagiosgraph "/usr/local/nagiosgraph/share"
<Directory "/usr/local/nagiosgraph/share">
   Options None
   AllowOverride None
#   Order allow,deny
#   Allow from all
Require all granted
</Directory>

Nos aseguramos de que se agregó correctamente la siguiente configuración de nagiosgraph en el fichero de configuración de nagios «nagios.cfg», al final del mismo:

# begin nagiosgraph configuration
# process nagios performance data using nagiosgraph
process_performance_data=1
service_perfdata_file=/tmp/perfdata.log
service_perfdata_file_template=$LASTSERVICECHECK$||$HOSTNAME$||$SERVICEDESC$||$SERVICEOUTPUT$||$SERVICEPERFDATA$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=30
service_perfdata_file_processing_command=process-service-perfdata-for-nagiosgraph
# end nagiosgraph configuration

Nos aseguramos de que se agregó correctamente la definición del comando de nagios para nagiosgraph al final de su fichero de configuración «commands.cfg»:

# begin nagiosgraph configuration
# command to process nagios performance data for nagiosgraph
define command {
command_name process-service-perfdata-for-nagiosgraph
command_line /usr/local/nagiosgraph/bin/insert.pl
}
# end nagiosgraph configuration

Creamos la plantilla «graphed-service» en el fichero de configuración «templates.cfg», la cual será mapeada con cada servicio que necesite ser graficado por nagiosgraph:

nano /etc/nagios/objects/templates.cfg

En la sección de «SERVICE TEMPLATES» agregamos al final la siguiente definición:

define service {
name graphed-service
action_url /nagiosgraph/cgi-bin/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$' onMouseOver='showGraphPopup(this)' onMouseOut='hideGraphPopup()' rel='/nagiosgraph/cgi-bin/showgraph.cgi?host=$HOSTNAME$&service=$SERVICEDESC$&period=week&rrdopts=-w+450+-j
register 0
}

Abrimos el fichero de configuración de los host Linux:

nano /etc/nagios/objects/linux.cfg

Agregamos que se use la plantilla de servicio «graphed-service» a los servicios que se quieran graficar en los hosts monitoreados (los que tengan sentido graficarse). En los servicios definidos para host, en la línea referente al uso de la plantilla «use», agregar separado por una coma la nueva plantilla «graphed-service».

#=============================================
NOTA:

Un ejemplo de cómo se podría utilizar nagiosgraph en algún servicio definido por nagios, sería así:

define service{
use local-service,graphed-service ; Name of service template to use
host_name nagios-debian9
service_description Swap Usage
check_command check_local_swap!20!10
}

Hacemos lo mismo para el fichero de configuración de host Windows.
#=============================================

Verificamos que no existan errores en la configuración:

/usr/local/nagios/bin/nagios -v /etc/nagios/nagios.cfg

Reiniciamos nagios para comenzar la colección de datos de nagiosgraph, para los servicios que lo estén usando:

systemctl restart nagios.service

Reiniciamos apapche2:

systemctl restart apache2.service

Accedemos al sitio de nagios y veremos cómo aparecerá el ícono de servicio graficado, en aquellos que fueron especificados:

Al darle un clic encima nos abrirá una pestaña con las gráficas del servicio:

 

 

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 5 / 5. Recuento de votos: 2

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Sobre Franco Diaz Hurtado 27 artículos
Ing. Telecomunicaciones y Electrónica; 1er Especialista en Redes de ECASA Nivel Central

Sé el primero en comentar

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*