Mosquitto en Raspberry Pi rechaza la conexión después de cambiar la configuración del registro

12

En mis esfuerzos continuos para que mi Raspberry Pi comandara mis cosas, configuré un corredor Mosquitto MQTT. En la configuración base, todo salió razonablemente bien.

Podría publicar mensajes de prueba con el comando de publicación y recibirlos con el comando de suscripción. Luego decidí subir el nivel de registro y modifiqué el archivo mosquitto.conf de la siguiente manera. La versión con la sección de registro esencialmente comentada funciona. El otro no.

Lo reduje a la línea con el archivo de 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

El archivo existe y es propiedad mosquitto:mosquittodel usuario que ejecuta el servicio.

El mensaje muy útil que recibo cuando intento con el registro es el siguiente:

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

Por ahora, estoy seguro de que el servicio muere una muerte silenciosa.

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

Estoy ejecutando Raspbian GNU / Linux 8 (jessie) con los siguientes paquetes 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]

Más comentarios solicitan información:

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

El único archivo de registro en / var / log que se modifica es el auth.log de mi sudo.

¿Qué rompí?

Helmar
fuente
¿Hay algo escrito /var/log/mosquitto/mosquitto.logen absoluto?
Aurora0001
1
@ Aurora0001 nada relacionado con ese intento de conexión, no
Helmar
Que sistema operativo ¿Qué versión de mosquitto?
Ghanima
@Ghanima agregó la información
Helmar
¿Puedes intentar volver al archivo de configuración anterior y verificar? Muy tonto: verifique el registro de estado de
mosquitto

Respuestas:

8

Una forma de depurar esto sería ejecutar mosquitto manualmente con las mismas opciones que usa su sistema de inicio, luego observe la salida. Por ejemplo:

mosquitto -v -c <path to config file>

Agregar -vasegurará que tenga un registro detallado, independientemente de la configuración del archivo de configuración.

ralight
fuente
3
Eso ayudó, aparentemente hay un segundo mosquitto.conf en / etc / mosquitto que incluía el que estaba usando en /etc/mosquitto/conf.d/. Ese primer archivo ya tenía ese conjunto de archivos de registro estándar. Creando así un error: valor duplicado "log_dest file". lo que impidió que el servicio se iniciara correctamente. De alguna manera, ese error no salió al usar la rutina de inicio del servicio habitual.
Helmar
6

En Arch Linux (4.4.37-1-ARCH) con mosquitto 1.4.10-2y un archivo de registro / ruta existente con permisos como tal, no puedo reproducir este error.

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

Sin embargo, si los permisos del archivo de registro difieren, o no existe y el permiso de los directorios no permite que mosquitto escriba en él, el inicio del intermediario daemon falla. Lo que lleva a Error: Connection refusedtemas de publicación o suscripción. Al menos el servicio no muere de muerte silenciosa pero lo anuncia bien en el syslog.

En resumen, con el directorio que /var/log/mosquittoposee y puede escribir el usuario de mosquitto, una log_dest file [...]línea en la configuración de mosquitto funciona bien.

Ghanima
fuente
6

El directorio / archivo de registro debe ser propiedad del mosquittousuario o del usuario que ha configurado en el archivo y grupo conf. Intenté con dos archivos conf, uno con out log_dest file /var/log/mosquitto/mosquitto.logy otro con el destino de registro para el archivo.

En mi servidor, Mosquitto se está ejecutando con el mosquittousuario.

Con log_dest file /var/log/mosquitto/mosquitto.logpropiedad del rootusuario no funciona con error de estado del servicio. Probablemente este sea el caso para usted también. Verifique service statusdespués de agregar log_dest.

Intenté cambiar la propiedad de la /var/log/mosquittocarpeta a mosquitto.

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

Entonces comenzó el servicio. Funciona bien ahora.

bravokeyl
fuente
El usuario tenía el archivo antes, ahora también creé un grupo y cambié los permisos según lo sugerido, pero no tuve suerte.
Helmar
@Helmar hmm! esto es extraño. Después de cambiar el grupo, ¿reinició o inició el servicio?
bravokeyl
@Helmar ¿Puede volver a verificar si (ha creado) el directorio de destino de registro existe?
bravokeyl
Tanto el archivo como el directorio existen y son propiedad de mosquitto: mosquitto
Helmar