Nsclient++. Monitorizar discos y volumenes windows.

Aunque nuestro querido nsclient++ incluye muchas funcionalidades y puede llegar a ser realmente potente a veces la documentación no es muy clara en cuanto a algunas opciones. Una de ellas es la monitorización de discos y, sobre todo, volúmenes windows (puntos de montaje).

Partimos de la configuración de nsclient++ con nrpe funcionando tal como explicaba en un artículo previo. Primero editaremos nuestro nsclient.ini y nos aseguraremos que permitimos consultas de la dirección ip de nuestro Nagios, p.e.:

allowed hosts = 192.168.1.40

Reiniciamos el servicio de nsclient++ en nuestro cliente Windows.

Monitorización de Unidades de disco.

Probamos primero en línea de comandos desde el servidor de Nagios, en el directorio de plugins donde estará también check_nrpe.

# ./check_nrpe -H 192.168.1.36 -c CheckDriveSize -a ShowAll
OK: C:\: 324G, D:\: 92.3G, E:\: 67.2G, G:\: 355G, M:\: 695G|'C:\ %'=66% 'C:\'=323.66G 'D:\ %'=78% 'D:\'=92.26G 'E:\ %'=20% 'E:\'=67.2G 'G:\ %'=59% 'G:\'=354.77G 'M:\ %'=70% 'M:\'=694.74G

Como vemos, con este comando obtenemos el espacio ocupado en todos los discos además de los datos de rendimiento de ocupación en espacio y en porcentaje (separados por el pipe ‘|’) que tan útiles nos serán para nuestras gráficas p.e. con PNP4Nagios.
Podemos verificar el código de retorno del chequeo como siempre con:

# echo $?
0

Este código de retorno nos determina como va a mostrar Nagios el estado de dicho chequeo como vimos en la Introducción a los Plugins estándar. Podemos forzar también los valores de Warning / Critical p.e. en porcentaje para todos los discos para ver como funciona:

#./check_nrpe -H 192.168.1.36 -c CheckDriveSize -a ShowAll MinWarn=50% MinCrit=20%
WARNING: C:\: Total: 488G - Used: 324G (66%) - Free: 165G (34%) < warning, D:\: Total: 117G - Used: 92.3G (78%) - Free: 24.9G (22%) < warning, E:\: 67.2G, G:\: Total: 596G - Used: 355G (59%) - Free: 241G (41%) < warning, M:\: Total: 984G - Used: 695G (70%) - Free: 289G (30%) < warning|'C:\ %'=34%;50;20 'C:\'=323.77G;244.14;97.65;0;488.28 'D:\ %'=22%;50;20 'D:\'=92.26G;58.59;23.43;0;117.18 'E:\ %'=80%;50;20 'E:\'=67.2G;164.51;65.8;0;329.03 'G:\ %'=41%;50;20 'G:\'=354.77G;298.08;119.23;0;596.1 'M:\ %'=30%;50;20 'M:\'=694.79G;492.05;196.82;0;984.1
# echo $?
1

Como podemos ver es un chequeo muy útil ya que de un plumazo verifica todos los discos. Si nos vale así perfecto pero suele ser un problema el usar los mismos intervalos de W/C para todos los discos por lo que es posible que nos veamos obligados a separar los chequeos en cuyo caso un ejemplo para el disco C: sería:

#./check_nrpe -H 192.168.1.36 -c CheckDriveSize -a Drive=C: MinWarn=50% MinCrit=20%
WARNING: C:: Total: 488G - Used: 324G (66%) - Free: 164G (34%) < warning|'C: %'=34%;50;20 'C:'=323.91G;244.14;97.65;0;488.28

O mucho mejor, chequear varios discos a la vez (ojo, aquí el orden de los parámetros si importa, primero intervalos y después disco):

