Создать элемент данных для Zabbix через snmp с известным oid
800 руб. за проект
•
электронные деньги
Цель: создание элемента данных под каждое событие.
Мониторим принтеры, элемент 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 зависимых элементов данных, дальше думаю разберусь.
Если знаете как сделать лучше, выслушаю любое предложение.
Мониторим принтеры, элемент 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 зависимых элементов данных, дальше думаю разберусь.
Если знаете как сделать лучше, выслушаю любое предложение.
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.