Mosquitto no Raspberry Pi recusa conexão após alterar as configurações de log

12

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:mosquittoao 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?

Helmar
fonte
Existe alguma coisa escrita para /var/log/mosquitto/mosquitto.logtudo?
Aurora0001
1
@ Aurora0001 nada relacionado a essa tentativa de conexão, não
Helmar
Qual SO? Qual versão do mosquito?
Ghanima
@Ghanima adicionou as informações
Helmar
Você pode tentar reverter para o arquivo de configuração antigo e verificar? Muito burro: verifique o log de status do
mosquito

Respostas:

8

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:

mosquitto -v -c <path to config file>

A adição -vgarantirá que você tenha um registro detalhado, independentemente das configurações do arquivo de configuração.

ralight
fonte
3
Isso ajudou, aparentemente, existe um segundo mosquitto.conf no / etc / mosquitto que inclui o que eu estava usando no /etc/mosquitto/conf.d/. O primeiro arquivo já tinha esse arquivo de log padrão definido. Assim, criando um erro: Duplique o valor "arquivo log_dest". que impediu o serviço de iniciar corretamente. De alguma forma, esse erro não ocorreu ao usar a rotina de inicialização do serviço usual.
Helmar
6

No Arch Linux (4.4.37-1-ARCH) com mosquitto 1.4.10-2e um arquivo de log / caminho existente com permissões, não posso reproduzir esse erro.

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

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 refusedpublicar 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/mosquittopropriedade e gravável pelo usuário do mosquitto, uma log_dest file [...]linha na configuração do mosquitto funciona perfeitamente.

Ghanima
fonte
6

O diretório / arquivo de log deve pertencer ao mosquittousuário ou ao usuário que você configurou no arquivo e grupo conf. Eu tentei com dois arquivos conf, um sem log_dest file /var/log/mosquitto/mosquitto.loge um com destino de log para arquivo.

No meu servidor, o Mosquitto está sendo executado com o mosquittousuário.

Com log_dest file /var/log/mosquitto/mosquitto.logpropriedade do rootusuário não está funcionando com erro de status do serviço. Provavelmente também pode ser o seu caso. Verifique o service statusdepois de adicionar log_dest.

Tentei alterar a propriedade da /var/log/mosquittopasta para mosquitto.

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

Então iniciou o serviço. Está funcionando bem agora.

bravokeyl
fonte
Eu tinha o usuário como dono do arquivo antes, agora criei um grupo e alterei as permissões conforme sugerido, mas sem sorte.
Helmar
@Helmar hmm! isto é estranho. Depois de alterar o grupo, você reiniciou ou iniciou o serviço?
precisa saber é o seguinte
@ Helmar Você pode verificar novamente se (você criou) o diretório de destino do log?
bravokeyl
O arquivo e o diretório existem e são de propriedade do mosquitto: mosquitto
Helmar