Bitácora de EleKtR0

English - Italiano - Deutsch - Français - Português - русский

7 de abril de 2015

Registro de traps SNMP en rsyslog en Debian 6

Una receta ultra simplificada de cómo registrar traps SNMP en rsyslog. Concretamente he usado Debian 6 pero no debe cambiar mucho en otras versiones. Primero debemos instalar el paquete snmpd en Debian, deshabilitar el demonio del servidor snmpd y habilitar el de snmptrapd modificando el fichero /etc/default/snmpd de esta forma:
SNMPDRUN=no
TRAPDRUN=yes
En el fichero /etc/snmp/snmptrapd.conf debemos configurar la comunidad de la que recibiremos los traps, por ejemplo: authCommunity log public Reiniciamos el servicio snmpd con service snmpd restart y debemos tener el proceso snmptrapd en ejecución y el puerto UDP 162 a la escucha. Para que rsyslog filtre el mensaje que snmptrapd generará en el log del sistema podemos poner una regla como la siguiente en /etc/rsyslog.conf:
if ($programname == 'snmptrapd') then /var/log/snmptrapd.log
& ~
La cadena "& ~" sirve para que al aplicarse la regla de filtrado del if el mensaje se guarde en el fichero indicado y no se apliquen más reglas que dupliquen el mensaje en otros ficheros de log.
Para probar a enviar traps y ver si funciona, he usado este código que he encontrado en The Linux Documentation Project:
use strict;
use vars qw($session $error $response);

use Net::SNMP;

($session, $error) = Net::SNMP->session(
   -hostname  => shift || '192.168.1.12',
   -community => shift || 'public',
   -port      => shift || 162 
);

if (!defined($session)) {
   printf("ERROR: %s.\n", $error);
   exit 1;
}

my $count = 0;

$response = 1;
while ( $response ) {
   $response = $session->trap();
   $count++;
   sleep 5;
   print "Sending trap ($count)\n";
}

$session->close();
exit 0;


Etiquetas: , , ,

0 comentarios:

Publicar un comentario

Suscribirse a Enviar comentarios [Atom]



<< Página principal