Observium_CE/includes/polling/ports/adsl-line-mib.lib.php

147 lines
5.9 KiB
PHP

<?php
/**
* Observium
*
* This file is part of Observium.
*
* @package observium
* @subpackage poller
* @copyright (C) Adam Armstrong
*
*/
// ADSL-LINE-MIB functions
// Example snmpwalk with units
// "Interval" oids have been filtered out
# adslLineCoding.1 = dmt
# adslLineType.1 = fastOrInterleaved
# adslLineSpecific.1 = zeroDotZero
# adslLineConfProfile.1 = "qwer"
# adslAtucInvSerialNumber.1 = "IES-1000 AAM1008-61"
# adslAtucInvVendorID.1 = "4"
# adslAtucInvVersionNumber.1 = "0"
# adslAtucCurrSnrMgn.1 = 150 tenth dB
# adslAtucCurrAtn.1 = 20 tenth dB
# adslAtucCurrStatus.1 = "00 00 "
# adslAtucCurrOutputPwr.1 = 100 tenth dBm
# adslAtucCurrAttainableRate.1 = 10272000 bps
# adslAturInvVendorID.1 = "0"
# adslAturInvVersionNumber.1 = "0"
# adslAturCurrSnrMgn.1 = 210 tenth dB
# adslAturCurrAtn.1 = 20 tenth dB
# adslAturCurrStatus.1 = "00 00 "
# adslAturCurrOutputPwr.1 = 0 tenth dBm
# adslAturCurrAttainableRate.1 = 1056000 bps
# adslAtucChanInterleaveDelay.1 = 6 milli-seconds
# adslAtucChanCurrTxRate.1 = 8064000 bps
# adslAtucChanPrevTxRate.1 = 0 bps
# adslAturChanInterleaveDelay.1 = 9 milli-seconds
# adslAturChanCurrTxRate.1 = 512000 bps
# adslAturChanPrevTxRate.1 = 0 bps
# adslAtucPerfLofs.1 = 0
# adslAtucPerfLoss.1 = 0
# adslAtucPerfLols.1 = 0
# adslAtucPerfLprs.1 = 0
# adslAtucPerfESs.1 = 0
# adslAtucPerfInits.1 = 1
# adslAtucPerfValidIntervals.1 = 0
# adslAtucPerfInvalidIntervals.1 = 0
# adslAturPerfLoss.1 = 0 seconds
# adslAturPerfESs.1 = 0 seconds
# adslAturPerfValidIntervals.1 = 0
# adslAturPerfInvalidIntervals.1 = 0
function process_port_adsl(&$this_port, $device, $port)
{
// Check to make sure Port data is cached.
if (!isset($this_port['adslLineCoding'])) {
return;
}
// Used below for StatsD only
$adsl_oids = [
'adslAtucCurrSnrMgn', 'adslAtucCurrAtn', 'adslAtucCurrOutputPwr', 'adslAtucCurrAttainableRate', 'adslAtucChanCurrTxRate',
'adslAturCurrSnrMgn', 'adslAturCurrAtn', 'adslAturCurrOutputPwr', 'adslAturCurrAttainableRate', 'adslAturChanCurrTxRate',
'adslAtucPerfLofs', 'adslAtucPerfLoss', 'adslAtucPerfLprs', 'adslAtucPerfESs', 'adslAtucPerfInits',
'adslAturPerfLofs', 'adslAturPerfLoss', 'adslAturPerfLprs', 'adslAturPerfESs',
'adslAtucChanCorrectedBlks', 'adslAtucChanUncorrectBlks',
'adslAturChanCorrectedBlks', 'adslAturChanUncorrectBlks'
];
$adsl_db_oids = [
'adslLineCoding', 'adslLineType',
'adslAtucInvVendorID', 'adslAtucInvVersionNumber', 'adslAtucCurrSnrMgn', 'adslAtucCurrAtn', 'adslAtucCurrOutputPwr', 'adslAtucCurrAttainableRate',
'adslAturInvSerialNumber', 'adslAturInvVendorID', 'adslAturInvVersionNumber',
'adslAtucChanCurrTxRate', 'adslAturChanCurrTxRate', 'adslAturCurrSnrMgn', 'adslAturCurrAtn', 'adslAturCurrOutputPwr', 'adslAturCurrAttainableRate'
];
$adsl_tenth_oids = ['adslAtucCurrSnrMgn', 'adslAtucCurrAtn', 'adslAtucCurrOutputPwr', 'adslAturCurrSnrMgn', 'adslAturCurrAtn', 'adslAturCurrOutputPwr'];
foreach ($adsl_tenth_oids as $oid) {
if (isset($this_port[$oid])) {
$this_port[$oid] = $this_port[$oid] / 10;
}
}
if (!dbExist('ports_adsl', '`port_id` = ?', [$port['port_id']])) {
dbInsert(['device_id' => $device['device_id'], 'port_id' => $port['port_id']], 'ports_adsl');
}
$adsl_port = dbFetchRow('SELECT * FROM `ports_adsl` WHERE `port_id` = ?', [$port['port_id']]);
$adsl_update = [];
foreach ($adsl_db_oids as $oid) {
if ($adsl_port[$oid] != $this_port[$oid]) {
$adsl_update[$oid] = $this_port[$oid];
}
}
if (count($adsl_update)) {
$adsl_update['port_adsl_updated'] = ['NOW()'];
dbUpdate($adsl_update, 'ports_adsl', '`port_id` = ?', [$port['port_id']]);
}
if ($this_port['adslAtucCurrSnrMgn'] > "1280") {
$this_port['adslAtucCurrSnrMgn'] = "U";
}
if ($this_port['adslAturCurrSnrMgn'] > "1280") {
$this_port['adslAturCurrSnrMgn'] = "U";
}
rrdtool_update_ng($device, 'port-adsl', [
'AtucCurrSnrMgn' => $this_port['adslAtucCurrSnrMgn'],
'AtucCurrAtn' => $this_port['adslAtucCurrAtn'],
'AtucCurrOutputPwr' => $this_port['adslAtucCurrOutputPwr'],
'AtucCurrAttainableR' => $this_port['adslAtucCurrAttainableR'],
'AtucChanCurrTxRate' => $this_port['adslAtucChanCurrTxRate'],
'AturCurrSnrMgn' => $this_port['adslAturCurrSnrMgn'],
'AturCurrAtn' => $this_port['adslAturCurrAtn'],
'AturCurrOutputPwr' => $this_port['adslAturCurrOutputPwr'],
'AturCurrAttainableR' => $this_port['adslAturCurrAttainableR'],
'AturChanCurrTxRate' => $this_port['adslAturChanCurrTxRate'],
'AtucPerfLofs' => $this_port['adslAtucPerfLofs'],
'AtucPerfLoss' => $this_port['adslAtucPerfLoss'],
'AtucPerfLprs' => $this_port['adslAtucPerfLprs'],
'AtucPerfESs' => $this_port['adslAtucPerfESs'],
'AtucPerfInits' => $this_port['adslAtucPerfInits'],
'AturPerfLofs' => $this_port['adslAturPerfLofs'],
'AturPerfLoss' => $this_port['adslAturPerfLoss'],
'AturPerfLprs' => $this_port['adslAturPerfLprs'],
'AturPerfESs' => $this_port['adslAturPerfESs'],
'AtucChanCorrectedBl' => $this_port['adslAtucChanCorrectedBl'],
'AtucChanUncorrectBl' => $this_port['adslAtucChanUncorrectBl'],
'AturChanCorrectedBl' => $this_port['adslAturChanCorrectedBl'],
'AturChanUncorrectBl' => $this_port['adslAturChanUncorrectBl'],
], get_port_rrdindex($port));
if ($GLOBALS['config']['statsd']['enable']) {
foreach ($adsl_oids as $oid) {
// Update StatsD/Carbon
StatsD ::gauge(str_replace(".", "_", $device['hostname']) . '.' . 'port' . '.' . $port['ifIndex'] . '.' . $oid, $this_port[$oid]);
}
}
//echo("ADSL (".$this_port['adslLineCoding']."/".formatRates($this_port['adslAtucChanCurrTxRate'])."/".formatRates($this_port['adslAturChanCurrTxRate']).")");
}
// EOF