[bofhers] Re: Nagios: checkear proceso ejecutado por java

  • From: vfmBOFH <vfmbofh@xxxxxxxxx>
  • To: bofhers <bofhers@xxxxxxxxxxxxx>
  • Date: Tue, 4 Jun 2013 21:22:01 +0200

Holaquetal.

Prueba con este check mierder:

#!/usr/bin/perl
#####################################################################
#       Licencia HLQTSDLH
#       Check chorra para procesos basados en Java
#####################################################################
# Parámetros 1: Host, 2: community, 3: Nombre proceso
use strict;
use SNMP;
use lib "/usr/lib/nagios/plugins";
use utils qw(%ERRORS);
my %ERRORS=('OK'=>0,'WARNING0'=>1,'CRITICAL'=>2,'UNKNOWN'=>3);
my $session = new SNMP::Session(DestHost => $ARGV[0], Community =>
$ARGV[1], Version => 2 );
my $found = 0;

die "Error de sesión SNMP: $SNMP::Session::ErrorStr" unless
  (defined $session);
#Preparamos la variable donde almacenaremos los valores retornados por los
getnext
my $vars = new SNMP::VarList(['hrSWRunParameters']);
# Primera colecta de datos
my ($mp) = $session->getnext($vars);
#print "$mp\n";
die $session->{ErrorStr} if ($session->{ErrorStr});
# bucle para el resto
while (!$session->{ErrorStr} && $$vars[0]->tag eq "hrSWRunParameters"){
        if ($mp =~ $ARGV[2]) {
                $found = 1;
                last;
                }
        else {
        $mp = $session->getnext($vars); }
};
if ($found >0) {
printf "Ok. Proceso encontrado\n";
exit $ERRORS{"OK"};
}
else {
printf "ARGH! proceso no encontrado!!!";
exit $ERRORS{"CRITICAL"};
}



El 24 de mayo de 2013 16:06, Sergio Villegas
<svillegas.flores@xxxxxxxxx>escribió:

> Buenas lista,
> Ya encontré la forma de hacer el check que quería con SNMP. Bueno, casi,
> por que tiene una limitación.
> Teniendo en cuenta que si al script le paso los parámetros "-f -A" me
> checkea el path completo y todos los parámetros del proceso. Ahora sólo
> falta utilizar el poder de las regex. Con el parámetro "-n", si le incluyes
> una regexp, la evalúa. Ahora si que parece fácil. Le pongo que me matchee
> el proceso java al principio de la cadena, y que al final matchee el jar
> del opennms.
> Pues no. Ahora viene el problema feo. SNMP funciona sobre UDP. UDP tiene
> sus limitaciones, como todos sabemos. La que me jode ahora mismo en
> concreto es la limitación de tamaño del mensaje de UDP, que son 1470
> octetos. Si le quitamos cabeceras y demás información, se nos queda en unos
> 1200 octetos. Conclusión: se me corta la cadena y no me entra entera.
> Solución: Utilizar SNMP sobre TCP, que no me gusta, o matchear lo que mas
> se acerque dentro de la cadena que nos entra.
> Al final utilizo el script de la siguiente forma:
> check_snmp_process.pl -H xxx.xxx.xxx.xxx -C public -2 -n
> /usr/java/latest/bin/java.*/opt/opennms/lib/endorsed.* -f -A -o 1200
> El parámetro "-o" es para modificar el tamaño máximo del paquete SNMP.
>
> Espero que el rollaco este le valga a alguien para ahorrarse un rato de
> errores.
>
> Un saludo.
>
>
>
> El 22 de mayo de 2013 21:10, Marcos Lorenzo de Santiago <
> aznar.muerete@xxxxxxxxx> escribió:
>
>
>> El 22/05/2013 20:32, "Feina Centdos" <feina102@xxxxxxxxx> escribió:
>>
>> > 2. Instalar el servicio nrpe en el server y utilizar el check_proc de
>> los plugins locales (el nsca lo prefiero para checks asincronos o checks
>> que tardan una vida en ejecutarse y si puedo, excepto para los tráficos de
>> red, huyo del snmp)
>>
>> Yo os recomiendo que probéis SNMP y comparáis.
>>
>> Yo chequeo load average, memoria y filesystems por snmp, solo uso NRPE
>> para NTP y CPU Stats.
>>
>> NSCA lo uso para el bacula y ciertos crons importantes.
>>
>> Y desde que me enteré que se puede asociar custom OIDs a scripts en el
>> snmpd, me estoy planteando pasar del NRPE y tirar de SNMP...
>>
>> Jodó que de siglas he puesto! O_o
>>
>
>

Other related posts: