Raspberry PiのMosquittoは、ログ設定を変更した後に接続を拒否します


12

Raspberry Piに私の命令を任せるための継続的な努力の中で、Mosquitto MQTTブローカーをセットアップしました。基本設定では、すべてがかなりうまくいきました。

publishコマンドでテストメッセージを投稿し、subscribeコマンドで受信できます。次に、ログレベルを上げることにし、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.

私が実行しているRaspbian GNU / Linuxの8(ジェシー)を以下の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]

さらにコメントが必要な情報:

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

OS 蚊のどのバージョン?
ガニマ

@Ghanimaは、情報を追加
Helmar

古い構成ファイルに戻して確認してみてください。非常に愚かな:
蚊の

回答:


8

これをデバッグする1つの方法は、initシステムが使用しているのと同じオプションを使用してmosquittoを手動で実行し、出力を確認することです。例えば:

mosquitto -v -c <path to config file>

追加する-vと、構成ファイルの設定に関係なく、詳細なログが記録されます。


3
/ etc / mosquittoには2番目のmosquitto.confがあり、これには/etc/mosquitto/conf.d/で使用していたものが含まれていたようです。その最初のファイルには、すでにその標準のログファイルセットがありました。したがって、「エラー:重複した "log_dest file"値を作成しています。サービスが適切に開始されませんでした。どういうわけか、通常のサービス開始ルーチンを使用しているとき、そのエラーは出ませんでした。
ヘルマー

6

Arch Linux(4.4.37-1-ARCH)とmosquitto 1.4.10-2既存のログファイル/パスにパーミッションがある場合、このエラーを再現できません。

/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/mosquitto、mosquittoユーザーが所有し、書き込み可能なディレクトリではlog_dest file [...]、mosquittoの設定の行は問題なく機能します。


6

ログディレクトリ/ファイルは、ユーザー、またはconfファイルとグループで設定したユーザーが所有する必要がmosquittoあります。私は2つのconfファイルを試しました。1つはoutでlog_dest file /var/log/mosquitto/mosquitto.log、もう1つはlog destination to fileです。

私のサーバーでは、Mosquittoがmosquittoユーザーで実行されています。

log_dest file /var/log/mosquitto/mosquitto.logが所有しているrootユーザーサービスのステータスエラーで動作しません。これはおそらくあなたにも当てはまるかもしれません。service statuslog_destを追加した後に確認してください。

/var/log/mosquittoフォルダの所有権をに変更してみましたmosquitto

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

その後、サービスを開始しました。現在は正常に動作しています。


以前にユーザーがファイルを所有していたので、グループを作成し、提案されたとおりに権限を変更しましたが、運はありません。
ヘルマー

@Helmarうーん!これはおかしい。グループを変更した後、サービスを再起動または開始しましたか?
-bravokeyl

@Helmarログの宛先ディレクトリが存在するかどうか(作成済み)を再度クロスチェックできますか?
-bravokeyl

ファイルとディレクトリの両方が存在し、mosquitto:mosquittoによって所有されています
Helmar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.