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:
Dejar una contestacion