Alcatel-Lucent support part2 (#12369)

* Alcatel-Lucent support part2

* fixing low temp for aos6, mem for aos6 and linkagg for both

* style for aos6.yaml

* style2 for aos6.yaml

* fix style

* fix style

* add test data
This commit is contained in:
paulierco 2021-01-03 19:57:47 +02:00 committed by GitHub
parent 187165e464
commit 95603e494a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 66688 additions and 37 deletions

View File

@ -34,52 +34,69 @@ modules:
entPhysicalIndex_measured: 'ports'
descr: '{{ $ifName }} SFP Temperature'
index: 'ddmTemperature.{{ $index }}'
low_limit: -40.0
high_limit: 85.0
low_limit: ddmTempLowAlarm
low_warn_limit: ddmTempLowWarning
high_limit: ddmTempHiAlarm
warn_limit: ddmTempHiWarning
voltage:
data:
-
oid: ddmSupplyVoltage
oid: ddmInfoEntry
value: ddmSupplyVoltage
num_oid: '.1.3.6.1.4.1.6486.800.1.2.1.5.1.1.2.5.1.6.{{ $index }}'
divisor: 1000
entPhysicalIndex: '{{ $index }}'
entPhysicalIndex_measured: 'ports'
descr: '{{ $ifName }} SFP Voltage'
index: 'ddmSupplyVoltage.{{ $index }}'
low_limit: 3.13
high_limit: 3.47
low_limit: ddmSupplyVoltageLowAlarm
low_warn_limit: ddmSupplyVoltageLowWarning
high_limit: ddmSupplyVoltageHiAlarm
warn_limit: ddmSupplyVoltageHiWarning
current:
data:
-
oid: ddmTxBiasCurrent
oid: ddmInfoEntry
value: ddmTxBiasCurrent
num_oid: '.1.3.6.1.4.1.6486.800.1.2.1.5.1.1.2.5.1.11.{{ $index }}'
divisor: 1000
entPhysicalIndex: '{{ $index }}'
entPhysicalIndex_measured: 'ports'
descr: '{{ $ifName }} Tx Bias'
index: 'ddmTxBiasCurrent.{{ $index }}'
low_limit: ddmTxBiasCurrentLowAlarm
low_warn_limit: ddmTxBiasCurrentLowWarning
high_limit: ddmTxBiasCurrentHiAlarm
warn_limit: ddmTxBiasCurrentHiWarning
dbm:
data:
-
oid: ddmRxOpticalPower
oid: ddmInfoEntry
value: ddmRxOpticalPower
num_oid: '.1.3.6.1.4.1.6486.800.1.2.1.5.1.1.2.5.1.21.{{ $index }}'
divisor: 1000
entPhysicalIndex: '{{ $index }}'
entPhysicalIndex_measured: 'ports'
descr: '{{ $ifName }} Rx Power'
index: 'ddmRxOpticalPower.{{ $index }}'
low_limit: -21.0
high_limit: -3.0
low_limit: ddmRxOpticalPowerLowAlarm
low_warn_limit: ddmRxOpticalPowerLowWarning
high_limit: ddmRxOpticalPowerHiAlarm
warn_limit: ddmRxOpticalPowerHiWarning
-
oid: ddmTxOutputPower
oid: ddmInfoEntry
value: ddmTxOutputPower
num_oid: '.1.3.6.1.4.1.6486.800.1.2.1.5.1.1.2.5.1.16.{{ $index }}'
divisor: 1000
entPhysicalIndex: '{{ $index }}'
entPhysicalIndex_measured: 'ports'
descr: '{{ $ifName }} Tx Power'
index: 'ddmTxOutputPower.{{ $index }}'
low_limit: -9.0
high_limit: -3.0
low_limit: ddmTxOutputPowerLowAlarm
low_warn_limit: ddmTxOutputPowerLowWarning
high_limit: ddmTxOutputPowerHiAlarm
warn_limit: ddmTxOutputPowerHiWarning

View File

@ -9,7 +9,8 @@ foreach (explode("\n", $data) as $entry) {
$oid = trim($oid);
$value = trim($value, "\" \\\n\r");
[$revindex, $revchass, $revdata,] = explode('.', strrev($oid), 4);
if (! strstr($value, 'at this OID') && ! empty($oid)) {
//we don't care if the value is 0, the other fan status sensor will tell us if the fan is broken
if (! strstr($value, 'at this OID') && ! empty($oid) && $value > 0) {
$chassis = strrev($revchass);
$index = strrev($revindex);
$data = strrev($revdata);
@ -24,8 +25,10 @@ foreach ($rpm as $chassis => $entry) {
$chas_descr = (string) snmp_get($device, $descr_oid, '-Oqv');
$descr = 'CHASSIS-' . substr($chas_descr, 0, strpos($chas_descr, '/')) . " Fan $index";
$value = $data[4];
$low_limit = '1000'; //guessing to ignore any alarm
$high_limit = '15000'; //guessing to ignore any alarm
$id = "$chassis.$index";
$oid = "$rpm_oid.4.$chassis.$index";
discover_sensor($valid['sensor'], 'fanspeed', $device, $oid, $id, 'alcatel-lucent', $descr, '1', '1', null, null, null, null, $value, 'snmp');
discover_sensor($valid['sensor'], 'fanspeed', $device, $oid, $id, 'alcatel-lucent', $descr, '1', '1', $low_limit, null, null, $high_limit, $value);
}
}

View File

@ -15,3 +15,12 @@ $pre_cache['aos6_fan_oids'] = snmpwalk_cache_multi_oid($device, 'alaChasEntPhysF
echo 'chasChassisEntry';
$pre_cache['aos6_temp_oids'] = snmpwalk_cache_multi_oid($device, 'chasChassisEntry', [], 'ALCATEL-IND1-CHASSIS-MIB', 'aos6', '-OQUse');
echo 'alaStackMgrChassisTable';
$pre_cache['aos6_stack_oids'] = snmpwalk_cache_multi_oid($device, 'alaStackMgrChassisTable', [], 'ALCATEL-IND1-STACK-MANAGER-MIB', 'aos6', '-OQUse');
echo 'chasControlCertifyStatus';
$pre_cache['aos6_sync_oids'] = snmpwalk_cache_multi_oid($device, 'chasControlCertifyStatus', [], 'ALCATEL-IND1-CHASSIS-MIB', 'aos6', '-OQUse');
echo 'alclnkaggAggEntry';
$pre_cache['aos6_lag_oids'] = snmpwalk_cache_multi_oid($device, 'alclnkaggAggEntry', [], 'ALCATEL-IND1-LAG-MIB', 'aos6', '-OQUse');

View File

@ -21,3 +21,15 @@ $pre_cache['aos7_chas_oids'] = snmpwalk_cache_multi_oid($device, 'chasEntPhysOpe
echo 'entPhysicalName';
$pre_cache['aos7_phys_oids'] = snmpwalk_cache_multi_oid($device, 'entPhysicalName', [], 'ALCATEL-IND1-HEALTH-MIB', 'aos7', '-OQUse');
echo 'virtualChassisVflTable';
$pre_cache['aos7_vcstack_oids'] = snmpwalk_cache_multi_oid($device, 'virtualChassisVflMemberPortOperStatus', [], 'ALCATEL-IND1-VIRTUAL-CHASSIS-MIB', 'aos7', '-OQUse');
echo 'VirtualChassisStatus';
$pre_cache['aos7_vcstatus_oids'] = snmpwalk_cache_multi_oid($device, 'VirtualChassisStatus', [], 'ALCATEL-IND1-VIRTUAL-CHASSIS-MIB', 'aos7', '-OQUse');
echo 'ChasControlModuleEntry';
$pre_cache['aos7_sync_oids'] = snmpwalk_cache_multi_oid($device, 'ChasControlModuleEntry', [], 'ALCATEL-IND1-CHASSIS-MIB', 'aos7', '-OQUse');
echo 'alclnkaggAggEntry';
$pre_cache['aos7_lag_oids'] = snmpwalk_cache_multi_oid($device, 'alclnkaggAggEntry', [], 'ALCATEL-IND1-LAG-MIB', 'aos7', '-OQUse');

View File

@ -1,6 +1,13 @@
<?php
$chas_oid = '.1.3.6.1.4.1.6486.800.1.1.1.1.1.1.1.2.'; // chasEntPhysOperStatus
$stack_left = snmp_walk($device, 'chasFreeSlots', '-OQUse', 'ALCATEL-IND1-CHASSIS-MIB', 'nokia');
$stack_role = snmp_walk($device, 'alaStackMgrChasRole', '-OQUse', 'ALCATEL-IND1-STACK-MANAGER-MIB', 'nokia');
$stack_alone = substr($stack_role, strpos($stack_role, '=') + 1);
$stack_left = substr($stack_left, strpos($stack_left, '=') + 1);
$true_stacking = (7 - $stack_left);
$stacking = '7';
$stacking_non = '4';
$oids = snmp_walk($device, 'chasEntPhysOperStatus', '-OQUse', 'ALCATEL-IND1-CHASSIS-MIB', 'nokia');
foreach (explode("\n", $oids) as $chas_entry) {
preg_match('/chasEntPhysOperStatus.(.) = (.+)/', $chas_entry, $data2); // entPhysicalName.284 = "5/PS-2"
@ -55,3 +62,116 @@ foreach ($pre_cache['aos6_fan_oids'] as $index => $data) {
}
}
}
unset(
$index,
$data,
$descr
);
if (($stack_left < $stacking) && ($stack_alone < $stacking_non)) {
foreach ($pre_cache['aos6_stack_oids'] as $stackindexa => $stack_data_a) {
if (is_array($stack_data_a)) {
$oid_stackport_a = '.1.3.6.1.4.1.6486.800.1.2.1.24.1.1.1.1.4.' . $stackindexa;
$current_stacka = $stack_data_a['alaStackMgrLocalLinkStateA'];
$stack_state_namea = 'alaStackMgrLocalLinkStateA';
$descr_stacka = 'Stack Port A Chassis-' . "$stackindexa";
$states_stacka = [
['value' => 1, 'generic' => 0, 'graph' => 1, 'descr' => 'Connected'],
['value' => 2, 'generic' => 2, 'graph' => 1, 'descr' => 'Disconnected'],
];
create_state_index($stack_state_namea, $states_stacka);
discover_sensor($valid['sensor'], 'state', $device, $oid_stackport_a, $stackindexa, $stack_state_namea, $descr_stacka, 1, 1, null, null, null, null, $current_stacka);
create_sensor_to_state_index($device, $stack_state_namea, $stackindexa);
}
}
}
if (($stack_left < $stacking) && ($stack_alone < $stacking_non)) {
foreach ($pre_cache['aos6_stack_oids'] as $stackindexb => $stack_data_b) {
if (is_array($stack_data_b)) {
$oid_stackport_b = '.1.3.6.1.4.1.6486.800.1.2.1.24.1.1.1.1.7.' . $stackindexb;
$current_stackb = $stack_data_b['alaStackMgrLocalLinkStateB'];
$stack_state_nameb = 'alaStackMgrLocalLinkStateB';
$descr_stackb = 'Stack Port B Chassis-' . "$stackindexb";
$states_stackb = [
['value' => 1, 'generic' => 0, 'graph' => 1, 'descr' => 'Connected'],
['value' => 2, 'generic' => 2, 'graph' => 1, 'descr' => 'Disconnected'],
];
create_state_index($stack_state_nameb, $states_stackb);
discover_sensor($valid['sensor'], 'state', $device, $oid_stackport_b, $stackindexb, $stack_state_nameb, $descr_stackb, 1, 1, null, null, null, null, $current_stackb);
create_sensor_to_state_index($device, $stack_state_nameb, $stackindexb);
}
}
}
foreach ($pre_cache['aos6_sync_oids'] as $index => $data) {
if (is_array($data)) {
$sync_chas_oid = '.1.3.6.1.4.1.6486.800.1.1.1.3.1.1.1.1.5.65';
$sync_state = 'chasControlCertifyStatus';
$sync_value = 'chasControlCertifyStatus.1';
$descr_sync = 'Certify/Restore Status';
$sync_chas_states = [
['value' => 1, 'generic' => 2, 'graph' => 1, 'descr' => 'Unknown'],
['value' => 2, 'generic' => 1, 'graph' => 1, 'descr' => 'Need Certify'],
['value' => 3, 'generic' => 0, 'graph' => 1, 'descr' => 'Certified'],
];
create_state_index($sync_state, $sync_chas_states);
discover_sensor($valid['sensor'], 'state', $device, $sync_chas_oid, 1, $sync_state, $descr_sync, 1, 1, null, null, null, null, $sync_value);
create_sensor_to_state_index($device, $sync_state, 1);
}
}
unset(
$sync_chas_oid,
$sync_state,
$sync_value,
$descr_sync,
$sync_chas_states,
$data,
$index
);
foreach ($pre_cache['aos6_sync_oids'] as $index => $data) {
if (is_array($data)) {
$sync_chas_oid = '.1.3.6.1.4.1.6486.800.1.1.1.3.1.1.1.1.6.65';
$sync_state = 'chasControlSynchronizationStatus';
$sync_value = 'chasControlSynchronizationStatus.1';
$descr_sync = 'Flash Between CMMs';
$sync_chas_states = [
['value' => 1, 'generic' => 2, 'graph' => 1, 'descr' => 'Unknown'],
['value' => 2, 'generic' => 1, 'graph' => 1, 'descr' => 'Mono Control Module'],
['value' => 3, 'generic' => 1, 'graph' => 1, 'descr' => 'Not Synchronized'],
['value' => 4, 'generic' => 0, 'graph' => 1, 'descr' => 'Synchronized'],
];
create_state_index($sync_state, $sync_chas_states);
discover_sensor($valid['sensor'], 'state', $device, $sync_chas_oid, 1, $sync_state, $descr_sync, 1, 1, null, null, null, null, $sync_value);
create_sensor_to_state_index($device, $sync_state, 1);
}
}
$type = 'alclnkaggAggNbrAttachedPorts';
foreach ($pre_cache['aos6_lag_oids'] as $index => $entry) {
$oid_size = $entry['alclnkaggAggSize'];
$oid_mem = $entry['alclnkaggAggNbrAttachedPorts'];
$lag_state = '.1.3.6.1.4.1.6486.800.1.2.1.13.1.1.1.1.1.19.' . $index;
// $oid_state = "alclnkaggAggNbrAttachedPorts.$index";
$lag_number = $entry['alclnkaggAggNumber'];
if (! empty($oid_mem)) {
if ($oid_size == $oid_mem) {
$current = 1;
}
if ($oid_size > $oid_mem) {
$current = 2;
}
}
$descr_lag = 'LACP Number ' . $lag_number;
$lag_states = [
['value' => 1, 'generic' => 0, 'graph' => 1, 'descr' => 'Redundant'],
['value' => 2, 'generic' => 1, 'graph' => 1, 'descr' => 'Not Redundant'],
];
if (! empty($oid_mem)) {
create_state_index($type, $lag_states);
discover_sensor($valid['sensor'], 'state', $device, $lag_state, $index, $type, $descr_lag, 1, 1, null, null, null, null, $current);
create_sensor_to_state_index($device, $type, $index);
}
}

View File

@ -56,3 +56,161 @@ foreach (explode("\n", $oids) as $chas_entry) {
create_sensor_to_state_index($device, $chas_state_name, $number);
}
}
unset(
$index,
$data,
$descr,
$states,
$current
);
$vc_current = [];
foreach ($pre_cache['aos7_vcstack_oids'] as $index => $data) {
if (is_array($data)) {
$oid = ".1.3.6.1.4.1.6486.801.1.2.1.69.1.1.7.1.3.$index";
$index = preg_match('/^(.*)[.]([^.]+)$/', $index, $data2);
if (! empty($data2)) {
$number = $data2[1];
$index = $data2[2];
$state_name_vc = 'virtualChassisVflMemberPortOperStatus';
$vc_current = "virtualChassisVflMemberPortOperStatus.$number";
$entPhysicalIndex = $index;
$entPhysicalIndex_measured = 'ports';
$port_descr = get_port_by_index_cache($device['device_id'], $index);
$descr = 'Virtual-Chassis Port ' . $port_descr['ifName'];
$states = [
['value' => 0, 'generic' => 1, 'graph' => 1, 'descr' => 'Disabled'],
['value' => 2, 'generic' => 2, 'graph' => 1, 'descr' => 'Down'],
['value' => 1, 'generic' => 0, 'graph' => 1, 'descr' => 'Up'],
];
create_state_index($state_name_vc, $states);
discover_sensor($valid['sensor'], 'state', $device, $oid, $index, $state_name_vc, $descr, 1, 1, null, null, null, null, $vc_current, 'snmp', $entPhysicalIndex, $entPhysicalIndex_measured);
create_sensor_to_state_index($device, $state_name_vc, $index);
}
}
}
unset(
$index,
$data,
$descr,
$states,
$current
);
foreach ($pre_cache['aos7_vcstatus_oids'] as $index => $data) {
if (is_array($data)) {
$vc_chas_oid = '.1.3.6.1.4.1.6486.801.1.2.1.69.1.1.2.1.5.' . $index;
$vc_state = 'virtualChassisStatus';
$vc_value = "virtualChassisStatus.$index";
$descr_vc = 'Virtual-Chassis Unit ' . $index;
$vc_chas_states = [
['value' => 0, 'generic' => 0, 'graph' => 1, 'descr' => 'Init'],
['value' => 1, 'generic' => 0, 'graph' => 1, 'descr' => 'Running'],
['value' => 2, 'generic' => 2, 'graph' => 1, 'descr' => 'Invalid Chassis Id'],
['value' => 3, 'generic' => 2, 'graph' => 1, 'descr' => 'Hello Down'],
['value' => 4, 'generic' => 2, 'graph' => 1, 'descr' => 'Duplicate Chassis Id'],
['value' => 5, 'generic' => 2, 'graph' => 1, 'descr' => 'Mismatch Image'],
['value' => 6, 'generic' => 2, 'graph' => 1, 'descr' => 'Mismatch Chassis Type'],
['value' => 7, 'generic' => 2, 'graph' => 1, 'descr' => 'Mismatch Hello Interval'],
['value' => 8, 'generic' => 2, 'graph' => 1, 'descr' => 'Mismatch Control Vlan'],
['value' => 9, 'generic' => 2, 'graph' => 1, 'descr' => 'Mismatch Group'],
['value' => 10, 'generic' => 2, 'graph' => 1, 'descr' => 'Mismatch License Config'],
['value' => 11, 'generic' => 2, 'graph' => 1, 'descr' => 'Invalid License'],
['value' => 12, 'generic' => 2, 'graph' => 1, 'descr' => 'Split Topology'],
['value' => 13, 'generic' => 2, 'graph' => 1, 'descr' => 'Command Shutdown'],
['value' => 14, 'generic' => 2, 'graph' => 1, 'descr' => 'Failure Shutdown'],
];
create_state_index($vc_state, $vc_chas_states);
discover_sensor($valid['sensor'], 'state', $device, $vc_chas_oid, $index, $vc_state, $descr_vc, 1, 1, null, null, null, null, $vc_value);
create_sensor_to_state_index($device, $vc_state, $index);
}
}
unset(
$index,
$data,
$descr,
$states,
$current
);
foreach ($pre_cache['aos7_sync_oids'] as $index => $data) {
if (is_array($data)) {
$sync_chas_oid = '.1.3.6.1.4.1.6486.801.1.1.1.3.1.1.1.1.4.' . $index;
$sync_state = 'chasControlCertifyStatus';
$sync_value = 'chasControlCertifyStatus.1';
$descr_sync = 'Certify/Restore Status';
$sync_chas_states = [
['value' => 1, 'generic' => 2, 'graph' => 1, 'descr' => 'Unknown'],
['value' => 2, 'generic' => 1, 'graph' => 1, 'descr' => 'Need Certify'],
['value' => 3, 'generic' => 0, 'graph' => 1, 'descr' => 'Certified'],
];
create_state_index($sync_state, $sync_chas_states);
discover_sensor($valid['sensor'], 'state', $device, $sync_chas_oid, 1, $sync_state, $descr_sync, 1, 1, null, null, null, null, $sync_value);
create_sensor_to_state_index($device, $sync_state, 1);
}
}
unset(
$sync_chas_oid,
$sync_state,
$sync_value,
$descr_sync,
$sync_chas_states,
$data,
$index
);
foreach ($pre_cache['aos7_sync_oids'] as $index => $data) {
if (is_array($data)) {
$sync_chas_oid = '.1.3.6.1.4.1.6486.801.1.1.1.3.1.1.1.1.5.' . $index;
$sync_state = 'chasControlSynchronizationStatus';
$sync_value = 'chasControlSynchronizationStatus.1';
$descr_sync = 'Flash Between CMMs';
$sync_chas_states = [
['value' => 1, 'generic' => 2, 'graph' => 1, 'descr' => 'Unknown'],
['value' => 2, 'generic' => 1, 'graph' => 1, 'descr' => 'Mono Control Module'],
['value' => 3, 'generic' => 1, 'graph' => 1, 'descr' => 'Not Synchronized'],
['value' => 4, 'generic' => 0, 'graph' => 1, 'descr' => 'Synchronized'],
];
create_state_index($sync_state, $sync_chas_states);
discover_sensor($valid['sensor'], 'state', $device, $sync_chas_oid, 1, $sync_state, $descr_sync, 1, 1, null, null, null, null, $sync_value);
create_sensor_to_state_index($device, $sync_state, 1);
}
}
unset(
$sync_chas_oid,
$sync_state,
$sync_value,
$descr_sync,
$sync_chas_states,
$data,
$index
);
$type = 'alclnkaggAggNbrAttachedPorts';
foreach ($pre_cache['aos7_lag_oids'] as $index => $entry) {
$oid_size = $entry['alclnkaggAggSize'];
$oid_mem = $entry['alclnkaggAggNbrAttachedPorts'];
$lag_state = '.1.3.6.1.4.1.6486.801.1.2.1.13.1.1.1.1.1.19.' . $index;
// $oid_state = "alclnkaggAggNbrAttachedPorts.$index";
$lag_number = $entry['alclnkaggAggNumber'];
if (! empty($oid_mem)) {
if ($oid_size == $oid_mem) {
$current = 1;
}
if ($oid_size > $oid_mem) {
$current = 2;
}
}
$descr_lag = 'LACP Number ' . $lag_number;
$lag_states = [
['value' => 1, 'generic' => 0, 'graph' => 1, 'descr' => 'Redundant'],
['value' => 2, 'generic' => 1, 'graph' => 1, 'descr' => 'Not Redundant'],
];
if (! empty($oid_mem)) {
create_state_index($type, $lag_states);
discover_sensor($valid['sensor'], 'state', $device, $lag_state, $index, $type, $descr_lag, 1, 1, null, null, null, null, $current);
create_sensor_to_state_index($device, $type, $index);
}
}

View File

@ -6,6 +6,8 @@ foreach ($pre_cache['aos6_temp_oids'] as $index => $entry) {
$value = $entry['chasHardwareBoardTemp'];
$limit = $entry['chasDangerTempThreshold'];
$warn_limit = $entry['chasTempThreshold'];
$limit_low = '0'; //from documentation
$warn_limit_low = '5';
$descr = 'Chassis-' . ($index - 568) . ' Temperature';
discover_sensor($valid['sensor'], 'temperature', $device, $oid, $index, 'aos6', $descr, 1, 1, $limit_low, $warn_limit_low, $warn_limit, $limit, $value, 'snmp');

View File

@ -0,0 +1,9 @@
<?php
if (($device['os'] == 'aos6') && ($sensor['sensor_type'] === 'alclnkaggAggNbrAttachedPorts')) {
if (($sensor_value == 2) || ($sensor_value == 4) || ($sensor_value == 6) || ($sensor_value == 8)) {
$sensor_value = 1;
} else {
$sensor_value = 2;
}
}

View File

@ -0,0 +1,9 @@
<?php
if (($device['os'] == 'aos7') && ($sensor['sensor_type'] === 'alclnkaggAggNbrAttachedPorts')) {
if (($sensor_value == 2) || ($sensor_value == 4) || ($sensor_value == 6) || ($sensor_value == 8)) {
$sensor_value = 1;
} else {
$sensor_value = 2;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff