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:mosquitto
uż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?
źródło
/var/log/mosquitto/mosquitto.log
?Odpowiedzi:
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:
Dodanie
-v
zapewni pełne rejestrowanie, niezależnie od ustawień pliku konfiguracyjnego.źródło
W Arch Linux (4.4.37-1-ARCH) z
mosquitto 1.4.10-2
istniejącym plikiem dziennika / ścieżką z uprawnieniami jako takimi nie mogę odtworzyć tego błędu.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 refused
publikowania 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/mosquitto
należącym do użytkownika komara i do zapisu,log_dest file [...]
wiersz w konfiguracji komara działa dobrze.źródło
Dziennik katalog / plik powinien być w posiadaniu przez
mosquitto
użytkownika lub użytkownikowi, że masz konfigurację w pliku conf i grupy. Próbowałem z dwoma plikami conf, jednym bezlog_dest file /var/log/mosquitto/mosquitto.log
i jednym z miejscem docelowym dziennika do pliku.Na moim serwerze Mosquitto działa z
mosquitto
użytkownikiem.Z
log_dest file /var/log/mosquitto/mosquitto.log
własnościąroot
użytkownika nie działa z błędem stanu usługi. Prawdopodobnie dotyczy to również Ciebie. Sprawdźservice status
po dodaniu log_dest.Próbowałem zmienić właściciela
/var/log/mosquitto
folderu namosquitto
.Następnie uruchomiono usługę. Teraz działa dobrze.
źródło