Mosquitto на Raspberry Pi отказывается от подключения после изменения настроек журнала

12

В моих постоянных попытках заставить моего Raspberry Pi распоряжаться моими вещами, я создал брокера Mosquitto MQTT. В базовых настройках все прошло достаточно хорошо.

Я мог опубликовать тестовые сообщения с помощью команды publish и получить их с помощью команды Подписаться. Затем я решил повысить уровень журнала и изменил файл mosquitto.conf следующим образом. Версия с практически всем закомментированным разделом журнала работает. Другой нет.

Я сузил его до строки с файлом журнала.

$ diff mosquitto.conf mosquitto.conf.old
408,410c408,410
< #log_dest file /var/log/mosquitto/mosquitto.log
---
> log_dest file /var/log/mosquitto/mosquitto.log

Файл существует и принадлежит mosquitto:mosquittoпользователю, который запускает службу.

Очень полезное сообщение, которое я получаю, когда пытаюсь с регистрацией, следующее:

mosquitto_pub -h localhost -t thisisme -m 5
Error: Connection refused

К настоящему времени я уверен, что служба умирает тихой смертью.

$ sudo service mosquitto status
 mosquitto.service - LSB: mosquitto MQTT v3.1 message broker
   Loaded: loaded (/etc/init.d/mosquitto)
   Active: active (exited) since Fri 2017-01-06 11:16:38 CET; 4min 24s ago
  Process: 2222 ExecStop=/etc/init.d/mosquitto stop (code=exited, status=0/SUCCESS)
  Process: 2230 ExecStart=/etc/init.d/mosquitto start (code=exited, status=0/SUCCESS)

Jan 06 11:16:38 T-Pi mosquitto[2230]: Starting network daemon:: mosquitto.
Jan 06 11:16:38 T-Pi systemd[1]: Started LSB: mosquitto MQTT v3.1 message broker.

Я использую Raspbian GNU / Linux 8 (jessie) со следующими пакетами mosquitto:

libmosquitto1/stable,now 1.3.4-2 armhf [installed,automatic]
mosquitto/stable,now 1.3.4-2 armhf [installed]
mosquitto-clients/stable,now 1.3.4-2 armhf [installed]
python-mosquitto/stable,now 1.3.4-2 all [installed]

Дополнительный комментарий запрашиваемой информации:

ls -ld /var /var/log /var/log/mosquitto /var/log/mosquitto/mosquitto.log
drwxr-xr-x 11 root      root       4096 Sep 23 06:02 /var
drwxr-xr-x  8 root      root       4096 Jan  6 21:07 /var/log
drwxr-xr-x  2 mosquitto mosquitto  4096 Jan  5 14:36 /var/log/mosquitto
-rw-r--r--  1 mosquitto mosquitto 14233 Jan  6 21:07 /var/log/mosquitto/mosquitto.log

Единственный файл журнала в / var / log, который модифицируется - это файл auth.log из моего sudo.

Что я сломал?

Хельмар
источник
Есть что-нибудь написано /var/log/mosquitto/mosquitto.logвообще?
Aurora0001
1
@ Aurora0001 ничего, что касается этой попытки подключения, нет
Хелмар
Какая ОС? Какая версия комара?
Ганима
@Ghanima добавил информацию
Helmar
Можете ли вы попробовать вернуть его обратно в старый конфигурационный файл и проверить? Очень тупой: проверь журнал статуса
москита

Ответы:

8

Один из способов отладки - запускать mosquitto вручную с теми же параметрами, которые использует ваша система инициализации, а затем посмотреть на вывод. Например:

mosquitto -v -c <path to config file>

Добавление -vгарантирует, что у вас есть подробное ведение журнала, независимо от настроек файла конфигурации.

ralight
источник
3
Это помогло, очевидно, есть второй mosquitto.conf в / etc / mosquitto, который включал тот, который я использовал в /etc/mosquitto/conf.d/. Этот первый файл уже имел этот стандартный набор файлов журнала. Таким образом, создается ошибка: дублируйте значение «log_dest file». что помешало правильному запуску сервиса. Каким-то образом эта ошибка не вылезла при использовании обычной процедуры запуска службы.
Хелмар
6

В Arch Linux (4.4.37-1-ARCH) с mosquitto 1.4.10-2существующим лог-файлом / путем с разрешениями как таковыми я не могу воспроизвести эту ошибку.

/var/log/mosquitto $ ls -l
-rw-r--r-- 1 mosquitto root 7832 Jan 5 18:15 mosquitto.log

Однако если права доступа к файлу журнала различаются или он не существует, а разрешение каталогов не позволяет mosquitto писать в него, запуск демона посредника завершается неудачно. К чему приводит Error: Connection refusedпубликация или подписка на темы. По крайней мере, служба не умирает тихой смертью, но хорошо объявляет об этом в системном журнале.

Короче говоря, с каталогом, /var/log/mosquittoпринадлежащим и доступным для записи пользователю mosquitto, log_dest file [...]строка в конфигурации mosquitto работает просто отлично.

Ганима
источник
6

Бревно каталог / файл должен быть в собственности от mosquittoпользователя или пользователя , который у вас есть настройки в файле конф и группы. Я попытался с двумя conf файлами, один без, log_dest file /var/log/mosquitto/mosquitto.logа другой с адресом журнала в файл.

На моем сервере Mosquitto работает с mosquittoпользователем.

При log_dest file /var/log/mosquitto/mosquitto.logпринадлежащем rootпользователю не работает ошибка состояния сервиса. Возможно, это относится и к вам. Проверьте service statusпосле добавления log_dest.

Я попытался изменить владельца /var/log/mosquittoпапки на mosquitto.

sudo chown -R mosquitto:mosquitto /var/log/mosquitto

Затем запустили сервис. Сейчас работает нормально.

bravokeyl
источник
Раньше у меня был пользователь, владеющий файлом, теперь я также создал группу и изменил разрешения, как это было предложено, но не повезло.
Хелмар
@ Хелмар, хм! это странно. После смены группы вы перезапустили или запустили службу?
Бравокейл
@ Helmar Можете ли вы еще раз проверить, существует ли (вы создали) каталог назначения журнала?
бравокейл
И файл, и каталог существуют и принадлежат mosquitto: mosquitto
Helmar