저는 syslog-ng를 처음 사용하고 외부 장치에서 syslog에 쓰기를 테스트하고 싶습니다. 외부 장치는 포트 516의 syslog에 "연결"되어 있음을 보여줍니다. 그러나 내 CentOS7 호스트에서는 로그 파일에 아무 것도 기록되지 않습니다(이제 /var/log/messages에 오류가 발생합니다). localhost:516에 텔넷을 연결하고 (테스트로) 일부 텍스트를 덤프하려고 시도했지만 어디에도 아무것도 기록되지 않았습니다. netstat는 syslog가 tcp 516에서 수신 대기 중인지 확인합니다.
내 구성은 다음과 같습니다.
source s_test {
system()
internal()
syslog(ip(0.0.0.0) port(516) transport("tcp"));
};
destination d_test { file("/var/log/test"); };
log { source(s_test); destination(d_test); };
내 구성에 문제가 있나요?
답변1
몇 가지 버그가 있습니다. 다음 중 하나에 대해 종료해야 합니다 system()
.internal()
;
source s_test {
system();
internal();
syslog(ip(0.0.0.0) port(516) transport("tcp"));
};
destination d_test { file("/var/log/test"); };
log { source(s_test); destination(d_test); };
수동으로 시작하면 새로운 오류와 경고가 생성됩니다 syslog-ng
(다음 메시지는 systemd
Centos 7에서 디버깅하는 데 쓸모가 없습니다).
# syslog-ng -F -p /var/run/syslogd.pid
WARNING: Configuration file has no version number, assuming syslog-ng 2.1 format. Please add @version: maj.min to the beginning of the file to indicate this explicitly;
...
Error parsing source, source plugin system not found in /etc/syslog-ng/syslog-ng.conf at line 16, column 5:
system();
^^^^^^
syslog-ng
기본 구성 파일에 다음 명령문을 포함시켜 이러한 문제를 해결할 수 있습니다 .
@version:3.5
@include "scl.conf"
source s_test {
system();
internal();
syslog(ip(0.0.0.0) port(516) transport("tcp"));
};
destination d_test { file("/var/log/test"); };
log { source(s_test); destination(d_test); };
지금 시작하세요 syslog-ng
:
# syslog-ng -F -p /var/run/syslogd.pid
...
그러나 logger(1)
다른 터미널에서의 테스트는 실패합니다. 로그에
/var/log/test
오류가 보고됩니다 Invalid frame header
.
# logger --server 127.0.0.1 --tcp --port 516 foo
이는 network
대신 다음을 사용하여 수정할 수 있습니다 syslog
.
@version:3.5
@include "scl.conf"
source s_test {
system();
internal();
network(ip(0.0.0.0) port(516) transport("tcp"));
};
destination d_test { file("/var/log/test"); };
log { source(s_test); destination(d_test); };
syslog
그래도 원격 장치 에 필요한지 는 모르겠습니다 network
.