|
@@ -23,7 +23,8 @@ class FiberhomePonStatsCommand extends BaseCommand
|
|
|
new InputOption('olt-server-id', null, InputOption::VALUE_OPTIONAL, "ServerDevice de la OLT",1),
|
|
|
new InputOption('olt-ip', false, InputOption::VALUE_OPTIONAL, "IP de la OLT"),
|
|
|
new InputOption('olt-community', false, InputOption::VALUE_OPTIONAL, "COMMUNITY de la OLT"),
|
|
|
- new InputOption('olt-snmp-library', false, InputOption::VALUE_OPTIONAL, "Versión de librería SNMP")
|
|
|
+ new InputOption('olt-snmp-library', false, InputOption::VALUE_OPTIONAL, "Versión de librería SNMP"),
|
|
|
+ new InputOption('save-historic', null, InputOption::VALUE_OPTIONAL, "Send data to StatsD",1)
|
|
|
))
|
|
|
;
|
|
|
}
|
|
@@ -45,6 +46,7 @@ class FiberhomePonStatsCommand extends BaseCommand
|
|
|
$oltIp = $input->getOption('olt-ip');
|
|
|
$oltCommunity = $input->getOption('olt-community');
|
|
|
$oltSnmpLibrary = $input->getOption('olt-snmp-library');
|
|
|
+ $saveHistoric = (int) $input->getOption('save-historic');
|
|
|
|
|
|
$flag = "olt_pon_stats_d_{$oltDeviceId}_s_{$oltServerId}.lock";
|
|
|
$key_olt_scan = "olt_scan_pons_d_{$oltDeviceId}_s_{$oltServerId}";
|
|
@@ -72,25 +74,35 @@ class FiberhomePonStatsCommand extends BaseCommand
|
|
|
$voltage = $SNMP->$library()->oltPonOpticalVltage();
|
|
|
$biasCurrent = $SNMP->$library()->oltPonOpticalCurrent();
|
|
|
|
|
|
- $sendData = array();
|
|
|
+ $ponStatsCached = $sendData = array();
|
|
|
|
|
|
$subId = "d_{$oltDeviceId}_s_{$oltServerId}";
|
|
|
$metrics = array("txPower" => "{$subId}_pon_tx_", "temperature" => "{$subId}_pon_temperature_", "voltage" => "{$subId}_pon_voltage_", "biasCurrent" => "{$subId}_pon_biascurrent_");
|
|
|
+
|
|
|
foreach($dataCached as $index => $pon) {
|
|
|
$ponPort = "{$pon['slot']}.{$pon['port']}";
|
|
|
|
|
|
+ $stats = array();
|
|
|
+ $stats['ponPort'] = "{$pon['slot']}/{$pon['port']}";
|
|
|
+ $stats['rxPower'] = array();
|
|
|
+
|
|
|
foreach($metrics as $data => $metric) {
|
|
|
-
|
|
|
+
|
|
|
if(isset($$data[$index]) && !empty($$data[$index])) {
|
|
|
+
|
|
|
$m = "{$metric}{$ponPort}";
|
|
|
$v = $$data[$index] * 0.01;
|
|
|
-
|
|
|
+ $stats[$data] = $v;
|
|
|
+
|
|
|
$sendData[$m] = "{$v}|g";
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ $ponStatsCached[$index] = $stats;
|
|
|
}
|
|
|
|
|
|
foreach($rxPower as $index => $rx) {
|
|
|
+
|
|
|
$ponPortOnuId = explode(".",$index);
|
|
|
|
|
|
if(count($ponPortOnuId) != 2) continue;
|
|
@@ -100,18 +112,27 @@ class FiberhomePonStatsCommand extends BaseCommand
|
|
|
$onuId = $ponPortOnuId[1];
|
|
|
$slot = $dataCached[$indexPon]['slot'];
|
|
|
$port = $dataCached[$indexPon]['port'];
|
|
|
-
|
|
|
+
|
|
|
$ponPort = "{$slot}.{$port}";
|
|
|
$m = "{$subId}_pon_rx_{$ponPort}.{$onuId}";
|
|
|
-
|
|
|
+
|
|
|
$v = $rx * 0.01;
|
|
|
+
|
|
|
+ if(isset($ponStatsCached[$indexPon]['rxPower'])) {
|
|
|
+ $ponStatsCached[$indexPon]['rxPower'][$onuId] = $v;
|
|
|
+ }
|
|
|
|
|
|
$sendData[$m] = "{$v}|g";
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if($sendData) {
|
|
|
+ if($ponStatsCached) {
|
|
|
+ $key_pon_stats = "olt_stats_pons_d_{$oltDeviceId}_s_{$oltServerId}";
|
|
|
+ $this->setData($key_pon_stats, $ponStatsCached, true);
|
|
|
+ }
|
|
|
+
|
|
|
+ if($sendData && $saveHistoric) {
|
|
|
$t_start_script = microtime(true);
|
|
|
$statsdService = $this->getContainer()->get('statsd');
|
|
|
$statsdService->send($sendData);
|