Создать элемент данных для Zabbix через snmp с известным oid

800 руб. за проект • электронные деньги
26 июля 2018, 12:31 • 5 откликов • 45 просмотров
Цель: создание элемента данных под каждое событие.

Мониторим принтеры, элемент hrPrinterDetectedErrorStateинтересует oid: 1.3.6.1.2.1.25.3.5.1.2.1 выдаёт octet string (hex string). Оказывается, это 16-е счисление записанное в string.


Вид в octet scring (hex string)
lowPaper = 0x8000
noPaper = 0x4000
lowToner = 0x2000
noToner = 0x1000
doorOpen = 0x0800
jammed = 0x0400
Offline = 0x0200
serviceRequested = 0x0100

inputTrayMissing = 0x0080
outputTrayMissing = 0x0040
markerSupplyMissing = 0x0020
outputNearFull = 0x0010
outputFull = 0x0008
inputTrayEmpty = 0x0004
overduePreventMaint = 0x0002
notUsed = 0x0001

(hrPrinterDetectedErrorState): octet string of
length 2 (2 bytes); if bits below are set, corresponding error condition is in effect:
https://iphostmonitor.com/monitoring-toner-level-in-snmp-capable-hp-printer.html
lowPaper 0
noPaper 1
lowToner 2
noToner 3
doorOpen 4
jammed 5
offline 6
serviceRequested 7
inputTrayMissing 8
outputTrayMissing 9
markerSupplyMissing 10
outputNearFull 11
outputFull 12
inputTrayEmpty 13
overduePreventMaint 14

Как оказалась принтеры могут выдавать как 1 цифру (hp476c), так и 8 (HP T7100). Оба значения далеки от стандарта rfc. Адекватно отработали только аппараты Xerox и то не все.

Поиск решения данной задачи привёл меня к следующим выводам (возможно, я ошибаюсь):
- необходимо получать данные скриптом bash через утилиту snmpget
пример: (snmpget -v 2c -c public PrinterName 1.3.6.1.2.1.25.3.5.1.2.1)
- сконвертировать в двоичное данные (пример решения: https://www.linux.org.ru/forum/general/10608304)
- преобразовать в формат json, по значениям таблицы (не разобрался, возможно ли такое)
- из zabbix получать json и через зависимый элемент данных допарсить json под нужное событие элемента данных. Достаточно будет 1 скрипта и 1 элемента данных получающий от скрипта данные, 14 зависимых элементов данных, дальше думаю разберусь.

Если знаете как сделать лучше, выслушаю любое предложение.