WirenBoard 6 + SNMP

  1. Добрый вечер, подскажите как правильно (корректно удалить) “устройства” , каналы MQTT.
    Пробовал удалить устройства с помочью команды
    mqtt-delete-retained ‘/devices/[ИМЯ]/#’
    после удаления сделал перезагрузку устройства каналы вернулись.
  1. Не могу понять почему иногда не читает канал 2.
    Проверял чтение через командную строку
    snmpwalk -On -v2c -c public IP_adress 1.3.6.1.4.1.2021.8.4-номер(snmp)
    данные выводит корректно, в веб интерфейсе ошибка чтения.

“Каналы” - создаются автоматически, естественно, в соответствии с количеством строк, возвращаемым при опросе OID. Если нужно только одно значение - то надо дополнить OID, чтобы именно оно (одно) возвращалось.

А в логах wb-mqtt-snmp в моменты ошибок - что-то записано?

В первом сообщении есть файл в нем только 1 опрос 2 канала. Как мне проверить и почистить ненужные каналы?

{
“device_type”: “Test500ms”,
“community”: “public”,
“channels”: [
{
“name”: “Channel 2”,
“oid”: “.1.3.6.1.4.1.26381.1.2.0”,
“poll_interval”: 500
}
]
}

Что отдает устройство при опросе этого OID?

32 битное отрицательное число. Устройств много 48 в дальнейшем будет 240. Сейчас провожу тестирование на 24 устройствах.

Request ID mismatch - сообщение в логах если не может прочитать устройство. Меня больше смущает что при опросе 24 устройств иногда всё хорошо, иногда ошибка.

Сколько строк, имею в виду. Покажите, что возвращается в ответ на запрос.

wb-mqtt-snmp_20220427T072126 (2).log (740 Байт)
wb-mqtt-snmp.service (2022-04-27T04:21:26.553Z - 2022-04-27T03:34:24.172Z)

2022-04-27T04:21:26.553Z [wb-mqtt-snmp] ERROR: 2022/04/27 04:21:26 failed to poll snmp_IP.IP.IP.IP_public:Channel 2: Error reading from UDP: read udp IP.IP.IP.IP:40897->IP.IP.IP.IP: i/o timeout
2022-04-27T04:21:26.542Z [wb-mqtt-snmp] ERROR: 2022/04/27 04:21:26 failed to poll snmp_IP.IP.IP.IP_public:Channel 2: Error reading from UDP: read udp IP.IP.IP.IP:32997->IP.IP.IP.IP:161: i/o timeout
2022-04-27T04:21:21.547Z [wb-mqtt-snmp] ERROR: 2022/04/27 04:21:21 failed to poll snmp_IP.IP.IP.IP_public:Channel 2: Request ID mismatch

дальше по аналогии с интервалом в 5 секунд

Первые 2 устройства выключены.

Еще раз подниму вопрос по поводу “каналов” я хочу оставить только 2 канал, сейчас у меня их 5.
Настройки файла config-Test500ms.json
{
“device_type”: “Test500ms”,
“community”: “public”,
“channels”: [
{
“name”: “Channel 2”,
“oid”: “.1.3.6.1.4.1.26381.1.2.0”,
“poll_interval”: 500
}
]
}
При опросе через командную сроку
snmpwalk -On -v2c -c public IP_adress .1.3.6.1.4.1.26381.1.2.0
выводит одно 32 битное отрицательное число

В веб интерфейсе выводит 5 каналов.

Воспроизвожу.
Итак - получаю с smpt 10.0.0.75 OID:

snmpwalk -On -v2c -c public 10.0.0.75 1.3.6.1.2.1.1.3.0   
.1.3.6.1.2.1.1.3.0 = Timeticks: (596736) 1:39:27.36

Возвращается одно значение.

При наличии на контроллере такого конфига:

{
    "debug": false,
    "devices": [
        {
            "address": "10.0.0.75",
            "enabled": true,
            "name": "Test",
            "community": "public",
            "snmp_timeout": 5,
            "channels": [
                {
                    "control_type": "text",
                    "enabled": true,
                    "name": "uptimeFromOID",
                    "oid": ".1.3.6.1.2.1.1.3.0",
                    "poll_interval": 4000
                }
            ]
        }
    ]
}

Канал сконфигурирован один, его и вижу:

