
syslog-ng를 사용하여 각 애플리케이션의 로그를 원격 수집기로 보내고 싶습니다.
Apache가 있는 경우 Apache 로그를 파일의 원격 수집기로 전송하고 싶습니다 /var/log/apache.log
.
나는 이것에 대해 아무것도 찾을 수 없었습니다. rsyslog로 가능하다는 것을 알고 있지만 여기서 할 수 있는 유일한 일은 다음과 함께 모든 로그를 보내는 것입니다.
destination remote { network("<collector_adress>" transport("udp") port(514)); };
답변1
syslog-ng를 사용하여 파일에서 로그를 수집하려면 파일 소스를 생성하고 이를 로그 문에 추가해야 합니다. 이 같은:
source s_apache {
file("/var/log/apache.log");
};
log {
source(s_apache); destination(remote);
};
다른 파일에서도 로그를 수집하려면 추가 소스를 정의하고 이를 로그 문에 추가하세요. 여러 다른 로그 파일(예: 타임스탬프가 지정된 로그 파일)에 로그인하는 애플리케이션이 있는 경우 와일드카드 파일 소스를 사용할 수 있습니다. 자세한 내용은 문서를 확인하세요.https://www.syslog-ng.com/technical-documents/doc/syslog-ng-open-source-edition/3.21/administration-guide/16#TOPIC-1180423
답변2
나는 당신이 에서와 같은 접근 방식을 사용할 수 있다고 생각합니다Syslog-ng - 클라이언트에서 서버로 파일 이름 보내기.
syslog-ng의 클라이언트 측 구성 -
file("/var/log/shell.log" log_prefix("shell: "));
syslog-ng의 서버 측 구성 -
filter f_shell { match("shell" value("MSGHDR")); };
destination d_shell { file("/var/log/syslog-ng/shell.log"); };
log { source(demo_tls_src); filter(f_shell); destination(d_shell); flags(final); };