syslog-ng에서 dpkg 로그 필터링

syslog-ng에서 dpkg 로그 필터링

나는 을(를 syslog-ng) 처음 사용하고 을(를) 설정하고 있으며 , 여기서 , 및 syslog-ng의 로그를 수신하고 있습니다 . 및 에 대한 로그를 얻을 수 있었지만 별도의 파일에 로그를 쓸 수 없으며 로그 파일과 로그 파일 모두에 기록되고 있습니다 . 서버의 구성 파일은 다음과 같습니다.syslogauth.logdpkg.logsyslogauth.logdpkgdpkgsyslog

options {
    create_dirs(yes);
    owner(root);
    group(root);
    perm(0640);
    dir_owner(root);
    dir_group(root);
    dir_perm(0750);
};

source s_dl {
   network (
   transport("tcp")
   port(3993)
);
};

filter f_dpkg{
    tags("dpkg");
};

destination d_host-specific {

  file("/var/log/servers/$HOST/$YEAR/$MONTH/$HOST-$YEAR-$MONTH-$DAY.log");
};

destination d_syslog {
        file("/var/log/servers/$HOST/$YEAR/$MONTH/$HOST-$YEAR-$MONTH-$DAY-syslog.log");
};

destination d_dpkg {
    file("/var/log/servers/$HOST/$YEAR/$MONTH/$HOST-$YEAR-$MONTH-$DAY-dpkg.log");
};

log {
    source(s_dl);
    filter(f_auth);
    destination(d_host-specific);
};

log {
    source(s_dl);
    filter(f_syslog3);
    destination(d_syslog);
 };

log{
    source(s_dl);
    filter(f_dpkg);
    destination(d_dpkg);
};

syslog-ng 클라이언트의 구성 파일은 다음과 같습니다.

 source s_dpkg {
   file('/var/log/dpkg.log'); tags('dpkg'));
 };
 destination d_net { tcp("192.168.48.15" port(3993)); };
 filter f_tag { tags("dpkg"); };
 log { source(s_src); filter(f_auth); destination(d_net);};
 log { source(s_src); filter(f_syslog3); destination(d_net);};
 log { source(s_dpkg); filter(f_test); destination(d_net);};

누구든지 내 실수가 어디에 있는지 또는 세부 정보를 얻는 적절한 방법이 무엇인지 지적할 수 있습니까? 참고: 동일한 시스템의 다른 로그를 허용하기 위해 새 포트를 계속 추가할 수 없으므로 단일 호스트의 모든 로그를 허용하려면 동일한 포트를 사용해야 합니다.

답변1

문제는 클라이언트가 dpkg 메시지에 추가한 태그가 원본 메시지의 일부가 아니기 때문에 서버 측으로 전송되지 않는다는 것입니다.

또한 원래 dpkg 로그가 syslog 메시지의 PROGRAM 필드를 채우지 않기 때문에 이 전체 태그 지정이 필요한 것 같습니다. 따라서 IMHO 문제를 해결하는 가장 쉬운 방법은 다음과 같습니다.

HTH

관련 정보