Не доступен mosquitto.sock

Добрый день!

Наблюдаю на контроллере высокую загрузку RAM и периодически не работающий mosquitto.
Процесс mosquitto висит, но mosquitto.sock недоступен. Подскажите, куда копать?

приложен диагностический архив, доступен только сотрудникам поддержки
(120,6 КБ)

Например лог wb-rules:

Jul 10 10:31:00 IQ458000 systemd[1]: Started MQTT Rule engine for Wiren Board.
Jul 10 10:31:00 IQ458000 wb-rules[5711]: INFO: broker URL is default and mosquitto socket detected, trying to connect via it
Jul 10 10:31:00 IQ458000 wb-rules[5711]: INFO: driver is created
Jul 10 10:31:00 IQ458000 wb-rules[5711]: panic: network Error : dial unix /var/run/mosquitto/mosquitto.sock: connect: resource temporarily unavailable
Jul 10 10:31:00 IQ458000 wb-rules[5711]: goroutine 1 [running]:
Jul 10 10:31:00 IQ458000 wb-rules[5711]: github.com/wirenboard/wbgo-private.(*PahoMQTTClient).Start(0x20e4200)
Jul 10 10:31:00 IQ458000 wb-rules[5711]:         github.com/wirenboard/wbgo-private/mqtt.go:207 +0x194
Jul 10 10:31:00 IQ458000 wb-rules[5711]: github.com/wirenboard/wbgo-private.(*DriverMQTTBackend).Start(0x20a8cc0, 0x946271e8, 0x2071a70)
Jul 10 10:31:00 IQ458000 wb-rules[5711]:         github.com/wirenboard/wbgo-private/driver_backend.go:1611 +0xa4
Jul 10 10:31:00 IQ458000 wb-rules[5711]: github.com/wirenboard/wbgo-private.(*driverBase).StartLoop(0x2071a70, 0x20cbf4c, 0x1)
Jul 10 10:31:00 IQ458000 wb-rules[5711]:         github.com/wirenboard/wbgo-private/driver_frontend.go:737 +0xa8
Jul 10 10:31:00 IQ458000 wb-rules[5711]: main.main()
Jul 10 10:31:00 IQ458000 wb-rules[5711]:         github.com/wirenboard/wb-rules/main.go:147 +0x84c
Jul 10 10:31:00 IQ458000 systemd[1]: wb-rules.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Jul 10 10:31:00 IQ458000 systemd[1]: wb-rules.service: Failed with result 'exit-code'.
Jul 10 10:31:01 IQ458000 systemd[1]: wb-rules.service: Scheduled restart job, restart counter is at 4.
Jul 10 10:31:01 IQ458000 systemd[1]: Stopped MQTT Rule engine for Wiren Board.

Добрый день.
Из интересного - в момент создания архива брокер потреблял 43% CPU.
Ну и подписка на $SYS - не прошла по таймауту.

[WARNING] Command mqtt-get-dump "\$SYS/#" didn't finish in 10s

То есть фактически не отвечал.

Логи самого брокера (да и всех сервисов) не выгрузились.
Вот что интересно - зачем в конфигурации моста все топики указаны два раза.
То есть по факту моста два и они не отличаются.

Один мост не активен, второй активен. Там разные домены и ключи. У нас переезд. Но такого поведения больше не замечено ни на одном контроллере.

А

mosquitto_sub -v -t '$SYS/#'

Что-то возвращает?

В момент когда mosquitto завис - не подлючается.

Я как раз настроил monit на это дело:

cat /etc/monit/conf-available/mosquitto
check program mosquitto_sub with path "/usr/bin/mosquitto_sub -t /devices/# -C 10 -v"
if status != 0 for 3 cycles then exec "/bin/systemctl restart mosquitto wb-mqtt-serial wb-rules"

А когда работает, например сейчас:

mosquitto_sub -v -t '$SYS/#'
$SYS/broker/version mosquitto version 2.0.11
$SYS/broker/connection/IQ458000.wb_IQ458000_1720451812lV7Jb2HohCILy/state 0
$SYS/broker/connection/IQ458000.client_IQ458000_1704800983/state 1
$SYS/broker/uptime 1111 seconds
$SYS/broker/load/messages/received/1min 2037.15
$SYS/broker/load/messages/received/5min 2110.27
$SYS/broker/load/messages/received/15min 1744.69
$SYS/broker/load/messages/sent/1min 5989.37
$SYS/broker/load/messages/sent/5min 6210.86
$SYS/broker/load/messages/sent/15min 5087.66
$SYS/broker/load/publish/received/1min 7.75
$SYS/broker/load/publish/received/5min 13.20
$SYS/broker/load/publish/received/15min 20.05
$SYS/broker/load/publish/sent/1min 3958.03
$SYS/broker/load/publish/sent/5min 4114.44
$SYS/broker/load/publish/sent/15min 3363.45
$SYS/broker/load/bytes/received/1min 132435.29
$SYS/broker/load/bytes/received/5min 189070.03
$SYS/broker/load/bytes/received/15min 179659.04
$SYS/broker/load/bytes/sent/1min 244945.48
$SYS/broker/load/bytes/sent/5min 360802.12
$SYS/broker/load/bytes/sent/15min 340419.13
$SYS/broker/load/sockets/1min 0.61
$SYS/broker/load/sockets/5min 1.63
$SYS/broker/load/sockets/15min 2.25
$SYS/broker/load/connections/1min 0.61
$SYS/broker/load/connections/5min 1.63
$SYS/broker/load/connections/15min 2.25
$SYS/broker/messages/stored 8346
$SYS/broker/messages/received 49822
$SYS/broker/messages/sent 143621
$SYS/broker/store/messages/count 8346
$SYS/broker/store/messages/bytes 1194285
$SYS/broker/heap/current 5987852
$SYS/broker/publish/messages/received 746
$SYS/broker/publish/messages/sent 94563
$SYS/broker/publish/bytes/received 3082588
$SYS/broker/publish/bytes/sent 5432226
$SYS/broker/bytes/received 5458467
$SYS/broker/bytes/sent 10200430

Хм, ну, бага с базой retained, пожалуй, исключается. А можете выгрузить логи самого брокера, с момента до того как перестал отвечать?

Я тоже грешил на БД mosquitto, но ее отключение не исправило ситуации.
Проблема в том, что когда mosquitto зависает, в логи ничего специфичного не пишется. Периодически падает ошибка:
OpenSSL Error[0]: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
Но это правильно, т.к. у нас только один сертификат валиден.

my_mosquitto_log.txt (255,2 КБ)

Косвенно можно понять, что mosquitto завис, по местам где он перезапускается. Это срабатывает правило monit:

Можно попробовать настроить более подробное логирование… Сейчас так:

log_dest syslog
log_type error

Так же я временно настроил перезагрузку по cron каждые 3 часа в 33 минуты, не пугайтесь, это штатно.

Включил debug жду, надеюсь скоро зависнет)