Mosquitto trên Raspberry Pi từ chối kết nối sau khi thay đổi cài đặt nhật ký


12

Trong nỗ lực liên tục của tôi để có được Raspberry Pi của tôi để chỉ huy công cụ của tôi, tôi đã thiết lập một nhà môi giới Mosquitto MQTT. Trong các thiết lập cơ sở, mọi thứ đều ổn.

Tôi có thể đăng thông báo kiểm tra bằng lệnh xuất bản và nhận chúng bằng lệnh đăng ký. Sau đó, tôi quyết định tăng cấp độ nhật ký và sửa đổi tệp mosquitto.conf như sau. Các phiên bản với chủ yếu là toàn bộ phần nhật ký nhận xét hoạt động. Cái khác thì không.

Tôi thu hẹp nó xuống dòng với tệp nhật ký.

$ 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

Các tập tin tồn tại và được sở hữu bởi mosquitto:mosquitto, người dùng chạy dịch vụ.

Thông điệp rất hữu ích tôi nhận được khi thử đăng nhập là như sau:

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

Đến bây giờ, tôi chắc chắn rằng dịch vụ chết một cách im lặng.

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

Tôi đang chạy Raspbian GNU / Linux 8 (jessie) với các gói mosquitto sau:

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]

Bình luận thêm yêu cầu thông tin:

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

Tệp nhật ký duy nhất trong / var / log được sửa đổi là auth.log từ sudo của tôi.

Tôi đã làm gì?


Có bất cứ điều gì được viết cho /var/log/mosquitto/mosquitto.logtất cả?
Aurora0001

1
@ Aurora0001 không có gì liên quan đến nỗ lực kết nối đó, không
Helmar

HĐH gì? Phiên bản nào của mosquitto?
Ghanima

@Ghanima đã thêm thông tin
Helmar

Bạn có thể thử hoàn nguyên nó về tập tin cấu hình cũ và kiểm tra không? Rất ngu ngốc: kiểm tra nhật ký trạng thái
mosquitto

Câu trả lời:


8

Một cách để gỡ lỗi này là chạy mosquitto bằng tay với các tùy chọn giống như hệ thống init của bạn đang sử dụng, sau đó nhìn vào đầu ra. Ví dụ:

mosquitto -v -c <path to config file>

Thêm -vsẽ đảm bảo rằng bạn có ghi nhật ký chi tiết, bất kể cài đặt tệp cấu hình.


3
Điều đó có ích, rõ ràng là có một mosquitto.conf thứ hai trong / etc / mosquitto, trong đó có cái tôi đang sử dụng trong /etc/mosquitto/conf.d/. Đó là tập tin đầu tiên đã có tập tin nhật ký tiêu chuẩn đó. Do đó, tạo ra một lỗi: Sao chép giá trị "tệp log_dest". trong đó ngăn chặn dịch vụ bắt đầu đúng cách. Bằng cách nào đó, lỗi không thoát ra được khi sử dụng thói quen bắt đầu dịch vụ thông thường.
Helmar

6

Trên Arch Linux (4.4.37-1-ARCH) với mosquitto 1.4.10-2và một logfile / path hiện có với các quyền như vậy tôi không thể tái tạo lỗi này.

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

Tuy nhiên, nếu các quyền của logfile khác nhau, hoặc nó không tồn tại và quyền thư mục không cho phép mosquitto ghi vào nó, bắt đầu trình nền của trình môi giới thất bại. Mà hơn dẫn đến Error: Connection refusedkhi xuất bản hoặc đăng ký chủ đề. Ít nhất là dịch vụ không chết một cái chết thầm lặng nhưng thông báo nó tốt trong syslog.

Nói tóm lại, với thư mục được /var/log/mosquittosở hữu và ghi bởi người dùng mosquitto, một log_dest file [...]dòng trong cấu hình của mosquitto hoạt động tốt.


6

Thư mục / tệp nhật ký phải thuộc sở hữu của mosquittongười dùng hoặc người dùng mà bạn đã thiết lập trong tệp và nhóm conf. Tôi đã thử với hai tập tin conf một với out log_dest file /var/log/mosquitto/mosquitto.logvà một với log đích để tập tin.

Trên máy chủ của tôi, Mosquitto đang chạy với mosquittongười dùng.

Với log_dest file /var/log/mosquitto/mosquitto.logsở hữu của rootngười dùng không hoạt động với lỗi trạng thái dịch vụ. Đây có lẽ cũng là trường hợp cho bạn. Kiểm tra service statussau khi bạn thêm log_dest.

Tôi đã thử thay đổi quyền sở hữu của /var/log/mosquittothư mục thành mosquitto.

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

Sau đó bắt đầu dịch vụ. Bây giờ nó hoạt động tốt.


Tôi đã có người dùng sở hữu tập tin trước đây, bây giờ tôi cũng đã tạo một nhóm và thay đổi các quyền theo đề xuất, nhưng không gặp may.
Helmar

@Helmar hmm! điều này thật lạ Sau khi bạn thay đổi nhóm, bạn đã khởi động lại hoặc bắt đầu dịch vụ?
bravokeyl

@Helmar Bạn có thể kiểm tra lại xem liệu (bạn đã tạo) thư mục đích của nhật ký có tồn tại không?
bravokeyl

Cả tệp và thư mục đều tồn tại và được sở hữu bởi mosquitto: mosquitto
Helmar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.