#./check_nrpe -H 192.168.1.36 -c CheckDriveSize -a MinWarn=50% MinCrit=20% Drive=C: MinWarn=30% MinCrit=10% Drive=D:
WARNING: C:: Total: 488G - Used: 324G (66%) - Free: 164G (34%) < warning, D:: Total: 117G - Used: 92.3G (78%) - Free: 24.9G (22%) < warning|'C: %'=34%;50;20 'C:'=323.95G;244.14;97.65;0;488.28 'D: %'=22%;30;10 'D:'=92.26G;35.15;11.71;0;117.18

Monitorización de volúmenes.

Si tenemos un volumen en un punto de montaje nos habremos dado cuenta que no aparece en la lista de discos. Dado un volumen montado p.e. en C:\DATOS02

Forzamos también el intervalo de Warning para verlo mejor. OJO, los intervalos ser refieren a porcentaje RESTANTE, no ocupado. Támbién podriamos usar MaxWarn / MaxCrit  para tener % ocupado según vemos en doc. del comando.

#./check_nrpe -H 192.168.1.36 -c CheckDriveSize -a ShowAll MinWarn=95% MinCrit=5% Drive=C:/\DATOS02
WARNING: C:/DATOS02: Total: 1.95G - Used: 175M (8%) - Free: 1.78G (92%) < warning|'C:/DATOS02 %'=92%;95;5 'C:/DATOS02'=175.19M;1899.99;100;0;1999.99

Atención al formato de chequeo: C:/\DATOS02 . Separaremos los directorios necesarios de igual forma: C:/\DATOS02/\VOLUMEN01. Esto no parece estar correctamente documentado.

Monitorización de volúmenes mediante alias.

Otra alternativa para evitar el uso de parámetros en nrpe que siempre puede ser un tanto inseguro si no tenemos cuidado, es crear un alias en nuestro nsclient.ini en la sección correspondiente:

[/settings/external scripts/alias]
alias_volume_datos02 = CheckDriveSize MinWarn=10% MinCrit=5% FilterType=FIXED Drive=C:/\DATOS02

Lo probaríamos en modo comando desde Nagios:

# ./check_nrpe -H 192.168.1.36 -c alias_volume_datos02
OK: All drives within bounds.|'C:/\DATOS02 %'=92%;10;5 'C:/\DATOS02'=175.19M;200;100;0;1999.99

Podemos crear alias para cualquier comando nrpe. Nos limita más en cuanto a flexibilidad en la definición de servicios pero es más seguro. Hay que valorar que nos conviene.

Configuración en Nagios.

A continuación los objetos necesarios en Nagios.

Commando check_nrpe (por supuesto también el plugin nrpe). P.e.:

define command {
    command_name    check_nrpe
    command_line    /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$
}

Host y Servicios de ejemplo:

define host{
        use                     generic-host
        host_name               srvwin
        alias                   srvwin
        address                 192.168.1.36
        }
# Chequeo de todos los discos con intervalos Warning/Critical comunes
define service {
        host_name            srvwin
        service_description  check_all_disks
        check_command        check_nrpe!CheckDriveSize!ShowAll MinWarn=10% MinCrit=5%
        use                  generic-service
}
# Chequeo de discos c y d con intervalos propios
define service {
        host_name            srvwin
        service_description  check_disks_c_d
        check_command        check_nrpe!CheckDriveSize!MinWarn=50% MinCrit=20% Drive=C: MinWarn=30% MinCrit=10% Drive=D:
        use                  generic-service
}
# Chequeo de volumen (punto de montaje) con intervalo warning exagerado (ponerlo bajo)
define service {
        host_name            srvwin
        service_description  check_vol_datos02
        check_command        check_nrpe!CheckDriveSize!ShowAll MinWarn=95% MinCrit=5% Drive=C:/\DATOS02
        use                  generic-service
}

El resultado será algo así:

nagios-check_disks

Para saber más:

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Comment moderation is enabled. Your comment may take some time to appear.