aboutsummaryrefslogtreecommitdiffstats
path: root/collectors/snmpfetchng.pl
diff options
context:
space:
mode:
Diffstat (limited to 'collectors/snmpfetchng.pl')
-rwxr-xr-xcollectors/snmpfetchng.pl45
1 files changed, 25 insertions, 20 deletions
diff --git a/collectors/snmpfetchng.pl b/collectors/snmpfetchng.pl
index 9c06f4a..4312606 100755
--- a/collectors/snmpfetchng.pl
+++ b/collectors/snmpfetchng.pl
@@ -32,7 +32,7 @@ EOF
# Borrowed from snmpfetch.pl
our $qswitch = $dbh->prepare(<<"EOF")
SELECT
- sysname,switch,host(mgmt_v4_addr) as ip,host(mgmt_v6_addr) as ip2,community,
+ sysname,switch,host(mgmt_v6_addr) as ip,host(mgmt_v4_addr) as ip2,community,
DATE_TRUNC('second', now() - last_updated - poll_frequency) AS overdue
FROM
switches
@@ -70,7 +70,9 @@ sub populate_switches
my $ip;
$ip = $ref->{'ip'};
if (!defined($ip) or $ip eq "") {
- $ip = 'udp6:[' . $ref->{'ip2'} . ']';
+ $ip = 'udp:[' . $ref->{'ip2'} . ']';
+ } else {
+ $ip = 'udp6:[' . $ip . ']';
}
push @switches, {
'sysname' => $ref->{'sysname'},
@@ -95,6 +97,7 @@ sub inner_loop
$dbh->commit;
my $s = SNMP::Session->new(DestHost => $switch{'mgtip'},
Community => $switch{'community'},
+ Timeout => 1000000,
UseEnums => 1,
Version => '2');
my $ret = $s->bulkwalk(0, 10, @nms::config::snmp_objects, sub{ callback(\%switch, @_); });
@@ -162,7 +165,7 @@ sub callback{
for my $nic (@nicids) {
$tree2{'ports'}{$tree{$nic}{'ifName'}} = $tree{$nic};
my $tmp_field = '';
- for my $tmp_key (keys $tree{$nic}) {
+ for my $tmp_key (keys %{$tree{$nic}}) {
if(looks_like_number($tree{$nic}{$tmp_key})) {
$tmp_field = $tree{$nic}{$tmp_key};
} else {
@@ -170,23 +173,25 @@ sub callback{
}
my $cv = AE::cv;
- $influx->write(
- database => $nms::config::influx_database,
- data => [
- {
- measurement => 'ports',
- tags => {
- switch => $switch{'sysname'},
- interface => $tree{$nic}{'ifName'},
- },
- fields => { $tmp_key => $tmp_field },
- }],
- on_success => $cv,
- on_error => sub {
- $cv->croak("Failed to write data: @_");
- }
- );
- $cv->recv;
+ if (defined($tree{$nic}{'ifName'}) and $tree{$nic}{'ifName'} ne "") {
+ $influx->write(
+ database => $nms::config::influx_database,
+ data => [
+ {
+ measurement => 'ports',
+ tags => {
+ switch => $switch{'sysname'},
+ interface => $tree{$nic}{'ifName'},
+ },
+ fields => { $tmp_key => $tmp_field },
+ }],
+ on_success => $cv,
+ on_error => sub {
+ $cv->croak("Failed to write data: @_");
+ }
+ );
+ $cv->recv;
+ }
}
delete $tree{$nic};