Mosquitto na Raspberry Pi odmawia połączenia po zmianie ustawień dziennika


12

W moich nieustających staraniach, aby mój Raspberry Pi dowodził moimi sprawami, założyłem brokera Mosquitto MQTT. W ustawieniach podstawowych wszystko poszło dość dobrze.

Mogę publikować wiadomości testowe za pomocą polecenia publikowania i odbierać je za pomocą polecenia subskrypcji. Następnie postanowiłem podwyższyć poziom dziennika i zmodyfikowałem plik mosquitto.conf w następujący sposób. Wersja z zasadniczo całą sekcją dziennika komentowała prace. Drugi nie.

Zawęziłem go do linii z plikiem dziennika.

$ 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

Plik istnieje i jest własnością mosquitto:mosquittoużytkownika, który uruchamia usługę.

Bardzo pomocny komunikat, który otrzymuję podczas próby logowania, jest następujący:

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

Jestem już pewien, że służba umiera cichą śmiercią.

$ 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.

Używam Raspbian GNU / Linux 8 (jessie) z następującymi pakietami komarów:

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]

Dalsze informacje, o które proszono o komentarz:

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

Jedyny plik dziennika w / var / log, który zostanie zmodyfikowany, to auth.log z mojego sudo.

Co złamałem?


Czy jest coś do czego napisano /var/log/mosquitto/mosquitto.log?
Aurora0001

1
@ Aurora0001 nic nie dotyczy tej próby połączenia, nie
Helmar

Jaki system operacyjny Która wersja komara?
Ghanima,

@Ghanima dodał informację
Helmar

Czy możesz spróbować przywrócić go do starego pliku konfiguracyjnego i sprawdzić? Bardzo głupi: sprawdź dziennik stanu
komara

Odpowiedzi:


8

Jednym ze sposobów na debugowanie byłoby ręczne uruchomienie komara z tymi samymi opcjami, których używa twój system init, a następnie spojrzenie na wynik. Na przykład:

mosquitto -v -c <path to config file>

Dodanie -vzapewni pełne rejestrowanie, niezależnie od ustawień pliku konfiguracyjnego.


3
Pomogło to, najwyraźniej istnieje drugi plik mosquitto.conf w / etc / mosquitto, który obejmował ten, którego używałem w /etc/mosquitto/conf.d/. Pierwszy plik miał już ten standardowy zestaw plików dziennika. W ten sposób tworzony jest błąd: zduplikowana wartość „log_dest file”. co uniemożliwiło prawidłowe uruchomienie usługi. Jakoś ten błąd nie pojawił się podczas korzystania ze zwykłej procedury uruchamiania usługi.
Helmar

6

W Arch Linux (4.4.37-1-ARCH) z mosquitto 1.4.10-2istniejącym plikiem dziennika / ścieżką z uprawnieniami jako takimi nie mogę odtworzyć tego błędu.

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

Jeśli uprawnienia do pliku dziennika są jednak różne lub nie istnieje, a uprawnienie do katalogów nie zezwala komarowi na zapisywanie na nim, uruchomienie demona brokera kończy się niepowodzeniem. Co prowadzi do Error: Connection refusedpublikowania lub subskrybowania tematów. Przynajmniej usługa nie umiera cichą śmiercią, ale ogłasza ją dobrze w dzienniku systemowym.

Krótko mówiąc, z katalogiem /var/log/mosquittonależącym do użytkownika komara i do zapisu, log_dest file [...]wiersz w konfiguracji komara działa dobrze.


6

Dziennik katalog / plik powinien być w posiadaniu przez mosquittoużytkownika lub użytkownikowi, że masz konfigurację w pliku conf i grupy. Próbowałem z dwoma plikami conf, jednym bez log_dest file /var/log/mosquitto/mosquitto.logi jednym z miejscem docelowym dziennika do pliku.

Na moim serwerze Mosquitto działa z mosquittoużytkownikiem.

Z log_dest file /var/log/mosquitto/mosquitto.logwłasnością rootużytkownika nie działa z błędem stanu usługi. Prawdopodobnie dotyczy to również Ciebie. Sprawdź service statuspo dodaniu log_dest.

Próbowałem zmienić właściciela /var/log/mosquittofolderu na mosquitto.

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

Następnie uruchomiono usługę. Teraz działa dobrze.


Miałem wcześniej plik, teraz też utworzyłem grupę i zmieniłem uprawnienia zgodnie z sugestią, ale bez powodzenia.
Helmar

@Helmar hmm! to jest dziwne. Czy po zmianie grupy zrestartowałeś lub uruchomiłeś usługę?
brawokeyl

@Helmar Czy możesz ponownie sprawdzić, czy (utworzyłeś) katalog docelowy dziennika istnieje?
brawokeyl

Zarówno plik, jak i katalog istnieją i są własnością mosquitto: mosquitto
Helmar
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.