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?
sumber
/var/log/mosquitto/mosquitto.log
?Jawaban:
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:
Menambahkan
-v
akan memastikan bahwa Anda memiliki logging verbose, terlepas dari pengaturan file konfigurasi.sumber
Di Arch Linux (4.4.37-1-ARCH) dengan
mosquitto 1.4.10-2
dan file log / path yang ada dengan izin seperti itu saya tidak dapat mereproduksi kesalahan ini.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 refused
setelah penerbitan atau berlangganan topik. Setidaknya layanan ini tidak mati secara diam-diam tetapi mengumumkannya dengan baik di syslog.Singkatnya dengan direktori yang
/var/log/mosquitto
dimiliki dan ditulis oleh pengguna mosquitto,log_dest file [...]
baris dalam konfigurasi mosquitto berfungsi dengan baik.sumber
Direktori / file log harus dimiliki oleh
mosquitto
pengguna atau pengguna yang telah Anda setup di file conf dan grup. Saya mencoba dengan dua file conf satu tanpalog_dest file /var/log/mosquitto/mosquitto.log
dan satu dengan tujuan log ke file.Di server saya Mosquitto berjalan dengan
mosquitto
pengguna.Dengan
log_dest file /var/log/mosquitto/mosquitto.log
dimiliki olehroot
pengguna tidak bekerja dengan kesalahan status layanan. Ini mungkin juga berlaku bagi Anda. Periksaservice status
setelah Anda menambahkan log_dest.Saya mencoba mengubah kepemilikan
/var/log/mosquitto
folder menjadimosquitto
.Kemudian memulai layanan. Sekarang berfungsi dengan baik.
sumber