Dans mes efforts continus pour que mon Raspberry Pi commande mes affaires, j'ai mis en place un courtier Mosquitto MQTT. Dans les paramètres de base, tout s'est assez bien passé.
Je pouvais poster des messages de test avec la commande de publication et les recevoir avec la commande d'abonnement. J'ai ensuite décidé d'augmenter le niveau de journalisation et de modifier le fichier mosquitto.conf comme suit. La version avec essentiellement toute la section journal a commenté les travaux. L'autre ne le fait pas.
Je l'ai réduit à la ligne avec le fichier journal.
$ 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
Le fichier existe et appartient à mosquitto:mosquitto
l'utilisateur qui exécute le service.
Le message très utile que j'obtiens lorsque j'essaie de me connecter est le suivant:
mosquitto_pub -h localhost -t thisisme -m 5
Error: Connection refused
À présent, je suis sûr que le service meurt d'une mort silencieuse.
$ 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.
J'utilise Raspbian GNU / Linux 8 (jessie) avec les packages mosquitto suivants:
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]
Autre commentaire demandé des informations:
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
Le seul fichier journal dans / var / log qui est modifié est le auth.log de mon sudo.
Qu'est-ce que j'ai cassé?
la source
/var/log/mosquitto/mosquitto.log
?Réponses:
Une façon de déboguer cela serait d'exécuter manuellement moustique avec les mêmes options que votre système d'initialisation utilise, puis regardez la sortie. Par exemple:
L'ajout
-v
garantit que vous disposez d'une journalisation détaillée, quels que soient les paramètres du fichier de configuration.la source
Sur Arch Linux (4.4.37-1-ARCH) avec
mosquitto 1.4.10-2
et un fichier journal / chemin d'accès existant avec des autorisations en tant que telles, je ne peux pas reproduire cette erreur.Si les autorisations du fichier journal diffèrent cependant, ou s'il n'existe pas et que l'autorisation des répertoires ne permet pas à moustique d'y écrire, le démarrage du démon du courtier échoue. Ce qui mène à
Error: Connection refused
la publication ou à l'inscription de sujets. Au moins le service ne meurt pas d'une mort silencieuse mais l'annonce bien dans le syslog.En bref, avec le répertoire
/var/log/mosquitto
détenu et accessible en écriture par l'utilisateur du moustique, unelog_dest file [...]
ligne dans la configuration du moustique fonctionne très bien.la source
Le répertoire / fichier journal doit appartenir à l'
mosquitto
utilisateur ou à l'utilisateur que vous avez configuré dans le fichier et le groupe conf. J'ai essayé avec deux fichiers conf un aveclog_dest file /var/log/mosquitto/mosquitto.log
et un avec la destination du journal dans le fichier.Sur mon serveur, Mosquitto fonctionne avec l'
mosquitto
utilisateur.Avec
log_dest file /var/log/mosquitto/mosquitto.log
appartenant à l'root
utilisateur ne fonctionne pas avec une erreur d'état du service. Cela pourrait probablement être le cas pour vous également. Vérifiezservice status
après avoir ajouté log_dest.J'ai essayé de changer la propriété du
/var/log/mosquitto
dossier enmosquitto
.Puis a commencé le service. Ça fonctionne bien maintenant.
la source