or die "Couldn't prepare qlock";
my $qunlock = $dbh->prepare("UPDATE switches SET locked='f', last_updated=now() WHERE switch=?")
or die "Couldn't prepare qunlock";
-my $qpoll = $dbh->prepare("INSERT INTO polls (time, switch, port, bytes_in, bytes_out) VALUES (timeofday()::timestamp,?,?,?,?)")
+my $qpoll = $dbh->prepare("INSERT INTO polls (time, switch, port, bytes_in, bytes_out, errors_in, errors_out) VALUES (timeofday()::timestamp,?,?,?,?,?,?)")
or die "Couldn't prepare qpoll";
my $qtemppoll = $dbh->prepare("INSERT INTO temppoll (time, switch, temp) VALUES (timeofday()::timestamp,?::text::int,?::text::float)")
or die "Couldn't prepare qtemppoll";
for my $port (@ports) {
my $in = fetch_data($session, $port, 0, $switch->{'wide_counters'});
my $out = fetch_data($session, $port, 1, $switch->{'wide_counters'});
+ my $ine = fetch_errors($session, $port, 0);
+ my $oute = fetch_errors($session, $port, 1);
- $qpoll->execute($switch->{'switch'}, $port, $in, $out);
+ $qpoll->execute($switch->{'switch'}, $port, $in, $out, $ine, $oute);
}
my $conn = switch_connect($ip);
if (!defined($conn)) {
$qtemppoll->execute($switch->{'switch'},
$avgtemp) or die "Could not exec qtemppoll";
} elsif ($switch->{'switchtype'} eq 'cisco6509') {
+ # fetch load data for the entities
for my $i (1..5) {
# find the ID
my $oid = BER::encode_oid(1, 3, 6, 1, 4, 1, 9, 9, 109, 1, 1, 1, 1, 2, $i);
$qcpupoll->execute($switch->{'switch'}, $entity, $value)
or die "Could not exec qcpupoll";
}
+
+ # fetch load data for the matrix
+ for my $i ([1,0], [1,1], [2,0], [2,1], [4,0], [5,0], [6,0]) {
+ # in
+ my $oid = BER::encode_oid(1, 3, 6, 1, 4, 1, 9, 9, 217, 1, 3, 1, 1, 6, $i->[0], $i->[1]);
+ my $in_util = fetch_snmp($session, $oid);
+
+ $qcpupoll->execute($switch->{'switch'}, 100000 + $i->[0] * 10 + $i->[1], $in_util)
+ or die "Could not exec qcpupoll";
+
+ # ou
+ $oid = BER::encode_oid(1, 3, 6, 1, 4, 1, 9, 9, 217, 1, 3, 1, 1, 7, $i->[0], $i->[1]);
+ my $out_util = fetch_snmp($session, $oid);
+
+ $qcpupoll->execute($switch->{'switch'}, 200000 + $i->[0] * 10 + $i->[1], $out_util)
+ or die "Could not exec qcpupoll";
+ }
}
$session->close;
};
return fetch_snmp($session, $oid);
}
+sub fetch_errors {
+ my ($session, $port, $out) = @_;
+
+ my $oid;
+ if ($out) {
+ $oid = BER::encode_oid(1, 3, 6, 1, 2, 1, 2, 2, 1, 20, $port); # interfaces.ifTable.ifEntry.ifOutErrors
+ } else {
+ $oid = BER::encode_oid(1, 3, 6, 1, 2, 1, 2, 2, 1, 14, $port); # interfaces.ifTable.ifEntry.ifInErrors
+ }
+
+ return fetch_snmp($session, $oid);
+}
sub fetch_snmp {
my ($session, $oid) = @_;