在 syslog-ng 中过滤 dpkg 日志

在 syslog-ng 中过滤 dpkg 日志

我是 的新手syslog-ng,我正在设置syslog-ng,其中我接收syslogauth.log和的日志dpkg.log。虽然我能够获取syslog和的日志auth.log,但我无法将dpkg日志写入单独的文件,并且它会同时写入dpkg日志文件和syslog日志文件中。服务器的配置文件如下:

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 字段。因此,我认为解决问题的最简单方法是:

高血压

相关内容