Raspberry Pi上的Mosquitto更改日志设置后拒绝连接


12

为了使Raspberry Pi能够掌控我的工作,我建立了Mosquitto MQTT经纪人。在基本设置中,一切正常。

我可以使用publish命令发布测试消息,并使用subscription命令接收它们。然后,我决定提高日志级别,并如下修改了mosquitto.conf文件。基本上整个日志部分的版本都注释掉了。另一个没有。

我将其范围缩小到了日志文件所在的行。

$ 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

该文件存在,并由mosquitto:mosquitto运行服务的用户拥有。

尝试进行日志记录时,得到的非常有用的信息如下:

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

到现在为止,我确信该服务将死于无声死亡。

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

我正在使用以下mosquitto软件包运行Raspbian GNU / Linux 8(jessie)

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]

需要进一步评论的信息:

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

/ var / log中唯一被修改的日志文件是我sudo的auth.log。

我弄坏了什么?


有什么要写的/var/log/mosquitto/mosquitto.log吗?
Aurora0001

1
@ Aurora0001与该连接尝试无关,否
Helmar

什么操作系统?哪个版本的蚊子?
加纳玛

@Ghanima添加了信息
Helmar

您可以尝试将其还原回旧的配置文件并进行检查吗?非常愚蠢:查看蚊子状态日志
bravokeyl

Answers:


8

调试此问题的一种方法是使用与您的init系统相同的选项手动运行mosquitto,然后查看输出。例如:

mosquitto -v -c <path to config file>

-v无论配置文件设置如何,添加操作都将确保您具有详细的日志记录。


3
这很有帮助,显然在/ etc / mosquitto中还有另一个mosquitto.conf,其中包括我在/etc/mosquitto/conf.d/中使用的那个。该第一个文件已经设置了该标准日志文件。因此创建一个错误:复制“ log_dest文件”值。这导致服务无法正常启动。使用通常的服务启动例程时,该错误不会消失。
Helmar

6

mosquitto 1.4.10-2具有这样的权限的Arch Linux(4.4.37-1-ARCH)和现有的日志文件/路径中,我无法重现此错误。

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

但是,如果日志文件的权限不同,或者不存在,并且目录权限不允许mosquitto写入,则启动代理守护程序失败。然后导致Error: Connection refused发布或订阅主题。至少该服务不会死于无声死亡,但会在syslog中很好地宣布它。

简而言之,/var/log/mosquittomosquitto用户拥有并可由其写入的目录可以log_dest file [...]在mosquitto的配置中使用一行。


6

日志目录/文件应该拥有mosquitto用户或你在conf文件和组设置用户。我尝试了两个conf文件,一个带有out log_dest file /var/log/mosquitto/mosquitto.log,一个带有日志目标文件。

在我的服务器上,Mosquitto与mosquitto用户一起运行。

凭借log_dest file /var/log/mosquitto/mosquitto.log所拥有的root用户没有使用服务状态错误的工作。您也可能是这种情况。service status添加log_dest后检查。

我尝试将/var/log/mosquitto文件夹的所有权更改为mosquitto

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

然后开始服务。现在工作正常。


我以前是用户拥有文件的,现在我也创建了一个组,并按建议更改了权限,但是没有运气。
Helmar

@Helmar嗯!这很奇怪。更改组后,您是否重新启动或启动了服务?
bravokeyl

@Helmar您可以再次交叉检查(目的地)日志目标目录是否存在吗?
bravokeyl

这两个文件和目录中,并通过mosquitto所拥有:mosquitto
Helmar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.