Removed ?> from includes/polling/wireless/xirrus.inc.php. Also added graphs for average data rates and noise floor and a custom graph for clients connected per radio that should work on larger models.

This commit is contained in:
Rick Hodger
2016-05-25 19:56:10 +01:00
parent 39f8371ea2
commit ae23432138
7 changed files with 186 additions and 18 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -24,7 +24,12 @@ $pallette = array(
$rrd_options .= ' -E '; $rrd_options .= ' -E ';
$rrd_options .= " COMMENT:'Signal RSSI Cur Min Max\\n'"; $rrd_options .= " COMMENT:'Signal RSSI Cur Min Max\\n'";
$radioId=1; $radioId=1;
foreach(glob($config['rrd_dir'].'/'.$device['hostname'].'/xirrus_rssi-*.rrd') as $rrd) { 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]; $color=$pallette[$radioId];
$descr = "iap$radioId "; $descr = "iap$radioId ";

View File

@@ -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

View File

@@ -1678,7 +1678,7 @@ $config['os'][$os]['type'] = 'wireless';
$config['os'][$os]['icon'] = 'xirrus'; $config['os'][$os]['icon'] = 'xirrus';
$config['os'][$os]['over'][0]['graph'] = 'device_bits'; $config['os'][$os]['over'][0]['graph'] = 'device_bits';
$config['os'][$os]['over'][0]['text'] = 'Device Traffic'; $config['os'][$os]['over'][0]['text'] = 'Device Traffic';
$config['os'][$os]['over'][1]['graph'] = 'device_wifi_clients'; $config['os'][$os]['over'][1]['graph'] = 'device_xirrus_stations';
$config['os'][$os]['over'][1]['text'] = 'Wifi Clients'; $config['os'][$os]['over'][1]['text'] = 'Wifi Clients';
$config['os'][$os]['over'][2]['graph'] = 'device_xirrus_rssi'; $config['os'][$os]['over'][2]['graph'] = 'device_xirrus_rssi';
$config['os'][$os]['over'][2]['text'] = 'Signal RSSI'; $config['os'][$os]['over'][2]['text'] = 'Signal RSSI';
@@ -2162,6 +2162,17 @@ $config['graph_types']['device']['cisco_wwan_mnc']['descr'] = 'MNC';
$config['graph_types']['device']['xirrus_rssi']['section'] = 'wireless'; $config['graph_types']['device']['xirrus_rssi']['section'] = 'wireless';
$config['graph_types']['device']['xirrus_rssi']['order'] = '0'; $config['graph_types']['device']['xirrus_rssi']['order'] = '0';
$config['graph_types']['device']['xirrus_rssi']['descr'] = 'Signal Rssi'; $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 // Device Types

View File

@@ -78,18 +78,6 @@ if ($device['type'] == 'network' || $device['type'] == 'firewall' || $device['ty
echo (($wificlients1 + 0).' clients on wireless connector, '); echo (($wificlients1 + 0).' clients on wireless connector, ');
} }
if ($device['os'] == 'xirrus') {
$wificlients1=0; $wificlients2=0;
$assoc = snmpwalk_cache_oid($device, 'XIRRUS-MIB::stationAssociationIAP', array(), 'XIRRUS-MIB');
foreach($assoc as $station) {
if ($station['stationAssociationIAP']=='iap1') {
$wificlients1++;
} else {
$wificlients2++;
}
}
}
if (isset($wificlients1) && $wificlients1 != '') { if (isset($wificlients1) && $wificlients1 != '') {
$tags = array( $tags = array(
'rrd_def' => 'DS:wificlients:GAUGE:600:-273:1000', 'rrd_def' => 'DS:wificlients:GAUGE:600:-273:1000',

View File

@@ -2,17 +2,49 @@
$rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] . "/xirrus-rssi.rrd"; $rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] . "/xirrus-rssi.rrd";
$radios = snmpwalk_cache_oid($device, 'XIRRUS-MIB::realtimeMonitorIfaceName', array(), 'XIRRUS-MIB'); $radios = snmpwalk_cache_oid($device, 'XIRRUS-MIB::realtimeMonitorIfaceName', array(), 'XIRRUS-MIB');
$rssi = snmpwalk_cache_oid($device, 'XIRRUS-MIB::realtimeMonitorAverageRSSI', 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) { foreach($radios as $idx => $radio) {
$radioName = $radio['realtimeMonitorIfaceName']; $radioName = $radio['realtimeMonitorIfaceName'];
$rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] . "/xirrus_rssi-$idx.rrd"; $associations[$radioName]=0;
$rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] . "/xirrus_stats-$radioName.rrd";
if (!is_file($rrd_filename)) { if (!is_file($rrd_filename)) {
rrdtool_create($rrd_filename, " --step 300 DS:rssi:GAUGE:600:-150:0".$config['rrd_rra']); 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'])); rrdtool_update($rrd_filename, array(
'rssi'=>$rssi[$idx]['realtimeMonitorAverageRSSI'],
'dataRate'=>$dataRate[$idx]['realtimeMonitorAverageDataRate'],
'noiseFloor'=>$noiseFloor[$idx]['realtimeMonitorNoiseFloor']
));
} }
// cleanup // cleanup
unset($rrd_filename); unset($radios); unset($rssi); unset($radioName); unset($rrd_filename); unset($radios); unset($rssi); unset($radioName);
// 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
print_r($associations);
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_rssi'] = TRUE; $graphs['xirrus_rssi'] = TRUE;
?> $graphs['xirrus_dataRates'] = TRUE;
$graphs['xirrus_noiseFloor'] = TRUE;
$graphs['xirrus_stations'] = TRUE;