Raspberry Pi의 모기가 로그 설정을 변경 한 후 연결을 거부합니다


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 / 리눅스 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

@Ghanima가 정보를 추가했습니다
Helmar

이전 구성 파일로 다시 되돌려 서 확인할 수 있습니까? 매우 멍청한 : 모기 상태 로그 확인
bravokeyl

답변:


8

이를 디버깅하는 한 가지 방법은 init 시스템이 사용하는 것과 동일한 옵션으로 모기를 수동으로 실행 한 다음 출력을 보는 것입니다. 예를 들면 다음과 같습니다.

mosquitto -v -c <path to config file>

추가 -v하면 구성 파일 설정에 관계없이 자세한 로깅이 이루어집니다.


3
그것은 분명히 / etc / mosquitto에 /etc/mosquitto/conf.d/에서 사용했던 것을 포함하는 두 번째 mosquitto.conf가 있습니다. 첫 번째 파일에는 이미 표준 로그 파일 세트가 있습니다. 따라서 오류 : "log_dest 파일"값이 중복됩니다. 서비스가 제대로 시작되지 못했습니다. 일반적인 서비스 시작 루틴을 사용할 때 어떻게 든 오류가 발생하지 않았습니다.
Helmar

6

권한이있는 아치 mosquitto 1.4.10-2로그 (4.4.37-1-ARCH) 및 기존 로그 파일 / 경로 에서이 오류를 재현 할 수 없습니다.

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

그러나 로그 파일의 권한이 다르거 나 존재하지 않고 디렉토리 권한으로 인해 모기가 쓸 수 없으면 브로커 디먼 시작이 실패합니다. Error: Connection refused주제를 게시하거나 구독 할 때 어느 것보다 최소한이 서비스는 조용한 죽음으로 죽지 않고 syslog에서 잘 알립니다.

/var/log/mosquitto모기 사용자가 소유하고 쓸 수 있는 디렉토리와 함께 log_dest file [...]모기 구성의 한 줄은 정상적으로 작동합니다.


6

conf 파일 및 그룹에서 설정 한 사용자 또는 사용자 가 로그 디렉토리 / 파일을 소유 해야합니다 mosquitto. 나는 두 개의 conf 파일로 log_dest file /var/log/mosquitto/mosquitto.log하나는 로그 아웃 하고 다른 하나는 파일에 로그 대상으로 시도했습니다 .

내 서버에서 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

@Helmar 흠! 이건 이상해. 그룹을 변경 한 후 서비스를 다시 시작하거나 시작 했습니까?
bravokeyl

@Helmar 로그 대상 디렉토리가 존재하는지 여부를 다시 확인할 수 있습니까?
bravokeyl

파일과 디렉토리는 모두 존재하며 mosquitto : mosquitto
Helmar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.