mosquitto_sub -v -t /devices/snmp_10.0.0.75_public/#
/devices/snmp_10.0.0.75_public/meta/name Test
/devices/snmp_10.0.0.75_public/controls/uptimeFromOID 1h42m13.35s
/devices/snmp_10.0.0.75_public/controls/uptimeFromOID/meta/type text
/devices/snmp_10.0.0.75_public/controls/uptimeFromOID/meta/order 1
/devices/snmp_10.0.0.75_public/controls/uptimeFromOID 1h42m17.36s
/devices/snmp_10.0.0.75_public/controls/uptimeFromOID/meta/error (null)
/devices/snmp_10.0.0.75_public/controls/uptimeFromOID 1h42m21.39s
/devices/snmp_10.0.0.75_public/controls/uptimeFromOID/meta/error (null)

А какой таймаут стоит?
Если его увеличить? Ну и самый простой способ проверки - посмотреть что уходит/возвращается с устроства на порт, просто tcpdump порта.

Покажите лог wb-mqtt-snmp c включенной отладкой. Откуда-то ведь каналы берутся?
Он точно не существуют с прошлых запусков?

Добрый вечер. Проблему удалилось решить после принудительного удаления 24 устройств в веб интерфейсе. Нажал на корзину рядом с крестиком и сделал ребут.
Странно, что каналы не хотели удаляться через командную строку.
Спасибо за уделённое время.
На данный момент тестирую 24 устройства -(работают как им и положено). Надеюсь всё будет отлично.

Подскажите примерный скрипт который будет логировать ответы snmp устройств не на ПЛК WirenBoard а в локальную сеть.

“В сеть” - довольно широкое понятие. Какой протокол?
сразу вижу несколько реализаций, например правило на wb-rules, отправляющее (протокол?) по изменению каналов.
Либо доработать этот: Использование Grafana с контроллером Wiren Board — Wiren Board

Добрый день, провел тестирование работы вычислительных блоков 48 шт. (они отдают информацию по протоколу SNMP) на данном этапе тестирования (24 часа теста) в веб интерфейсе перестали работать 10 вычислительных блоков (ошибка чтения)
Информация при опросе через веб интерфейс, wb-mqtt-snmp

2022-04-27T04:21:21.547Z [wb-mqtt-snmp] ERROR: 2022/04/27 04:21:21 failed to poll snmp_IP.IP.IP.IP_public:Channel 2: Request ID mismatch

Проверял чтение через командную строку
snmpwalk -On -v2c -c public IP_adress 1.3.6.1.4.1.2021.8.4-номер(snmp)
ответ SNMP -1632234568 (всё работает отлично)

После перезагрузки ПЛК WirenBoard 6
в веб интерфейсе - ошибка чтения
через командную стоку - всё ОК

Удалил устройства в веб интерфейсе используя значок корзина, перезагрузил ПЛК работоспособность восстановилась в полном объеме.

Внимание вопрос:

  1. Как протестировать работу SNMP с ПЛК WirenBoard (не могу понять почему в веб интерфейсе показывает ошибку, когда подключаюсь через Putty всё ОК)
  2. Есть возможность сохранить логи за большой интервал времени и проанализировать когда и по какой причине происходит сбой (после удаления устройств, перезагрузки ПЛК работоспособность восстанавливается на какой-то период времени, проверял через 2 часа было всё ОК, через 24 часа “ошибка чтения” 10 блоков из 48.

Логи сервиса - в них что?

Request ID mismatch надо посмотреть.
Как и предлагал выше - надо в момент появления таких ошибок сохранить трафик между контроллером и каким-то из узлов, чтобы увидеть что запрашивается и, что главное, возвращается.

Логи в journald и так хранятся точно больше суток. И да, можно включить debug для wb-mqtt-snmp.
Перезапуск контроллера - не выход, надо причину понять, у меня (уже больше недели) snmp работает без ошибок.

Подскажите какие журналы (пути до журналов, файлы или что-то еще) мне предоставить для анализа данных.

Логи сервиса - в них что? - Извиняюсь за свою некомпетентность в данном вопросе, расскажите более подробно где мне их взять.
И еще это разве не они? Сервис WB-MQTT-SNMP
2022-04-27T04:21:21.547Z [wb-mqtt-snmp] ERROR: 2022/04/27 04:21:21 failed to poll snmp_IP.IP.IP.IP_public:Channel 2: Request ID mismatch

journalctl -u wb-mqtt-snmp

Вообще я кажется воспроизвел такое ж поведение. Отдал разработчиками на исправление.

Подскажите примерные сроки поставленной задачи? День, неделя, месяц.

Думаю, что само исправление займет не более недели. Похоже (это мое некомпетентное мнение) баг в неверной обработке старшего бита номера пакета.