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-perlObteniendo 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/trafficComprobamos 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 AESDebe 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=86116cSi 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.cfgAgregamos 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.serviceEn “fw1-debian9” y cualquier otro host Linux que use nrpe para los chequeos de Nagios:
Editamos el fichero “nrpe.cfg”:
nano /etc/nagios/nrpe.cfgAgregamos 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.serviceTras 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.cfgAgregamos 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.cfgAgregamos 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.serviceEn todos los hosts Linux con nrpe:
Definimos el comando nrpe:
nano /etc/nagios/nrpe.cfgAgregamos el nuevo comando en “OTHERS”
command[check_uptime]=/usr/local/nagios/libexec/check_uptimeReiniciamos el nrpe:
systemctl restart nrpe.service9.3. Plugin “check_sensors”
En “nagios-debian9”:
Definimos el comando para “check_uptime”:
nano /etc/nagios/objects/commands.cfgAgregamos 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.cfgAgregamos 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.serviceEn todos los hosts Linux con nrpe:
Definimos el comando nrpe:
nano /etc/nagios/nrpe.cfgAgregamos el nuevo comando en “OTHERS”:
command[check_sensors]=/usr/local/nagios/libexec/check_sensors $ARG1$Reiniciamos el nrpe:
systemctl restart nrpe.service9.4. Plugin “check_mailq”
En “nagios-debian9”:
Definimos el comando para “check_uptime”:
nano /etc/nagios/objects/commands.cfgAgregamos 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.cfgAgregamos 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.serviceEn todos los hosts Linux con nrpe:
Definimos el comando nrpe:
nano /etc/nagios/nrpe.cfgAgregamos 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.service9.5. Plugin “check_ftp”
En “nagios-debian9”:
Definimos el comando para “check_uptime”:
nano /etc/nagios/objects/commands.cfgBuscamos 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.cfgAgregamos 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.serviceEn todos los hosts Linux con nrpe:
Definimos el comando nrpe:
nano /etc/nagios/nrpe.cfgAgregamos 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.service10. 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-prereqDebe 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/apache2Instalamos nagiosgraph:
./install.pl --layout standalone --prefix /usr/local/nagiosgraphConfiguramos 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_filePresionamos "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.confDebe 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.confBorramos 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 configurationNos 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 configurationCreamos 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.cfgEn 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.cfgAgregamos 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.cfgReiniciamos nagios para comenzar la colección de datos de nagiosgraph, para los servicios que lo estén usando:
systemctl restart nagios.serviceReiniciamos apapche2:
systemctl restart apache2.serviceAccedemos 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:








No comments yet