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 >> > >