Nos meus esforços contínuos para conseguir que meu Raspberry Pi comandasse minhas coisas, montei um corretor Mosquitto MQTT. Nas configurações da base, tudo correu razoavelmente bem.
Eu poderia postar mensagens de teste com o comando de publicação e recebê-las com o comando de inscrição. Decidi aumentar o nível do log e modifiquei o arquivo mosquitto.conf da seguinte maneira. A versão com essencialmente toda a seção de log comentada funciona. O outro não.
Eu o reduzi à linha com o arquivo de log.
$ 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
O arquivo existe e pertence mosquitto:mosquitto
ao usuário que executa o serviço.
A mensagem muito útil que recebo ao tentar com o log é a seguinte:
mosquitto_pub -h localhost -t thisisme -m 5
Error: Connection refused
Até agora, tenho certeza de que o serviço morre silenciosamente.
$ 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.
Estou executando o Raspbian GNU / Linux 8 (jessie) com os seguintes pacotes 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]
Comentários adicionais solicitaram informações:
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
O único arquivo de log em / var / log modificado é o auth.log do meu sudo.
O que eu quebrei?
fonte
/var/log/mosquitto/mosquitto.log
tudo?Respostas:
Uma maneira de depurar isso seria executar o mosquitto manualmente com as mesmas opções que o sistema init está usando e, em seguida, observe a saída. Por exemplo:
A adição
-v
garantirá que você tenha um registro detalhado, independentemente das configurações do arquivo de configuração.fonte
No Arch Linux (4.4.37-1-ARCH) com
mosquitto 1.4.10-2
e um arquivo de log / caminho existente com permissões, não posso reproduzir esse erro.Se as permissões do arquivo de log diferirem ou não existirem e a permissão de diretórios não permitir que o mosquitto grave nele, o início do daemon do broker falhará. O que leva a
Error: Connection refused
publicar ou assinar tópicos. Pelo menos o serviço não sofre uma morte silenciosa, mas o anuncia bem no syslog.Resumindo, com o diretório de
/var/log/mosquitto
propriedade e gravável pelo usuário do mosquitto, umalog_dest file [...]
linha na configuração do mosquitto funciona perfeitamente.fonte
O diretório / arquivo de log deve pertencer ao
mosquitto
usuário ou ao usuário que você configurou no arquivo e grupo conf. Eu tentei com dois arquivos conf, um semlog_dest file /var/log/mosquitto/mosquitto.log
e um com destino de log para arquivo.No meu servidor, o Mosquitto está sendo executado com o
mosquitto
usuário.Com
log_dest file /var/log/mosquitto/mosquitto.log
propriedade doroot
usuário não está funcionando com erro de status do serviço. Provavelmente também pode ser o seu caso. Verifique oservice status
depois de adicionar log_dest.Tentei alterar a propriedade da
/var/log/mosquitto
pasta paramosquitto
.Então iniciou o serviço. Está funcionando bem agora.
fonte