Mosquitto di Raspberry Pi menolak koneksi setelah mengubah pengaturan log

12

Dalam upaya berkelanjutan saya untuk mendapatkan Raspberry Pi saya untuk memerintahkan barang-barang saya, saya mendirikan broker Mosquitto MQTT. Dalam pengaturan dasar semuanya berjalan cukup baik.

Saya bisa memposting pesan pengujian dengan perintah publikasikan dan menerimanya dengan perintah berlangganan. Kemudian saya memutuskan untuk menaikkan level log dan memodifikasi file mosquitto.conf sebagai berikut. Versi yang pada dasarnya seluruh bagian log berkomentar berhasil. Yang lainnya tidak.

Saya mempersempitnya ke baris dengan file 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

File ada dan dimiliki oleh mosquitto:mosquitto, pengguna yang menjalankan layanan.

Pesan yang sangat membantu yang saya dapatkan ketika mencoba dengan pencatatan adalah sebagai berikut:

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

Sekarang, saya yakin bahwa layanan meninggal dengan tenang.

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

Saya menjalankan Raspbian GNU / Linux 8 (jessie) dengan paket mosquitto berikut:

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]

Komentar lebih lanjut meminta informasi:

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

Satu-satunya file log di / var / log yang akan dimodifikasi adalah auth.log dari sudo saya.

Apa yang saya hancurkan?

Helmar
sumber
Apakah ada sesuatu yang ditulis /var/log/mosquitto/mosquitto.log?
Aurora0001
1
@ Aurora0001 tidak ada yang terkait dengan upaya koneksi itu, tidak
Helmar
OS apa? Versi mosquitto yang mana?
Ghanima
@Ghanima menambahkan info
Helmar
Bisakah Anda mencoba mengembalikannya ke file konfigurasi lama dan periksa? Sangat bodoh: periksa status log mosquitto
bravokeyl

Jawaban:

8

Salah satu cara untuk men-debug ini adalah dengan menjalankan mosquitto secara manual dengan opsi yang sama seperti yang digunakan sistem init Anda, kemudian lihat hasilnya. Sebagai contoh:

mosquitto -v -c <path to config file>

Menambahkan -vakan memastikan bahwa Anda memiliki logging verbose, terlepas dari pengaturan file konfigurasi.

ralight
sumber
3
Itu membantu, ternyata ada mosquitto.conf kedua di / etc / mosquitto yang termasuk yang saya gunakan di /etc/mosquitto/conf.d/. File pertama itu sudah memiliki set file log standar itu. Dengan demikian menciptakan nilai Error: Duplicate "log_dest file". yang mencegah layanan dari mulai dengan benar. Entah bagaimana kesalahan itu tidak keluar ketika menggunakan layanan biasa mulai rutin.
Helmar
6

Di Arch Linux (4.4.37-1-ARCH) dengan mosquitto 1.4.10-2dan file log / path yang ada dengan izin seperti itu saya tidak dapat mereproduksi kesalahan ini.

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

Namun jika izin logfile berbeda, atau tidak ada dan izin direktori tidak mengizinkan mosquitto untuk menulis kepadanya, memulai daemon pialang gagal. Yang mengarah pada Error: Connection refusedsetelah penerbitan atau berlangganan topik. Setidaknya layanan ini tidak mati secara diam-diam tetapi mengumumkannya dengan baik di syslog.

Singkatnya dengan direktori yang /var/log/mosquittodimiliki dan ditulis oleh pengguna mosquitto, log_dest file [...]baris dalam konfigurasi mosquitto berfungsi dengan baik.

Ghanima
sumber
6

Direktori / file log harus dimiliki oleh mosquittopengguna atau pengguna yang telah Anda setup di file conf dan grup. Saya mencoba dengan dua file conf satu tanpa log_dest file /var/log/mosquitto/mosquitto.logdan satu dengan tujuan log ke file.

Di server saya Mosquitto berjalan dengan mosquittopengguna.

Dengan log_dest file /var/log/mosquitto/mosquitto.logdimiliki oleh rootpengguna tidak bekerja dengan kesalahan status layanan. Ini mungkin juga berlaku bagi Anda. Periksa service statussetelah Anda menambahkan log_dest.

Saya mencoba mengubah kepemilikan /var/log/mosquittofolder menjadi mosquitto.

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

Kemudian memulai layanan. Sekarang berfungsi dengan baik.

bravokeyl
sumber
Saya memiliki pengguna yang memiliki file sebelumnya, sekarang saya membuat grup juga dan mengubah izin seperti yang disarankan, tetapi tidak berhasil.
Helmar
@Helmar hmm! ini aneh. Setelah Anda mengubah grup, apakah Anda memulai ulang atau memulai layanan?
bravokeyl
@Helmar Bisakah Anda mengecek ulang apakah (Anda telah membuat) direktori tujuan log ada?
bravokeyl
Baik file maupun direktori ada dan dimiliki oleh mosquitto: mosquitto
Helmar