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:mosquitto
del 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í?
fuente
/var/log/mosquitto/mosquitto.log
en absoluto?Respuestas:
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:
Agregar
-v
asegurará que tenga un registro detallado, independientemente de la configuración del archivo de configuración.fuente
En Arch Linux (4.4.37-1-ARCH) con
mosquitto 1.4.10-2
y un archivo de registro / ruta existente con permisos como tal, no puedo reproducir este error.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 refused
temas 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/mosquitto
posee y puede escribir el usuario de mosquitto, unalog_dest file [...]
línea en la configuración de mosquitto funciona bien.fuente
El directorio / archivo de registro debe ser propiedad del
mosquitto
usuario o del usuario que ha configurado en el archivo y grupo conf. Intenté con dos archivos conf, uno con outlog_dest file /var/log/mosquitto/mosquitto.log
y otro con el destino de registro para el archivo.En mi servidor, Mosquitto se está ejecutando con el
mosquitto
usuario.Con
log_dest file /var/log/mosquitto/mosquitto.log
propiedad delroot
usuario no funciona con error de estado del servicio. Probablemente este sea el caso para usted también. Verifiqueservice status
después de agregar log_dest.Intenté cambiar la propiedad de la
/var/log/mosquitto
carpeta amosquitto
.Entonces comenzó el servicio. Funciona bien ahora.
fuente