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); };