Понадобилось однажды исследовать SNMP OID и написать шаблон Zabbix для ETP4860-B1A2 (SMU11B).
Пример проверки SNMP OID:
snmpwalk -v2c -c public ixnfo.com OID
В настройках устройства можно скачать Mib File, для этого откроем System Settings — SNMP, Mib File — Export.
После этого будет скачан архив с двумя файлами HUAWEI-MIB.mib и emap_snmp.mib, которые я положил на сервере с Zabbix в директорию /usr/share/snmp/mibs/
Теперь опишу несколько OID которые я транслировал из MIB и которые мне понадобились для мониторинга.
Некоторые OID требуют указания индекса выпрямителя (устройство ETP4860 имеет два слота под выпрямители), индексы выпрямителей у каждого устройства разные, по этому в шаблоне Zabbix я добавил к OID макрос {$ETP4860_INDEX_ixnfo.com} и указал его в каждом узле сети, чтобы шаблон был один для всех, а макрос можно было изменять.
При трансляции MIB в OID, были ошибки в файле MIB, которые мне пришлось исправить и OID успешно начали транслироваться.
Приведу пример OID выпрямителя с индексом (28677), результат множим на 0.1:
snmptranslate -IR -On EMAP-MIB::hwRectOutputVoltage
.1.3.6.1.4.1.2011.6.164.1.3.2.2.1.3
snmpwalk -v2c -c public 10.10.10.5 .1.3.6.1.4.1.2011.6.164.1.3.2.2.1.3
SNMPv2-SMI::enterprises.2011.6.164.1.3.2.2.1.3.28677 = Gauge32: 550
snmptranslate -IR -On EMAP-MIB::hwRectACVoltage
.1.3.6.1.4.1.2011.6.164.1.3.2.2.1.6
snmpwalk -v2c -c public 10.10.10.5 .1.3.6.1.4.1.2011.6.164.1.3.2.2.1.6
SNMPv2-SMI::enterprises.2011.6.164.1.3.2.2.1.6.28677 = Gauge32: 2313
snmptranslate -IR -On EMAP-MIB::hwRectifierTemperature
.1.3.6.1.4.1.2011.6.164.1.3.2.2.1.8
snmpwalk -v2c -c public 10.10.10.5 .1.3.6.1.4.1.2011.6.164.1.3.2.2.1.8
SNMPv2-SMI::enterprises.2011.6.164.1.3.2.2.1.8.28677 = INTEGER: 230
.1.3.6.1.4.1.2011.6.164.1.3.2.2.1.99.X (hwRectOperStatus, normal(1),fault(2),protect(3),commFail(4),switchOff(5),invalid(6),noConfig(7),alarmResume(254),other(255))
Опишу следующие OID, они уже без индекса устройства.
Какие значения указаны для плавающей и быстрой зарядки:
.1.3.6.1.4.1.2011.6.164.1.4.1.8 (hwSetBattsFloatVoltage *0.1)
.1.3.6.1.4.1.2011.6.164.1.4.1.9 (hwSetBattsBoostVoltage *0.1)
Статус заряда, значение обычно 1 float или 2 boost, 3 discharge — не на всех прошивках отображается:
.1.3.6.1.4.1.2011.6.164.1.4.2.3 hwBattsChargeStatus —
floatCharge(1),boostCharge(2),disCharge(3),hibernating(4),offline(7),unknown(255)
Когда нет коммуникации с батареей, позволяет отследить когда включается быстрая зарядка, чтобы точно подстроить правильное напряжение для Lifepo4 аккумулятора, ведь если быстрая зарядка с повышенным напряжением будет включаться при полностью заряженном аккумуляторе, то будет разбаланс напряжения по ячейкам аккумулятора и может отключиться BMS.
Текущий ток зарядки/разрядки батареи:
.1.3.6.1.4.1.2011.6.164.1.4.2.1 (hwBattsTotalCurrent)
Можно сделать Zabbix триггер, например когда работает от батареи > 12 часов (обычно OLT потребляет около 0.5-1.5А, значение будет отрицательным при разрядке):
max(/templateIXNFO.COM/hwBattsTotalCurrent,12h)<0
Сколько емкости батареи в % и в часах осталось и какая емкость (А) указана в настройках:
.1.3.6.1.4.1.2011.6.164.1.4.2.10 hwTotalRemainingCapacityPercent
.1.3.6.1.4.1.2011.6.164.1.4.2.2 (hwBattsPreDischargeTime, Backup Time in hours)
.1.3.6.1.4.1.2011.6.164.1.4.2.8 (hwBattsRatedCapacity)
.1.3.6.1.4.1.2011.6.164.1.4.1.13 (hwSetBattsRatedCapacity)
.1.3.6.1.4.1.2011.6.164.1.4.4.2.1.2.5 (hwBattStringCurrent)
.1.3.6.1.4.1.2011.6.164.1.4.2.9 (hwBattsRemainCapacity, A)
Текущая мощность AC/DC в Ватт:
.1.3.6.1.4.1.2011.6.164.1.3.1.11 (hwRectsTotalACInputPower, in Watt)
.1.3.6.1.4.1.2011.6.164.1.3.1.9 (hwRectsTotalDCPower, in Watt)
.1.3.6.1.4.1.2011.6.164.1.6.1.5.0 (hwDcsTotalPower, in Watt)
Какое напряжение по умолчанию указано для выпрямителя:
.1.3.6.1.4.1.2011.6.164.1.3.1.5 (hwRectsRatedVoltage) 53.5
Какое напряжение поступает на батарею (напряжение будет подниматься по мере заряда батареи до указанного в hwRectOutputVoltage):
.1.3.6.1.4.1.2011.6.164.1.3.1.6 (hwModifyRectsOutputVoltage)
Еще несколько OID:
1.3.6.1.4.1.2011.6.164.1.4.2.4 (hwBattsCurrLimitStatus, 1-not limited, 2-limited or unknown)
1.3.6.1.4.1.2011.6.164.1.6.2.1.1.99 (hwDcOutputOperStatus, normal(1), voltHigh(2), voltLow(3), alarmResume(254), other(255))
1.3.6.1.4.1.2011.6.164.1.3.1.3.0 (hwRectsTotalCurrent)
1.3.6.1.4.1.2011.6.164.1.5.1.3.0 (hwAcsTotalCurrent)
1.3.6.1.4.1.2011.6.164.1.5.2.1.1.99.1 (hwAcInputOperStatus, normal(1), acOff(2), acAbsent(3), voltHigh(4), voltLow(5), alarmResume(254), other(255))
.1.3.6.1.4.1.2011.6.164.1.3.1.10 (hwRectsLoadUsage)
.1.3.6.1.4.1.2011.6.164.1.1.2.99.1.2 (hwActiveAlarmText)
.1.3.6.1.4.1.2011.6.164.1.4.1.12 (hwCtrlBattsBoostFloat) floatCharge(1),boostCharge(2)
.1.3.6.1.4.1.2011.6.164.1.4.1.10 (hwSetBattsCurrLimitCoefficient, *0.01)
Для hwAcInputOperStatus можно сделать триггер когда не равно 1, сообщающий что нет света.
hwRectOperStatus обычно равен 5 когда нет света или поломались выпрямители, можно тоже сделать триггер сообщающий о поломке, связанный с hwAcInputOperStatus чтобы учитывать что есть электричество.
last(/ixnfo.com/hwRectOperStatus)<>1
and
last(/ixnfo.com/hwAcInputOperStatus)=1
Load Current (где предпоследняя цифра 2 это номер emu, результат множим на 0.001):
1.3.6.1.4.1.2011.6.2.1.3.1.10
1.3.6.1.4.1.2011.6.2.1.3.1.10.2.0
Module 0 and Module 1 current (на примере emu id 1, результат множим на 0.001):
1.3.6.1.4.1.2011.6.2.1.5.1.5
1.3.6.1.4.1.2011.6.2.1.5.1.5.1.0.0
1.3.6.1.4.1.2011.6.2.1.5.1.5.1.0.1
Для Huawei ESM-48100B1:
SOC % (*0.1)
.1.3.6.1.4.1.2011.6.164.1.17.1.1.8.96 = Gauge32: 990
Battery Voltage V (*0.1)
.1.3.6.1.4.1.2011.6.164.1.17.1.1.5.96 = Gauge32: 488
Backup Time h (*0.1)
.1.3.6.1.4.1.2011.6.164.1.17.1.1.11.96 = Gauge32: 391
Battery Current A (*0.1)
.1.3.6.1.4.1.2011.6.164.1.17.1.1.6.96
Equalized Charge Voltage (*0.1)
.1.3.6.1.4.1.2011.6.164.1.17.2.1.11.96 = Gauge32: 564
Float Charge Voltage (*0.1)
.1.3.6.1.4.1.2011.6.164.1.17.2.1.12.96 = Gauge32: 545
Charge Current Limit Coefficient (*0.1)
.1.3.6.1.4.1.2011.6.164.1.17.2.1.13.96 = Gauge32: 22
High Temperature Alarm Threshold
.1.3.6.1.4.1.2011.6.164.1.17.2.1.21.96 = Gauge32: 58
Low Temperature Alarm Threshold
.1.3.6.1.4.1.2011.6.164.1.17.2.1.22.96 = INTEGER: 5
TEMPERATURE (*0.1)
.1.3.6.1.4.1.2011.6.164.1.17.1.1.9.96 = INTEGER: 107
CELLS TEMPERATURE (*0.1):
.1.3.6.1.4.1.2011.6.164.1.18.2.1.22.3668 = INTEGER: 110
.1.3.6.1.4.1.2011.6.164.1.18.2.1.23.3668 = INTEGER: 110
.1.3.6.1.4.1.2011.6.164.1.18.2.1.24.3668 = INTEGER: 110
.1.3.6.1.4.1.2011.6.164.1.18.2.1.25.3668 = INTEGER: 100
.1.3.6.1.4.1.2011.6.164.1.18.2.1.26.3668 = INTEGER: 100
.1.3.6.1.4.1.2011.6.164.1.18.2.1.27.3668 = INTEGER: 100
.1.3.6.1.4.1.2011.6.164.1.18.2.1.28.3668 = INTEGER: 100
.1.3.6.1.4.1.2011.6.164.1.18.2.1.29.3668 = INTEGER: 110
.1.3.6.1.4.1.2011.6.164.1.18.2.1.30.3668 = INTEGER: 110
.1.3.6.1.4.1.2011.6.164.1.18.2.1.31.3668 = INTEGER: 110
.1.3.6.1.4.1.2011.6.164.1.18.2.1.32.3668 = INTEGER: 110
.1.3.6.1.4.1.2011.6.164.1.18.2.1.33.3668 = INTEGER: 120
.1.3.6.1.4.1.2011.6.164.1.18.2.1.34.3668 = INTEGER: 120
.1.3.6.1.4.1.2011.6.164.1.18.2.1.35.3668 = INTEGER: 120
.1.3.6.1.4.1.2011.6.164.1.18.2.1.36.3668 = INTEGER: 120
Смотрите также мои статьи:
Как перевести SNMP MIB в OID
