diff --git a/html/includes/graphs/device/xirrus_dataRates.inc.php b/html/includes/graphs/device/xirrus_dataRates.inc.php new file mode 100644 index 0000000000..0f81d52f97 --- /dev/null +++ b/html/includes/graphs/device/xirrus_dataRates.inc.php @@ -0,0 +1,44 @@ + '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 diff --git a/html/includes/graphs/device/xirrus_noiseFloor.inc.php b/html/includes/graphs/device/xirrus_noiseFloor.inc.php new file mode 100644 index 0000000000..5f8afaa817 --- /dev/null +++ b/html/includes/graphs/device/xirrus_noiseFloor.inc.php @@ -0,0 +1,44 @@ + '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 diff --git a/html/includes/graphs/device/xirrus_rssi.inc.php b/html/includes/graphs/device/xirrus_rssi.inc.php index 3675b5d1d6..97e58e5a2b 100644 --- a/html/includes/graphs/device/xirrus_rssi.inc.php +++ b/html/includes/graphs/device/xirrus_rssi.inc.php @@ -24,7 +24,12 @@ $pallette = array( $rrd_options .= ' -E '; $rrd_options .= " COMMENT:'Signal RSSI Cur Min Max\\n'"; $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]; $descr = "iap$radioId "; diff --git a/html/includes/graphs/device/xirrus_stations.inc.php b/html/includes/graphs/device/xirrus_stations.inc.php new file mode 100644 index 0000000000..ae7fb4a1d4 --- /dev/null +++ b/html/includes/graphs/device/xirrus_stations.inc.php @@ -0,0 +1,44 @@ + '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 diff --git a/includes/definitions.inc.php b/includes/definitions.inc.php index ce8b730aaa..2c6ebe10f1 100644 --- a/includes/definitions.inc.php +++ b/includes/definitions.inc.php @@ -1678,7 +1678,7 @@ $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_wifi_clients'; +$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'; @@ -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']['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 diff --git a/includes/polling/wifi.inc.php b/includes/polling/wifi.inc.php index 530bbb5521..685fac9641 100644 --- a/includes/polling/wifi.inc.php +++ b/includes/polling/wifi.inc.php @@ -78,18 +78,6 @@ if ($device['type'] == 'network' || $device['type'] == 'firewall' || $device['ty 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 != '') { $tags = array( 'rrd_def' => 'DS:wificlients:GAUGE:600:-273:1000', diff --git a/includes/polling/wireless/xirrus.inc.php b/includes/polling/wireless/xirrus.inc.php index e7cd1f0886..e91b61854b 100644 --- a/includes/polling/wireless/xirrus.inc.php +++ b/includes/polling/wireless/xirrus.inc.php @@ -2,17 +2,49 @@ $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']; - $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)) { - 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 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_dataRates'] = TRUE; +$graphs['xirrus_noiseFloor'] = TRUE; +$graphs['xirrus_stations'] = TRUE;