다음의 제안을 기반으로 합니다.답변물론:두 개의 서버를 추가하고 항상 두 서버 모두에 쓰는 것이 가장 간단한 방법입니다.,
우리는 설정했습니다시스템 로그-NG서버가 시작됩니다두 대의 기계동일한 syslog 메시지가 all_devices.log
두 시스템(RHEL 7.x) 모두에서 수신되고 저장됩니다.
두 컴퓨터의 구성은 다음과 같습니다.
@version: 3.17
source s_network {
udp(
flags(syslog_protocol)
keep_hostname(yes)
keep_timestamp(yes)
use_dns(no)
use_fqdn(no)
);
};
destination d_all_logs {
file("/app/syslog-ng/custom/output/all_devices.log");
};
log {
source(s_network);
destination(d_all_logs);
};
한 단계 더 나아가 아래와 같이 필터링 규칙을 기반으로 특정 소비자에게 syslog 메시지를 전달하려고 합니다.
log { source(s_network); filter(f_warn); destination(remote_log_server); };
그러나 remote_log_server
동일한 메시지를 전달하는 두 개의 syslog 서버이기 때문에 각 메시지에 대해 두 개의 메시지를 받게 됩니다.
Syslog-NG 구성에서는 두 메시지의 중복 제거를 하나의 syslog 메시지로 허용합니까?
답변1
Syslog-ng는 이를 지원하지 않습니다. 두 서버를 통해 동시에 세 번째 서버로 전달하고 그곳에서 중복 제거를 수행해야 하는 경우 중복 제거를 수행하려면 다른 소프트웨어나 추가 소프트웨어를 사용해야 합니다.
이 경우 연결된 답변에서 세 번째 옵션을 고려하겠습니다. haproxy를 사용하여 syslog 메시지를 한 번에 두 개의 중복 서버 중 하나로만 전달하는 것입니다.