Merge pull request #3543 from Tatermen/master

Basic support for Xirrus Wireless Access Points.
This commit is contained in:
Neil Lathwood
2016-05-30 19:26:06 +01:00
11 changed files with 17717 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,44 @@
<?php
require 'includes/graphs/common.inc.php';
$pallette = array(
1 => 'FF0000',
2 => '0000FF',
3 => '00FF00',
4 => 'FF00FF',
5 => '000000',
6 => 'FFFF00',
7 => 'C0C0C0',
8 => '800000',
9 => '808000',
10 => '008000',
11 => '00FFFF',
12 => '008080',
13 => '000080',
14 => '800080',
15 => 'FF69B4',
16 => '006400'
);
$rrd_options .= ' -l 0 -E ';
$rrd_options .= " COMMENT:'Average Data Rate Cur Min Max\\n'";
$radioId=1;
foreach(glob($config['rrd_dir'].'/'.$device['hostname'].'/xirrus_stats-*.rrd') as $rrd) {
// get radio name
preg_match("/xirrus_stats-iap([0-9]{1,2}).rrd/", $rrd, $out);
list(,$radioId)=$out;
// build graph
$color=$pallette[$radioId];
$descr = "iap$radioId ";
$rrd_options .= " DEF:rate$radioId=$rrd:dataRate:AVERAGE";
$rrd_options .= " LINE2:rate$radioId#".$color.":'".$descr."'";
$rrd_options .= " GPRINT:rate$radioId:LAST:'%5.0lf'";
$rrd_options .= " GPRINT:rate$radioId:MIN:'%5.0lf'";
$rrd_options .= " GPRINT:rate$radioId:MAX:'%5.0lf'\\l";
$radioId++;
}//end foreach
@@ -0,0 +1,44 @@
<?php
require 'includes/graphs/common.inc.php';
$pallette = array(
1 => 'FF0000',
2 => '0000FF',
3 => '00FF00',
4 => 'FF00FF',
5 => '000000',
6 => 'FFFF00',
7 => 'C0C0C0',
8 => '800000',
9 => '808000',
10 => '008000',
11 => '00FFFF',
12 => '008080',
13 => '000080',
14 => '800080',
15 => 'FF69B4',
16 => '006400'
);
$rrd_options .= ' -E ';
$rrd_options .= " COMMENT:'Noisefloor Cur Min Max\\n'";
$radioId=1;
foreach(glob($config['rrd_dir'].'/'.$device['hostname'].'/xirrus_stats-*.rrd') as $rrd) {
// get radio name
preg_match("/xirrus_stats-iap([0-9]{1,2}).rrd/", $rrd, $out);
list(,$radioId)=$out;
// build graph
$color=$pallette[$radioId];
$descr = "iap$radioId ";
$rrd_options .= " DEF:noise$radioId=$rrd:noiseFloor:AVERAGE";
$rrd_options .= " LINE2:noise$radioId#".$color.":'".$descr."'";
$rrd_options .= " GPRINT:noise$radioId:LAST:'%5.0lf'";
$rrd_options .= " GPRINT:noise$radioId:MIN:'%5.0lf'";
$rrd_options .= " GPRINT:noise$radioId:MAX:'%5.0lf'\\l";
$radioId++;
}//end foreach
@@ -0,0 +1,44 @@
<?php
require 'includes/graphs/common.inc.php';
$pallette = array(
1 => 'FF0000',
2 => '0000FF',
3 => '00FF00',
4 => 'FF00FF',
5 => '000000',
6 => 'FFFF00',
7 => 'C0C0C0',
8 => '800000',
9 => '808000',
10 => '008000',
11 => '00FFFF',
12 => '008080',
13 => '000080',
14 => '800080',
15 => 'FF69B4',
16 => '006400'
);
$rrd_options .= ' -E ';
$rrd_options .= " COMMENT:'Signal RSSI Cur Min Max\\n'";
$radioId=1;
foreach(glob($config['rrd_dir'].'/'.$device['hostname'].'/xirrus_stats-*.rrd') as $rrd) {
// get radio name
preg_match("/xirrus_stats-iap([0-9]{1,2}).rrd/", $rrd, $out);
list(,$radioId)=$out;
// build graph
$color=$pallette[$radioId];
$descr = "iap$radioId ";
$rrd_options .= " DEF:rssi$radioId=$rrd:rssi:AVERAGE";
$rrd_options .= " LINE2:rssi$radioId#".$color.":'".$descr."'";
$rrd_options .= " GPRINT:rssi$radioId:LAST:'%5.0lf'";
$rrd_options .= " GPRINT:rssi$radioId:MIN:'%5.0lf'";
$rrd_options .= " GPRINT:rssi$radioId:MAX:'%5.0lf'\\l";
$radioId++;
}//end foreach
@@ -0,0 +1,44 @@
<?php
require 'includes/graphs/common.inc.php';
$pallette = array(
1 => '001080',
2 => '043D85',
3 => '096C8A',
4 => '0F8F84',
5 => '159461',
6 => '1B9A3E',
7 => '279F22',
8 => '56A429',
9 => '83A930',
10 => 'AEAE38',
11 => 'B48E40',
12 => 'B97049',
13 => 'BE5552',
14 => 'C35B79',
15 => 'C864A1',
16 => 'CE6FC7'
);
$rrd_options .= ' -l 0 -E ';
$rrd_options .= " COMMENT:'Associated Stations Cur Min Max\\n'";
$radioId=1;
foreach(glob($config['rrd_dir'].'/'.$device['hostname'].'/xirrus_users-*.rrd') as $rrd) {
// get radio name
preg_match("/xirrus_users-iap([0-9]{1,2}).rrd/", $rrd, $out);
list(,$radioId)=$out;
// build graph
$color=$pallette[$radioId];
$descr = "iap$radioId ";
$rrd_options .= " DEF:stations$radioId=$rrd:stations:AVERAGE";
$rrd_options .= " AREA:stations$radioId#".$color.":'".$descr."':STACK";
$rrd_options .= " GPRINT:stations$radioId:LAST:'%5.0lf'";
$rrd_options .= " GPRINT:stations$radioId:MIN:'%5.0lf'";
$rrd_options .= " GPRINT:stations$radioId:MAX:'%5.0lf'\\l";
$radioId++;
}//end foreach
+3
View File
@@ -880,3 +880,6 @@ $config['ignore_unmapable_port'] = False;
$config['influxdb']['timeout'] = 0;
$config['influxdb']['verifySSL'] = false;
// Xirrus - Disable station/client polling if true as it may take a long time on larger/heavily used APs.
$config['xirrus_disable_stations'] = false;
+30
View File
@@ -1680,6 +1680,21 @@ $config['os'][$os]['icon'] = 'deliberant';
$config['os'][$os]['over'][0]['graph'] = 'device_bits';
$config['os'][$os]['over'][0]['text'] = 'Device Traffic';
// Xirrus AP
$os = 'xirrus_aos';
$config['os'][$os]['text'] = 'Xirrus ArrayOS';
$config['os'][$os]['type'] = 'wireless';
$config['os'][$os]['icon'] = 'xirrus';
$config['os'][$os]['over'][0]['graph'] = 'device_bits';
$config['os'][$os]['over'][0]['text'] = 'Device Traffic';
$config['os'][$os]['over'][1]['graph'] = 'device_xirrus_stations';
$config['os'][$os]['over'][1]['text'] = 'Wifi Clients';
$config['os'][$os]['over'][2]['graph'] = 'device_xirrus_rssi';
$config['os'][$os]['over'][2]['text'] = 'Signal RSSI';
// Graph Types
require_once $config['install_dir'].'/includes/load_db_graph_types.inc.php';
@@ -2153,6 +2168,21 @@ $config['graph_types']['device']['cisco_wwan_mnc']['section'] = 'wireless';
$config['graph_types']['device']['cisco_wwan_mnc']['order'] = '1';
$config['graph_types']['device']['cisco_wwan_mnc']['descr'] = 'MNC';
$config['graph_types']['device']['xirrus_rssi']['section'] = 'wireless';
$config['graph_types']['device']['xirrus_rssi']['order'] = '0';
$config['graph_types']['device']['xirrus_rssi']['descr'] = 'Signal Rssi';
$config['graph_types']['device']['xirrus_dataRates']['section'] = 'wireless';
$config['graph_types']['device']['xirrus_dataRates']['order'] = '0';
$config['graph_types']['device']['xirrus_dataRates']['descr'] = 'Average DataRates';
$config['graph_types']['device']['xirrus_noiseFloor']['section'] = 'wireless';
$config['graph_types']['device']['xirrus_noiseFloor']['order'] = '0';
$config['graph_types']['device']['xirrus_noiseFloor']['descr'] = 'Noise Floor';
$config['graph_types']['device']['xirrus_stations']['section'] = 'wireless';
$config['graph_types']['device']['xirrus_stations']['order'] = '0';
$config['graph_types']['device']['xirrus_stations']['descr'] = 'Associated Stations';
// Device Types
$i = 0;
+10
View File
@@ -0,0 +1,10 @@
<?php
if(!$os) {
if (strstr($sysDescr, 'Xirrus')) {
if (strstr($sysDescr, 'ArrayOS')) {
$os = 'xirrus_aos';
}
}
}
+4
View File
@@ -0,0 +1,4 @@
<?php
include 'includes/polling/wireless/xirrus.inc.php';
+57
View File
@@ -0,0 +1,57 @@
<?php
$rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] . "/xirrus-rssi.rrd";
$radios = snmpwalk_cache_oid($device, 'XIRRUS-MIB::realtimeMonitorIfaceName', array(), 'XIRRUS-MIB');
$rssi = snmpwalk_cache_oid($device, 'XIRRUS-MIB::realtimeMonitorAverageRSSI', array(), 'XIRRUS-MIB');
$dataRate = snmpwalk_cache_oid($device, 'XIRRUS-MIB::realtimeMonitorAverageDataRate', array(), 'XIRRUS-MIB');
$noiseFloor = snmpwalk_cache_oid($device, 'XIRRUS-MIB::realtimeMonitorNoiseFloor', array(), 'XIRRUS-MIB');
$associations=array();
foreach($radios as $idx => $radio) {
$radioName = $radio['realtimeMonitorIfaceName'];
$associations[$radioName]=0;
$rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] . "/xirrus_stats-$radioName.rrd";
if (!is_file($rrd_filename)) {
rrdtool_create($rrd_filename, " --step 300 DS:rssi:GAUGE:600:-150:0 DS:dataRate:GAUGE:600:0:1400 DS:noiseFloor:GAUGE:600:-150:0".$config['rrd_rra']);
}
rrdtool_update($rrd_filename, array(
'rssi'=>$rssi[$idx]['realtimeMonitorAverageRSSI'],
'dataRate'=>$dataRate[$idx]['realtimeMonitorAverageDataRate'],
'noiseFloor'=>$noiseFloor[$idx]['realtimeMonitorNoiseFloor']
));
}
// cleanup
unset($rrd_filename); unset($radios); unset($rssi); unset($radioName);
// if this config flag is true, don't poll for stations
// this in case of large APs which may have many stations
// to prevent causing long polling times
if ($config['xirrus_disable_stations']!=true) {
// station associations
// custom RRDs and graph as each AP may have 16 radios
$assoc = snmpwalk_cache_oid($device, 'XIRRUS-MIB::stationAssociationIAP', array(), 'XIRRUS-MIB');
foreach($assoc as $s) {
$radio = array_pop($s);
$associations[$radio]++;
}
unset($radio); unset($assoc);
// write to rrds
foreach($associations as $radio => $count) {
$rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] . "/xirrus_users-$radio.rrd";
if (!is_file($rrd_filename)) {
rrdtool_create($rrd_filename, " --step 300 DS:stations:GAUGE:600:0:3200".$config['rrd_rra']);
}
rrdtool_update($rrd_filename, array('stations'=>$count));
}
// cleanup
unset($assocations); unset($rrd_filename);
$graphs['xirrus_stations'] = TRUE;
} else {
$graphs['xirrus_stations'] = FALSE;
}
$graphs['xirrus_rssi'] = TRUE;
$graphs['xirrus_dataRates'] = TRUE;
$graphs['xirrus_noiseFloor'] = TRUE;
$graphs['xirrus_stations'] = TRUE;
+17437
View File
File diff suppressed because it is too large Load Diff