Проблемы с wb-mqtt-snmp - Unable to parse OID:... value out of range


#1

Добрый день
Пытаюсь добавить устройство по протоколу SNMP.
Результат - не могу получить информацию по каналам с определенным OID.
Включил режим отладки и перезапустил wb-mqtt-snmp
root@wirenboard-AOWCONDB:~# wb-mqtt-snmp restart
Парсер ругается но OIDы c длиными значениями:

2019/02/11 15:09:12 command to run: snmptranslate []string{".1.3.6.1.2.1.1.5.0", “.1.3.6.1.2.1.1.1.0”, “.1.3.6.1.4.1.40418.2.6.1.30.1.1.3.2181170026”, “.1.3.6.1.4.1.40418.2.6.1.30.1.1.4.2181170026”, “.1.3.6.1.4.1.40418.2.6.1.30.1.1.6.2181170026”} -On
DEBUG: 2019/02/11 15:09:12 driver: new local device: ERD4
DEBUG: 2019/02/11 15:09:12 PUB: /devices/ERD4/meta/name -> ERD4
DEBUG: 2019/02/11 15:09:12 Work in process
INFO: 2019/02/11 15:09:12 MQTT connection established
DEBUG: 2019/02/11 15:09:12 [POLLTIMEREVENT] Run at 2019-02-11 15:09:12.477717103 +0500 +05 m=+0.101246140
DEBUG: 2019/02/11 15:09:12 [poller 3] Receive request .1.3.6.1.2.1.1.1.0
DEBUG: 2019/02/11 15:09:12 [poller 0] Receive request .1.3.6.1.4.1.40418.2.6.1.30.1.1.4.2181170026
DEBUG: 2019/02/11 15:09:12 failed to poll ERD4:Humidity: Unable to parse OID: strconv.Atoi: parsing “2181170026”: value out of range
DEBUG: 2019/02/11 15:09:12 [poller 0] Receive request .1.3.6.1.4.1.40418.2.6.1.30.1.1.3.2181170026
DEBUG: 2019/02/11 15:09:12 failed to poll ERD4:Internal temperature-1: Unable to parse OID: strconv.Atoi: parsing “2181170026”: value out of range
DEBUG: 2019/02/11 15:09:12 [poller 0] Receive request .1.3.6.1.4.1.40418.2.6.1.30.1.1.3.2181170026
DEBUG: 2019/02/11 15:09:12 failed to poll ERD4:Internal temperature-2: Unable to parse OID: strconv.Atoi: parsing “2181170026”: value out of range
DEBUG: 2019/02/11 15:09:12 [poller 1] Receive request .1.3.6.1.4.1.40418.2.6.1.30.1.1.6.2181170026
DEBUG: 2019/02/11 15:09:12 failed to poll ERD4:Presure: Unable to parse OID: strconv.Atoi: parsing “2181170026”: value out of range
DEBUG: 2019/02/11 15:09:12 [poller 2] Receive request .1.3.6.1.2.1.1.5.0

Как это обойти?
PS - snmpget эти-же OIDы принимает.


#2

Там все плохо с этим пакетом - он использует старую библиотеку, которая еще и кучу типов не поддерживает. Я помучился и забил, в итоге - вытаскиваю данные через snmpwalk по крону.


#3

А можно на ваш MIB-файл взглянуть?


#4

Там ошибка даже не в пакете, судя по всему, это утилите snmptranslate не нравится что-то в мибе.


#5

MIB файл я не устанавливал - использую цифровые OIDы:

Привожу свой шаблонconfig-erd4-snmp.json (1,2 КБ)


#6

вытаскиваю данные через snmpwalk по крону.

А далее через виртуальное устройство?


#7

Ага. Вот правило:

Вот скрипт:


#8

А давно софт обновляли? У меня таких ошибок нет с вашим темплейтом.
Что говорит команда snmptranslate -V
Текущая версия NET-SNMP version: 5.7.3


#9

Контроллер собран 29.01.2019, HW Revision 6.5

root@wirenboard-AOWCONDB:~# snmptranslate -V
NET-SNMP version: 5.7.3

Попробовал сделать apt-get update; apt-get upgrade; reboot
Не помогло - каналы с результатами датчиков не появились, парсер ругается на value out of range:

Feb 11 14:05:02 wirenboard-AOWCONDB user.notice mqtt_snmp: DEBUG: 2019/02/11 14:05:02 [poller 2] Receive request .1.3.6.1.4.1.40418.2.6.1.30.1.1.3.2181170026
Feb 11 14:05:02 wirenboard-AOWCONDB user.notice mqtt_snmp: DEBUG: 2019/02/11 14:05:02 failed to poll snmp_192.168.165.21_public:Presure: Unable to parse OID: strconv.Atoi: parsing “2181170026”: value out of range
Feb 11 14:05:02 wirenboard-AOWCONDB user.notice mqtt_snmp: DEBUG: 2019/02/11 14:05:02 failed to poll snmp_192.168.165.21_public:Internal temperature-2: Unable to parse OID: strconv.Atoi: parsing “2181170026”: value out of range


#10

Вот правило:

Спасибо
Возьму на вооружение


#11

Да, воспроизвел и у себя эту ошибку, спасибо. Попробуем разобраться.


#12

Если будете разбираться, может поменяете уж заодно alouca/gosnmp на что-то поновее. Текущая версия не обновлялась уже 2 года, и там нет поддержки Opaque типов (и еще вроде каких-то).


#13

Обнаружилась еще одна проблемка:
smnp драйвер не загружается при старте системы.
Вернее он загружается, пытается запросить данные с какого либо smnp-хоста, обнаруживает что сеть отсутствует и отваливается.
В журнале оставляет следующее сообщение:

Feb 17 15:22:00 wirenboard-AOWCONDB user.notice mqtt_snmp: ERROR: 2019/02/17 15:22:00 can’t create SNMP device: Error establishing connection to host: dial udp 89.250.233.131:161: connect: network is unreachable

Ситуацию удалось поправить, добавив в инит скрипт костыль в виде задержки на 20 сек.
По всей видимости, из за асинхронности sistemd сервис wb-mqtt-snmp стартует раньше, чем загружаются сетевые сервисы.

И еще:
В случае,если запрашиваемый snmp host выключен или не отвечает - это ни как не отражается в статусе устройства. Таким образом, smnp-устройство давным-давно пропало со связи, а мы успешно продолжаем получать через mqtt устаревшие значения, не подозревая о проблемах со связью.

Что, кстати, с моим предыдущим вопросом?
Будете ли разбираться?
Стоит ли мне чего то ждать и принимать участие в тестировании или лучше решать задачу иными методами?


#14

vugluskr, добрый день!
Неприятная проблема, попробую воспроизвести включу тогда в список багов.
Вопрос с неверной трансляцией OIDов тоже рассматривается, но не уверен, что мы сможем его быстро решить.
Сообщу здесь, как будет выработано решение или найдена возможность обхода проблемы.