From 4dbc3bf3ea375367a03e67baed574311b3e80fc2 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sun, 2 Apr 2006 21:47:53 +0000 Subject: [PATCH] Poll for errors along with data in/out. --- clients/snmpfetch.pl | 18 ++++++++++++++++-- sql/nms.sql | 4 +++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/clients/snmpfetch.pl b/clients/snmpfetch.pl index 2798413..bc64b60 100755 --- a/clients/snmpfetch.pl +++ b/clients/snmpfetch.pl @@ -49,7 +49,7 @@ my $qlock = $dbh->prepare("UPDATE switches SET locked='t', last_updated=now() WH 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"; @@ -127,8 +127,10 @@ while (1) { 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)) { @@ -212,6 +214,18 @@ sub fetch_data { 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) = @_; diff --git a/sql/nms.sql b/sql/nms.sql index 12d8244..c1ae9eb 100644 --- a/sql/nms.sql +++ b/sql/nms.sql @@ -272,7 +272,9 @@ CREATE TABLE polls ( switch integer NOT NULL, port integer NOT NULL, bytes_in bigint NOT NULL, - bytes_out bigint NOT NULL + bytes_out bigint NOT NULL, + errors_in bigint NOT NULL, + errors_out bigint NOT NULL ); ALTER TABLE ONLY polls ALTER COLUMN "time" SET STATISTICS 100; -- 2.39.2