aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xclients/ping.pl2
-rwxr-xr-xclients/snmpfetchng.pl4
-rwxr-xr-xweb/nms.gathering.org/api/public/dhcp1
-rwxr-xr-xweb/nms.gathering.org/api/public/switch-state2
-rwxr-xr-xweb/nms.gathering.org/api/public/switches2
-rwxr-xr-xweb/nms.gathering.org/api/read/switches-management3
-rwxr-xr-xweb/nms.gathering.org/api/write/switch-add2
-rwxr-xr-xweb/nms.gathering.org/api/write/switch-update3
-rw-r--r--web/nms.gathering.org/index.html15
-rw-r--r--web/nms.gathering.org/js/nms-map-handlers.js74
-rw-r--r--web/nms.gathering.org/js/nms.js12
11 files changed, 94 insertions, 26 deletions
diff --git a/clients/ping.pl b/clients/ping.pl
index 174342a..3f4139e 100755
--- a/clients/ping.pl
+++ b/clients/ping.pl
@@ -15,7 +15,7 @@ my $dbh = nms::db_connect();
$dbh->{AutoCommit} = 0;
$dbh->{RaiseError} = 1;
-my $q = $dbh->prepare("SELECT switch,host(ip) as ip,host(secondary_ip) as secondary_ip FROM switches WHERE ip is not null ORDER BY random()");
+my $q = $dbh->prepare("SELECT switch,host(mgmt_v4_addr) as ip,host(mgmt_v6_addr) as secondary_ip FROM switches WHERE mgmt_v4_addr is not null ORDER BY random()");
my $lq = $dbh->prepare("SELECT linknet,addr1,addr2 FROM linknets");
while (1) {
diff --git a/clients/snmpfetchng.pl b/clients/snmpfetchng.pl
index 36dd675..630347d 100755
--- a/clients/snmpfetchng.pl
+++ b/clients/snmpfetchng.pl
@@ -23,13 +23,13 @@ $dbh->{RaiseError} = 1;
my $qualification = <<"EOF";
(last_updated IS NULL OR now() - last_updated > poll_frequency)
AND (locked='f' OR now() - last_updated > '15 minutes'::interval)
-AND ip is not null
+AND mgmt_v4_addr is not null
EOF
# Borrowed from snmpfetch.pl
our $qswitch = $dbh->prepare(<<"EOF")
SELECT
- sysname,switch,host(ip) as ip,community,
+ sysname,switch,host(mgmt_v4_addr) as ip,community,
DATE_TRUNC('second', now() - last_updated - poll_frequency) AS overdue
FROM
switches
diff --git a/web/nms.gathering.org/api/public/dhcp b/web/nms.gathering.org/api/public/dhcp
index d432af0..91d52af 100755
--- a/web/nms.gathering.org/api/public/dhcp
+++ b/web/nms.gathering.org/api/public/dhcp
@@ -7,6 +7,7 @@ use strict;
use warnings;
use Data::Dumper;
+nms::web::setwhen('60m');
my $q = $nms::web::dbh->prepare('select distinct on (sysname) extract(epoch from date_trunc(\'second\',time)) as time,sysname from dhcp join switches on dhcp.switch = switches.switch where ' . $nms::web::when . ' order by sysname,time desc;');
$q->execute();
while ( my $ref = $q->fetchrow_hashref() ) {
diff --git a/web/nms.gathering.org/api/public/switch-state b/web/nms.gathering.org/api/public/switch-state
index 6f7573c..4907449 100755
--- a/web/nms.gathering.org/api/public/switch-state
+++ b/web/nms.gathering.org/api/public/switch-state
@@ -20,7 +20,7 @@ while ( my $ref = $q->fetchrow_hashref() ) {
my %port = %{$data{'ports'}{$porti}};
my $smallport = $porti;
$smallport =~ s/[0-9-].*$//;
- if ($porti =~ /ge-0\/0\/4[4-7]/) {
+ if ($porti =~ /ge-0\/0\/4[4-7]$/) {
$json{'switches'}{$sysname}{'uplinks'}{'ifHCInOctets'} += $port{'ifHCInOctets'};
$json{'switches'}{$sysname}{'uplinks'}{'ifHCOutOctets'} += $port{'ifHCOutOctets'};
if ($port{'ifOperStatus'} eq "up") {
diff --git a/web/nms.gathering.org/api/public/switches b/web/nms.gathering.org/api/public/switches
index 7e7f10b..3aa8af8 100755
--- a/web/nms.gathering.org/api/public/switches
+++ b/web/nms.gathering.org/api/public/switches
@@ -12,7 +12,7 @@ use Data::Dumper;
$nms::web::cc{'max-age'} = "60";
-my $q2 = $nms::web::dbh->prepare('select switch,sysname,placement,ip,poll_frequency,community,last_updated from switches where placement is not null');
+my $q2 = $nms::web::dbh->prepare('select switch,sysname,placement,mgmt_v4_addr,mgmt_v6_addr,mgmt_v4_gw,mgmt_v4_netsize,mgmt_v6_gw,mgmt_v6_netsize,mgmt_vlan,traffic_vlan,last_config_fetch,current_mac,poll_frequency,community,last_updated,switchtype from switches where placement is not null');
$q2->execute();
while (my $ref = $q2->fetchrow_hashref()) {
diff --git a/web/nms.gathering.org/api/read/switches-management b/web/nms.gathering.org/api/read/switches-management
index 6b5fdcd..1bb4c4c 100755
--- a/web/nms.gathering.org/api/read/switches-management
+++ b/web/nms.gathering.org/api/read/switches-management
@@ -12,7 +12,8 @@ use Data::Dumper;
$nms::web::cc{'max-age'} = "60";
-my $q2 = $nms::web::dbh->prepare('select sysname,ip,poll_frequency,community,subnet4,subnet6,distro,last_updated from switches ');
+#my $q2 = $nms::web::dbh->prepare('select sysname,ip,poll_frequency,subnet4,subnet6,distro,last_updated from switches ');
+my $q2 = $nms::web::dbh->prepare('select switch,sysname,mgmt_v4_addr,mgmt_v6_addr,mgmt_v4_gw,mgmt_v4_netsize,mgmt_v6_gw,mgmt_v6_netsize,mgmt_vlan,traffic_vlan,last_config_fetch,current_mac,poll_frequency,last_updated,switchtype from switches where placement is not null');
$q2->execute();
while (my $ref = $q2->fetchrow_hashref()) {
diff --git a/web/nms.gathering.org/api/write/switch-add b/web/nms.gathering.org/api/write/switch-add
index 48f62fc..411a76b 100755
--- a/web/nms.gathering.org/api/write/switch-add
+++ b/web/nms.gathering.org/api/write/switch-add
@@ -22,7 +22,7 @@ my @dups;
my $sth = $nms::web::dbh->prepare("SELECT sysname FROM switches WHERE sysname=?");
-my @fields = ('ip', 'sysname', 'last_updated', 'locked', 'poll_frequency', 'community', 'lldp_chassis_id', 'secondary_ip', 'subnet4', 'subnet6', 'placement', 'distro', 'secondary_ip');
+my @fields = ( 'community', 'current_mac', 'distro_name', 'distro_phy_port', 'lldp_chassis_id', 'mgmt_v4_addr', 'mgmt_v4_gw', 'mgmt_v4_netsize', 'mgmt_v6_addr', 'mgmt_v6_gw', 'mgmt_v6_netsize', 'mgmt_vlan', 'placement', 'poll_frequency', 'subnet4', 'subnet6', 'switchtype', 'sysname', 'traffic_vlan');
sub convertplace
{
diff --git a/web/nms.gathering.org/api/write/switch-update b/web/nms.gathering.org/api/write/switch-update
index 6507d2b..14c8773 100755
--- a/web/nms.gathering.org/api/write/switch-update
+++ b/web/nms.gathering.org/api/write/switch-update
@@ -22,7 +22,8 @@ my @dups;
my $sth = $nms::web::dbh->prepare("SELECT sysname FROM switches WHERE sysname=?");
-my @fields = ('ip', 'sysname', 'last_updated', 'locked', 'poll_frequency', 'community', 'lldp_chassis_id', 'secondary_ip', 'subnet4', 'subnet6', 'placement', 'distro', 'secondary_ip');
+
+my @fields = ( 'community', 'current_mac', 'distro_name', 'distro_phy_port', 'lldp_chassis_id', 'mgmt_v4_addr', 'mgmt_v4_gw', 'mgmt_v4_netsize', 'mgmt_v6_addr', 'mgmt_v6_gw', 'mgmt_v6_netsize', 'mgmt_vlan', 'placement', 'poll_frequency', 'subnet4', 'subnet6', 'switchtype', 'sysname', 'traffic_vlan');
sub convertplace
{
diff --git a/web/nms.gathering.org/index.html b/web/nms.gathering.org/index.html
index 02ae93c..b244d1b 100644
--- a/web/nms.gathering.org/index.html
+++ b/web/nms.gathering.org/index.html
@@ -59,9 +59,10 @@
<ul class="dropdown-menu" role="menu">
<li><a href="#ping" onclick="setUpdater(handler_ping)">Ping map</a></li>
<li><a href="#uplink" onclick="setUpdater(handler_uplinks)">Uplink map</a></li>
+ <li><a href="#dhcp" onclick="setUpdater(handler_dhcp)">DHCP map</a></li>
+ <li><a href="#comment" onclick="setUpdater(handler_comment)">Comment spotter</a></li>
<li><a href="#temp" onclick="setUpdater(handler_temp)">Temperature map</a></li>
<li><a href="#traffic" onclick="setUpdater(handler_traffic)">Traffic map</a></li>
- <li><a href="#comment" onclick="setUpdater(handler_comment)">Comment spotter</a></li>
<li><a href="#traffictot" onclick="setUpdater(handler_traffic_tot)">Total switch traffic</a></li>
<li><a href="#disco" onclick="setUpdater(handler_disco)">DISCO</a></li>
<li class="divider"> </li>
@@ -145,22 +146,26 @@
</tr>
<tr>
<td>3</td>
- <td>View temperature map</td>
+ <td>View DHCP map</td>
</tr>
<tr>
<td>4</td>
- <td>View uplink traffic map</td>
+ <td>View comment spotter map</td>
</tr>
<tr>
<td>5</td>
- <td>View comment spotter map</td>
+ <td>View temperature map</td>
</tr>
<tr>
<td>6</td>
- <td>View total switch traffic map</td>
+ <td>View uplink traffic map</td>
</tr>
<tr>
<td>7</td>
+ <td>View total switch traffic map</td>
+ </tr>
+ <tr>
+ <td>9</td>
<td>View Disco map</td>
</tr>
<tr>
diff --git a/web/nms.gathering.org/js/nms-map-handlers.js b/web/nms.gathering.org/js/nms-map-handlers.js
index 9584841..0bec084 100644
--- a/web/nms.gathering.org/js/nms-map-handlers.js
+++ b/web/nms.gathering.org/js/nms-map-handlers.js
@@ -49,6 +49,12 @@ var handler_traffic_tot = {
name:"Switch traffic map"
};
+var handler_dhcp = {
+ init:dhcpInit,
+ tag:"dhcp",
+ name:"DHCP map"
+};
+
var handler_disco = {
init:discoInit,
tag:"disco",
@@ -68,7 +74,8 @@ var handlers = [
handler_traffic,
handler_disco,
handler_comment,
- handler_traffic_tot
+ handler_traffic_tot,
+ handler_dhcp
];
/*
@@ -95,12 +102,12 @@ function uplinkUpdater()
if (uplinks == 0) {
nmsMap.setSwitchColor(sw,"white");
- } else if (nuplinks == uplinks) {
- nmsMap.setSwitchColor(sw,green);
- } else if (nuplinks - uplinks == 1) {
- nmsMap.setSwitchColor(sw, orange);
- } else if (nuplinks - uplinks == 2) {
+ } else if (uplinks == 1) {
nmsMap. setSwitchColor(sw, red);
+ } else if (uplinks == 2) {
+ nmsMap.setSwitchColor(sw, orange);
+ } else if (uplinks == 3) {
+ nmsMap.setSwitchColor(sw,green);
} else if (uplinks > 3) {
nmsMap.setSwitchColor(sw, blue);
}
@@ -115,9 +122,9 @@ function uplinkInit()
nmsData.addHandler("switches","mapHandler",uplinkUpdater);
nmsData.addHandler("switchstate","mapHandler",uplinkUpdater);
setLegend(1,"white","0 uplinks");
- setLegend(2,red,"2 missing");
- setLegend(3,orange,"1 missing");
- setLegend(4,green,"0 missing");
+ setLegend(2,red,"1 uplink");
+ setLegend(3,orange,"2 uplinks");
+ setLegend(4,green,"3 uplinks");
setLegend(5,blue,"4 uplinks");
}
@@ -339,6 +346,55 @@ function commentInit()
setLegend(5,green ,"Old/inactive only");
}
+function getDhcpColor(stop)
+{
+ stop = parseInt(stop);
+ stop = stop * 0.85;
+ if (stop < 0)
+ stop = 1000;
+ if (stop > 1000)
+ stop = 1000;
+ return getColorStop(stop);
+}
+
+function dhcpUpdater()
+{
+ var realnow = Date.now();
+ var now = Math.floor(realnow / 1000);
+ if (nmsData.dhcp == undefined || nmsData.dhcp.dhcp == undefined) {
+ return
+ }
+ if (nmsData.switches == undefined || nmsData.switches.switches == undefined) {
+ return;
+ }
+ try {
+ for (var sw in nmsData.switches.switches) {
+ var c = "white";
+ if (nmsData.dhcp.dhcp[sw] == undefined) {
+ nmsMap.setSwitchColor(sw,c);
+ continue;
+ }
+ var s = nmsData.dhcp.dhcp[sw];
+ var then = parseInt(s);
+ c = getDhcpColor(now - then);
+ nmsMap.setSwitchColor(sw, c);
+ }
+ } catch(e) {
+ console.log(e);
+ }
+}
+
+function dhcpInit()
+{
+ drawGradient([green,lightgreen,orange,red]);
+ nmsData.addHandler("dhcp","mapHandler",dhcpUpdater);
+ setLegend(1,"white","Undefined");
+ setLegend(2,getDhcpColor(1),"1 Second old");
+ setLegend(3,getDhcpColor(300),"300 Seconds old");
+ setLegend(4,getDhcpColor(900),"900 Seconds old");
+ setLegend(5,getDhcpColor(1200),"1200 Seconds old");
+}
+
/*
* Testing-function to randomize colors of linknets and switches
*/
diff --git a/web/nms.gathering.org/js/nms.js b/web/nms.gathering.org/js/nms.js
index 12823eb..49cacde 100644
--- a/web/nms.gathering.org/js/nms.js
+++ b/web/nms.gathering.org/js/nms.js
@@ -463,6 +463,7 @@ function initNMS() {
nmsData.registerSource("switches","/api/public/switches");
nmsData.registerSource("switchstate","/api/public/switch-state");
nmsData.registerSource("dhcpsummary","/api/public/dhcp-summary");
+ nmsData.registerSource("dhcp","/api/public/dhcp");
// This is a magic dummy-source, it's purpose is to give a unified
// way to get ticks every second. It is mainly meant to allow map
@@ -524,18 +525,21 @@ function setMapModeFromN(e,key)
setUpdater(handler_uplinks);
break;
case '3':
- setUpdater(handler_temp);
+ setUpdater(handler_dhcp);
break;
case '4':
- setUpdater(handler_traffic);
+ setUpdater(handler_comment);
break;
case '5':
- setUpdater(handler_comment);
+ setUpdater(handler_temp);
break;
case '6':
- setUpdater(handler_traffic_tot);
+ setUpdater(handler_traffic);
break;
case '7':
+ setUpdater(handler_traffic_tot);
+ break;
+ case '9':
setUpdater(handler_disco);
break;
}