In meinen fortwährenden Bemühungen, meinen Raspberry Pi dazu zu bringen, meine Aufgaben zu übernehmen, habe ich einen Mosquitto MQTT-Broker eingerichtet. In den Grundeinstellungen lief alles einigermaßen gut.
Ich könnte Testnachrichten mit dem Befehl "publish" veröffentlichen und sie mit dem Befehl "subscribe" empfangen. Dann habe ich beschlossen, die Log-Ebene zu erhöhen und die Datei mosquitto.conf wie folgt zu modifizieren. Die Version mit im Wesentlichen dem gesamten auskommentierten Protokollabschnitt funktioniert. Der andere nicht.
Ich habe es auf die Zeile mit der Protokolldatei eingegrenzt.
$ 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
Die Datei existiert und gehört mosquitto:mosquitto
dem Benutzer, der den Dienst ausführt.
Die sehr hilfreiche Meldung, die ich beim Versuch der Protokollierung erhalte, lautet wie folgt:
mosquitto_pub -h localhost -t thisisme -m 5
Error: Connection refused
Inzwischen bin ich mir sicher, dass der Dienst eines stillen Todes stirbt.
$ 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.
Ich verwende Raspbian GNU / Linux 8 (Jessie) mit den folgenden Moskito-Paketen:
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]
Weitere Kommentar angeforderte Informationen:
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
Die einzige Protokolldatei in / var / log, die geändert wird, ist die Datei auth.log von meinem sudo.
Was habe ich gebrochen?
quelle
/var/log/mosquitto/mosquitto.log
?Antworten:
Eine Möglichkeit, dies zu debuggen, besteht darin, mosquitto manuell mit den gleichen Optionen auszuführen, die Ihr Init-System verwendet, und sich dann die Ausgabe anzusehen. Beispielsweise:
Durch
-v
das Hinzufügen wird sichergestellt, dass Sie unabhängig von den Einstellungen der Konfigurationsdatei eine ausführliche Protokollierung haben.quelle
Unter Arch Linux (4.4.37-1-ARCH) mit
mosquitto 1.4.10-2
und einer vorhandenen Protokolldatei / einem vorhandenen Pfad mit entsprechenden Berechtigungen kann ich diesen Fehler nicht reproduzieren.Wenn die Berechtigungen der Protokolldatei jedoch unterschiedlich sind oder nicht vorhanden sind und die Verzeichnisberechtigung Moskitto das Schreiben nicht zulässt, schlägt das Starten des Broker-Daemons fehl. Was dann
Error: Connection refused
beim Veröffentlichen oder Abonnieren von Themen dazu führt. Zumindest stirbt der Dienst nicht an einem stillen Tod, sondern kündigt ihn gut im Syslog an.Kurz gesagt, mit dem Verzeichnis,
/var/log/mosquitto
das dem Benutzer von mosquitto gehört und von ihm beschreibbar ist, funktioniert einelog_dest file [...]
Zeile in der Konfiguration von mosquitto einwandfrei.quelle
Die Log - Verzeichnis / Datei sollte sein Eigentum durch den
mosquitto
Benutzer oder der Benutzer , dass Sie Setup in der Conf - Datei und die Gruppe haben. Ich habe es mit zwei conf-Dateien versucht, eine mit outlog_dest file /var/log/mosquitto/mosquitto.log
und eine mit log destination to file.Auf meinem Server läuft Mosquitto mit
mosquitto
User.Mit
log_dest file /var/log/mosquitto/mosquitto.log
Besitz vonroot
Benutzer arbeitet nicht mit Dienststatusfehler. Dies könnte wahrscheinlich auch für Sie der Fall sein. Überprüfen Sie das,service status
nachdem Sie log_dest hinzugefügt haben.Ich habe versucht, den Besitzer des
/var/log/mosquitto
Ordners in zu ändernmosquitto
.Dann startete der Dienst. Es funktioniert jetzt gut.
quelle