syslog-ng가 파일에 쓰지 않음

syslog-ng가 파일에 쓰지 않음

저는 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(다음 메시지는 systemdCentos 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.

관련 정보