![Syslog 서비스를 시작할 수 없습니다](https://linux55.com/image/83234/Syslog%20%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC%20%EC%8B%9C%EC%9E%91%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.png)
RasperryPi Debian Jessie에 syslog-ng 3.5를 설치했습니다. 서비스를 시작하려고 하면 실패합니다.
-- Unit syslog.socket has begun starting up.
Feb 10 12:29:28 blackbox systemd[1]: Socket service syslog.service not loaded, r
Feb 10 12:29:28 blackbox systemd[1]: Failed to listen on Syslog Socket.
-- Subject: Unit syslog.socket has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit syslog.socket has failed.
--
-- The result is failed.
Feb 10 12:29:28 blackbox systemd[1]: Starting System Logger Daemon...
-- Subject: Unit syslog-ng.service has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit syslog-ng.service has begun starting up.
Feb 10 12:29:29 blackbox systemd[1]: Started System Logger Daemon.
-- Subject: Unit syslog-ng.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit syslog-ng.service has finished starting up.
--
-- The start-up result is done.
netstat를 확인했는데 포트 514가 다른 프로세스에서 사용되지 않습니다. 이전 버전에서 잘 작동했던 구성은 다음과 같습니다.
source s_net { udp(ip(0.0.0.0) port(514)); };
destination d_cisco { file(“/var/log/cisco/cisco.log”); };
log { source(s_net); destination(d_cisco); };
수동으로 실행하려고 하면 다음과 같습니다.
root@blackbox:~# /usr/sbin/syslog-ng -d
Running application hooks; hook='1'
Running application hooks; hook='3'
syslog-ng starting up; version='3.5.6'
Incoming log entry; line='<164>Feb 10 2016 15:03:59: %PIX-4-400037: IDS:6053 DNS all records request from 5.172.120.51 to 192.168.0.3 on interface outside\x0a'
Error opening file for writing; filename='\xe2\x80\x9c/var/log/cisco/cisco.log\xe2\x80\x9d', error='No such file or directory (2)'
Incoming log entry; line='<164>Feb 10 2016 15:04:03: %PIX-4-400037: IDS:6053 DNS all records request from 5.172.120.51 to 192.168.0.3 on interface outside\x0a'
Error opening file for writing; filename='\xe2\x80\x9c/var/log/cisco/cisco.log\xe2\x80\x9d', error='No such file or directory (2)'
Incoming log entry; line='<164>Feb 10 2016 15:04:07: %PIX-4-400037: IDS:6053 DNS all records request from 5.172.120.51 to 192.168.0.3 on interface outside\x0a'
Error opening file for writing; filename='\xe2\x80\x9c/var/log/cisco/cisco.log\xe2\x80\x9d', error='No such file or directory (2)'
Incoming log entry; line='<164>Feb 10 2016 15:04:07: %PIX-4-400011: IDS:2001 ICMP unreachable from 198.48.92.104 to 192.168.0.3 on interface outside\x0a'
Error opening file for writing; filename='\xe2\x80\x9c/var/log/cisco/cisco.log\xe2\x80\x9d', error='No such file or directory (2)'
Incoming log entry; line='<164>Feb 10 2016 15:04:07: %PIX-4-313005: No matching connection for ICMP error message: icmp src outside:198.48.92.104 dst inside:192.168.0.3 (type 3, code 3) on outside interface. Original IP payload: udp src 192.168.0.3/53 dst 198.48.92.104/17106.\x0a'
Error opening file for writing; filename='\xe2\x80\x9c/var/log/cisco/cisco.log\xe2\x80\x9d', error='No such file or directory (2)'
^Csyslog-ng shutting down; version='3.5.6'
Running application hooks; hook='4'
root@blackbox:~# cd /var/log/cisco/
root@blackbox:/var/log/cisco# ls -l
total 0
-rwxrw-rw- 1 root root 0 Feb 10 11:43 cisco.log
root@blackbox:/var/log/cisco#
답변1
여기서 Syslog-ng 데몬이 올바르게 시작되지 않습니다. 원격 syslog 서버로 구성되었음에도 포트 514/UDP가 netstat에 표시되지 않습니다.
문제를 디버깅하려면 다음 명령을 사용하십시오.
/usr/sbin/syslog-ng -d
오류가 표시됩니다.
Error opening file for writing; filename='\xe2\x80\x9c/var/log/cisco/cisco.log\xe2\x80\x9d'
\xe2\x80\x9c는 UTF-8 문자 인코딩의 제어 코드이므로 구성 파일에 관련 없는 문자가 있다고 결론을 내립니다 syslog-ng.conf
. UTF-8을 사용하여 구성된 웹 페이지 및 시스템의 구성을 복사하여 붙여넣으면 이러한 문제가 발생할 수 있습니다.
다음을 사용하여 최소한의 문자 변환을 위해 LANG=C로 편집합니다.
LANG=C vi /etc/syslog-ng/syslog-ng.conf
사용자들은 다음 줄이 UTF-8로 변환되지 않았다고 보고했습니다.
file(▒~@~\/var/log/cisco/cisco.log▒~@~]);
있는 그대로 편집하고 다시 시작하면 문제가 해결되었습니다.
file("/var/log/cisco/cisco.log");
에서:UTF-8
UTF-8은 가능한 모든 문자나 코드 포인트를 유니코드 형식으로 인코딩하는 문자 인코딩입니다. 인코딩은 가변 길이이며 8비트 코드 단위를 사용합니다.
C 프로그래밍 언어에서 로케일 이름 C는 "C 번역을 위한 최소 환경을 지정합니다"
권장 사항: 웹 페이지에서 직접 구성을 복사하여 붙여넣을 때 매우 주의하십시오. 모든 Unix 유틸리티가 기존 ASCII 표현 이외의 문자 집합을 이해하는 것은 아닙니다.