mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
initial support for Eltex mes24xx (#15816)
* initial support for Eltex mes24xx * style ci
This commit is contained in:
71
includes/discovery/sensors/current/eltex-mes24xx.inc.php
Normal file
71
includes/discovery/sensors/current/eltex-mes24xx.inc.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
/*
|
||||
* LibreNMS discovery module for Eltex-MES24xx SFP TxBiasCurrent
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package LibreNMS
|
||||
* @link https://www.librenms.org
|
||||
*
|
||||
* @copyright 2024 Peca Nesovanovic
|
||||
* @author Peca Nesovanovic <peca.nesovanovic@sattrakt.com>
|
||||
*/
|
||||
use LibreNMS\Util\Oid;
|
||||
|
||||
echo 'eltexPhyTransceiverDiagnosticTable' . PHP_EOL;
|
||||
$snmpData = SnmpQuery::cache()->hideMib()->walk('ELTEX-PHY-MIB::eltexPhyTransceiverDiagnosticTable')->table(3);
|
||||
if (! empty($snmpData)) {
|
||||
foreach ($snmpData as $index => $typeData) {
|
||||
foreach ($typeData as $type => $data) {
|
||||
$eltexPhyTransceiverDiagnosticTable[$type][$index] = array_shift($data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$divisor = 1000;
|
||||
$multiplier = 1;
|
||||
if (! empty($eltexPhyTransceiverDiagnosticTable['txBiasCurrent'])) {
|
||||
foreach ($eltexPhyTransceiverDiagnosticTable['txBiasCurrent'] as $ifIndex => $data) {
|
||||
$value = $data['eltexPhyTransceiverDiagnosticCurrentValue'] / $divisor;
|
||||
if ($value) {
|
||||
$high_limit = $data['eltexPhyTransceiverDiagnosticHighAlarmThreshold'] / 1000 / $divisor;
|
||||
$high_warn_limit = $data['eltexPhyTransceiverDiagnosticHighWarningThreshold'] / 1000 / $divisor;
|
||||
$low_warn_limit = $data['eltexPhyTransceiverDiagnosticLowWarningThreshold'] / 1000 / $divisor;
|
||||
$low_limit = $data['eltexPhyTransceiverDiagnosticLowAlarmThreshold'] / 1000 / $divisor;
|
||||
$descr = get_port_by_index_cache($device['device_id'], $ifIndex)['ifName'];
|
||||
$oid = Oid::toNumeric('ELTEX-PHY-MIB::eltexPhyTransceiverDiagnosticCurrentValue.' . $ifIndex . '.3.1');
|
||||
discover_sensor(
|
||||
$valid['sensor'],
|
||||
'current',
|
||||
$device,
|
||||
$oid,
|
||||
'SfpTxBias' . $ifIndex,
|
||||
'ELTEX-PHY-MIB',
|
||||
$descr,
|
||||
$divisor,
|
||||
$multiplier,
|
||||
$low_limit,
|
||||
$low_warn_limit,
|
||||
$high_warn_limit,
|
||||
$high_limit,
|
||||
$value,
|
||||
'snmp',
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
'Transceiver'
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
107
includes/discovery/sensors/dbm/eltex-mes24xx.inc.php
Normal file
107
includes/discovery/sensors/dbm/eltex-mes24xx.inc.php
Normal file
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
/*
|
||||
* LibreNMS discovery module for Eltex-MES24xx SFP OpticalPower
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package LibreNMS
|
||||
* @link https://www.librenms.org
|
||||
*
|
||||
* @copyright 2024 Peca Nesovanovic
|
||||
* @author Peca Nesovanovic <peca.nesovanovic@sattrakt.com>
|
||||
*/
|
||||
use LibreNMS\Util\Oid;
|
||||
|
||||
echo 'eltexPhyTransceiverDiagnosticTable' . PHP_EOL;
|
||||
$snmpData = SnmpQuery::cache()->hideMib()->walk('ELTEX-PHY-MIB::eltexPhyTransceiverDiagnosticTable')->table(3);
|
||||
if (! empty($snmpData)) {
|
||||
foreach ($snmpData as $index => $typeData) {
|
||||
foreach ($typeData as $type => $data) {
|
||||
$eltexPhyTransceiverDiagnosticTable[$type][$index] = array_shift($data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$divisor = 1000;
|
||||
$multiplier = 1;
|
||||
|
||||
if (! empty($eltexPhyTransceiverDiagnosticTable['txOpticalPower'])) {
|
||||
foreach ($eltexPhyTransceiverDiagnosticTable['txOpticalPower'] as $ifIndex => $data) {
|
||||
$value = $data['eltexPhyTransceiverDiagnosticCurrentValue'] / $divisor;
|
||||
if ($value) {
|
||||
$high_limit = $data['eltexPhyTransceiverDiagnosticLowAlarmThreshold'] / -$divisor;
|
||||
$high_warn_limit = $data['eltexPhyTransceiverDiagnosticLowWarningThreshold'] / -$divisor;
|
||||
$low_warn_limit = $data['eltexPhyTransceiverDiagnosticHighWarningThreshold'] / -$divisor;
|
||||
$low_limit = $data['eltexPhyTransceiverDiagnosticHighAlarmThreshold'] / -$divisor;
|
||||
$descr = get_port_by_index_cache($device['device_id'], $ifIndex)['ifName'];
|
||||
$oid = Oid::toNumeric('ELTEX-PHY-MIB::eltexPhyTransceiverDiagnosticCurrentValue.' . $ifIndex . '.4.1');
|
||||
discover_sensor(
|
||||
$valid['sensor'],
|
||||
'dbm',
|
||||
$device,
|
||||
$oid,
|
||||
'SfpTxDbm' . $ifIndex,
|
||||
'ELTEX-PHY-MIB',
|
||||
$descr,
|
||||
$divisor,
|
||||
$multiplier,
|
||||
$low_limit,
|
||||
$low_warn_limit,
|
||||
$high_warn_limit,
|
||||
$high_limit,
|
||||
$value,
|
||||
'snmp',
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
'Transceiver TX'
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (! empty($eltexPhyTransceiverDiagnosticTable['rxOpticalPower'])) {
|
||||
foreach ($eltexPhyTransceiverDiagnosticTable['rxOpticalPower'] as $ifIndex => $data) {
|
||||
$value = $data['eltexPhyTransceiverDiagnosticCurrentValue'] / $divisor;
|
||||
if ($value) {
|
||||
$high_limit = $data['eltexPhyTransceiverDiagnosticLowAlarmThreshold'] / -$divisor;
|
||||
$high_warn_limit = $data['eltexPhyTransceiverDiagnosticLowWarningThreshold'] / -$divisor;
|
||||
$low_warn_limit = $data['eltexPhyTransceiverDiagnosticHighWarningThreshold'] / -$divisor;
|
||||
$low_limit = $data['eltexPhyTransceiverDiagnosticHighAlarmThreshold'] / -$divisor;
|
||||
$descr = get_port_by_index_cache($device['device_id'], $ifIndex)['ifName'];
|
||||
$oid = Oid::toNumeric('ELTEX-PHY-MIB::eltexPhyTransceiverDiagnosticCurrentValue.' . $ifIndex . '.5.1');
|
||||
discover_sensor(
|
||||
$valid['sensor'],
|
||||
'dbm',
|
||||
$device,
|
||||
$oid,
|
||||
'SfpRxDbm' . $ifIndex,
|
||||
'ELTEX-PHY-MIB',
|
||||
$descr,
|
||||
$divisor,
|
||||
$multiplier,
|
||||
$low_limit,
|
||||
$low_warn_limit,
|
||||
$high_warn_limit,
|
||||
$high_limit,
|
||||
$value,
|
||||
'snmp',
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
'Transceiver RX'
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
71
includes/discovery/sensors/temperature/eltex-mes24xx.inc.php
Normal file
71
includes/discovery/sensors/temperature/eltex-mes24xx.inc.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
/*
|
||||
* LibreNMS discovery module for Eltex-MES24xx SFP Temperature
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package LibreNMS
|
||||
* @link https://www.librenms.org
|
||||
*
|
||||
* @copyright 2024 Peca Nesovanovic
|
||||
* @author Peca Nesovanovic <peca.nesovanovic@sattrakt.com>
|
||||
*/
|
||||
use LibreNMS\Util\Oid;
|
||||
|
||||
echo 'eltexPhyTransceiverDiagnosticTable' . PHP_EOL;
|
||||
$snmpData = SnmpQuery::cache()->hideMib()->walk('ELTEX-PHY-MIB::eltexPhyTransceiverDiagnosticTable')->table(3);
|
||||
if (! empty($snmpData)) {
|
||||
foreach ($snmpData as $index => $typeData) {
|
||||
foreach ($typeData as $type => $data) {
|
||||
$eltexPhyTransceiverDiagnosticTable[$type][$index] = array_shift($data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$divisor = 1;
|
||||
$multiplier = 1;
|
||||
if (! empty($eltexPhyTransceiverDiagnosticTable['temperature'])) {
|
||||
foreach ($eltexPhyTransceiverDiagnosticTable['temperature'] as $ifIndex => $data) {
|
||||
$value = $data['eltexPhyTransceiverDiagnosticCurrentValue'] / $divisor;
|
||||
if ($value) {
|
||||
$high_limit = $data['eltexPhyTransceiverDiagnosticHighAlarmThreshold'];
|
||||
$high_warn_limit = $data['eltexPhyTransceiverDiagnosticHighWarningThreshold'];
|
||||
$low_warn_limit = $data['eltexPhyTransceiverDiagnosticLowWarningThreshold'];
|
||||
$low_limit = $data['eltexPhyTransceiverDiagnosticLowAlarmThreshold'];
|
||||
$descr = get_port_by_index_cache($device['device_id'], $ifIndex)['ifName'];
|
||||
$oid = Oid::toNumeric('ELTEX-PHY-MIB::eltexPhyTransceiverDiagnosticCurrentValue.' . $ifIndex . '.1.1');
|
||||
discover_sensor(
|
||||
$valid['sensor'],
|
||||
'temperature',
|
||||
$device,
|
||||
$oid,
|
||||
'SfpTemp' . $ifIndex,
|
||||
'ELTEX-PHY-MIB',
|
||||
$descr,
|
||||
$divisor,
|
||||
$multiplier,
|
||||
$low_limit,
|
||||
$low_warn_limit,
|
||||
$high_warn_limit,
|
||||
$high_limit,
|
||||
$value,
|
||||
'snmp',
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
'Transceiver'
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
71
includes/discovery/sensors/voltage/eltex-mes24xx.inc.php
Normal file
71
includes/discovery/sensors/voltage/eltex-mes24xx.inc.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
/*
|
||||
* LibreNMS discovery module for Eltex-MES24xx SFP Voltage
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package LibreNMS
|
||||
* @link https://www.librenms.org
|
||||
*
|
||||
* @copyright 2024 Peca Nesovanovic
|
||||
* @author Peca Nesovanovic <peca.nesovanovic@sattrakt.com>
|
||||
*/
|
||||
use LibreNMS\Util\Oid;
|
||||
|
||||
echo 'eltexPhyTransceiverDiagnosticTable' . PHP_EOL;
|
||||
$snmpData = SnmpQuery::cache()->hideMib()->walk('ELTEX-PHY-MIB::eltexPhyTransceiverDiagnosticTable')->table(3);
|
||||
if (! empty($snmpData)) {
|
||||
foreach ($snmpData as $index => $typeData) {
|
||||
foreach ($typeData as $type => $data) {
|
||||
$eltexPhyTransceiverDiagnosticTable[$type][$index] = array_shift($data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$divisor = 1;
|
||||
$multiplier = 1;
|
||||
if (! empty($eltexPhyTransceiverDiagnosticTable['supplyVoltage'])) {
|
||||
foreach ($eltexPhyTransceiverDiagnosticTable['supplyVoltage'] as $ifIndex => $data) {
|
||||
$value = $data['eltexPhyTransceiverDiagnosticCurrentValue'] / $divisor;
|
||||
if ($value) {
|
||||
$high_limit = $data['eltexPhyTransceiverDiagnosticHighAlarmThreshold'] / 1000;
|
||||
$high_warn_limit = $data['eltexPhyTransceiverDiagnosticHighWarningThreshold'] / 1000;
|
||||
$low_warn_limit = $data['eltexPhyTransceiverDiagnosticLowWarningThreshold'] / 1000;
|
||||
$low_limit = $data['eltexPhyTransceiverDiagnosticLowAlarmThreshold'] / 1000;
|
||||
$descr = get_port_by_index_cache($device['device_id'], $ifIndex)['ifName'];
|
||||
$oid = Oid::toNumeric('ELTEX-PHY-MIB::eltexPhyTransceiverDiagnosticCurrentValue.' . $ifIndex . '.2.1');
|
||||
discover_sensor(
|
||||
$valid['sensor'],
|
||||
'voltage',
|
||||
$device,
|
||||
$oid,
|
||||
'SfpVolt' . $ifIndex,
|
||||
'ELTEX-PHY-MIB',
|
||||
$descr,
|
||||
$divisor,
|
||||
$multiplier,
|
||||
$low_limit,
|
||||
$low_warn_limit,
|
||||
$high_warn_limit,
|
||||
$high_limit,
|
||||
$value,
|
||||
'snmp',
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
'Transceiver'
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user