[mrtg] SNMPWALK Problem. Problem if using Net_SNMP_util.pm
Carlos Velasco
mrtg at nimastelecom.com
Thu Mar 22 22:55:29 CET 2007
Hello,
If one host is down, when performing snmpwalk due to Interface by Name configuration (Target[myrouter]: #2/11:public at wellfleet-fddi.domain), this code will not work as expected.
errmsg is never used in Net_SNMP_util, only in SNMP_util. Its value is undef.
When host is down, the result is @ret defined with 1 element in array, the element is an undef.
The code will result in several delay in mrtg processing, as all nodes are tried and failed, the host is never marked as dead.
MRTG_lib.pm (line 1623)
foreach my $node (@nodes) {
next if $confcache->{___deadhosts}{$hostkey} and time - $confcache->{___deadhosts}{$hostkey} < 300;
$SNMP_Session::errmsg = undef;
@ret = snmpwalk(v4onlyifnecessary($host, $ipv4only), $snmpoptions, $node);
unless ( $SNMP_Session::errmsg){
foreach my $ret (@ret)
{
my ($oid, $desc) = split(':', $ret, 2);
if ($tables{$node} eq 'Ip') {
storeincache($confcache,$host,$tables{$node},$oid,$desc);
} else {
$desc =~ s/[\0- ]+$//; #trailing whitespace is too sick for us
$desc =~ s/[\0- ]/ /g; #whitespace is just whitespace
storeincache($confcache,$host,$tables{$node},$desc,$oid);
}
};
} else {
$confcache->{___deadhosts}{$hostkey} = time
if $SNMP_Session::errmsg =~ /no response received/;
debug('coca',"Skipping $node scanning because $host does not seem to support it");
}
Regards,
Carlos Velasco
More information about the mrtg
mailing list