Mosquitto su Raspberry Pi rifiuta la connessione dopo aver modificato le impostazioni del registro


12

Nei miei sforzi in corso per convincere il mio Raspberry Pi a comandare le mie cose, ho creato un broker Mosquitto MQTT. Nelle impostazioni di base tutto è andato abbastanza bene.

Potrei pubblicare messaggi di prova con il comando di pubblicazione e riceverli con il comando di iscrizione. Quindi ho deciso di aumentare il livello del registro e modificato il file mosquitto.conf come segue. La versione con essenzialmente l'intera sezione del registro commentata funziona. L'altro no.

L'ho ristretto alla linea con il file di registro.

$ 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

Il file esiste ed è di proprietà mosquitto:mosquittodell'utente che esegue il servizio.

Il messaggio molto utile che ricevo quando provo con la registrazione è il seguente:

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

Ormai sono sicuro che il servizio muore in silenzio.

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

Sto eseguendo Raspbian GNU / Linux 8 (jessie) con i seguenti pacchetti 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]

Ulteriori commenti richiesti informazioni:

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

L'unico file di registro in / var / log che viene modificato è il file auth.log dal mio sudo.

Cosa ho rotto?


C'è qualcosa per cui è stato scritto /var/log/mosquitto/mosquitto.log?
Aurora0001

1
@ Aurora0001 nulla relativo a quel tentativo di connessione, no
Helmar

Quale sistema operativo? Quale versione di mosquitto?
Ghanima,

@Ghanima ha aggiunto le informazioni
Helmar

Puoi provare a ripristinare il vecchio file di configurazione e controllare? Molto stupido: controlla il registro di stato di
mosquitto

Risposte:


8

Un modo per eseguire il debug sarebbe eseguire manualmente mosquitto con le stesse opzioni utilizzate dal sistema init, quindi guardare l'output. Per esempio:

mosquitto -v -c <path to config file>

L'aggiunta -vgarantirà una registrazione dettagliata, indipendentemente dalle impostazioni del file di configurazione.


3
Ciò ha aiutato, apparentemente c'è un secondo mosquitto.conf in / etc / mosquitto che includeva quello che stavo usando in /etc/mosquitto/conf.d/. Quel primo file aveva già impostato quel file di registro standard. Creando così un errore: duplicare il valore "file log_dest". che ha impedito l'avvio corretto del servizio. In qualche modo quell'errore non è uscito usando la solita routine di avvio del servizio.
Helmar

6

Su Arch Linux (4.4.37-1-ARCH) con mosquitto 1.4.10-2e un file di log / percorso esistente con autorizzazioni in quanto tale non riesco a riprodurre questo errore.

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

Se le autorizzazioni del file di registro tuttavia differiscono o non esistono e le autorizzazioni delle directory non consentono a mosquitto di scrivergli, l'avvio del demone broker non riesce. Ciò che porta alla Error: Connection refusedpubblicazione o alla sottoscrizione di argomenti. Almeno il servizio non muore in una morte silenziosa, ma lo annuncia bene nel syslog.

In breve, con la directory di /var/log/mosquittoproprietà e scrivibile dall'utente mosquitto, una log_dest file [...]riga nella configurazione di mosquitto funziona bene.


6

La directory / file di log deve essere posseduto dal mosquittoutente o l'utente che avete installato nel file conf e di gruppo. Ho provato con due file di configurazione uno con out log_dest file /var/log/mosquitto/mosquitto.loge uno con destinazione registro su file.

Sul mio server Mosquitto è in esecuzione con l' mosquittoutente.

Con log_dest file /var/log/mosquitto/mosquitto.logproprietà rootdell'utente non funziona con errore dello stato del servizio. Questo probabilmente potrebbe essere il caso anche per te. Controlla service statusdopo aver aggiunto log_dest.

Ho provato a cambiare la proprietà della /var/log/mosquittocartella in mosquitto.

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

Quindi ha avviato il servizio. Ora funziona bene.


Prima avevo il file dell'utente, ora ho creato anche un gruppo e modificato le autorizzazioni come suggerito, ma senza fortuna.
Helmar

@Helmar hmm! Questo è strano. Dopo aver modificato il gruppo, hai riavviato o avviato il servizio?
bravokeyl,

@Helmar Puoi eseguire nuovamente il controllo incrociato se (hai creato) esiste la directory di destinazione del registro?
bravokeyl,

Sia il file che la directory esistono e sono di proprietà di mosquitto: mosquitto
Helmar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.