我是 的新手syslog-ng
,我正在设置syslog-ng
,其中我接收syslog
、auth.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 字段。因此,我认为解决问题的最简单方法是:
- 在客户端的源 s_dpkg 中使用 program-override("dpkg") 选项(https://www.balabit.com/documents/syslog-ng-ose-latest-guides/en/syslog-ng-ose-guide-admin/html/reference-source-file.html#idm45439656585216)正确设置 dpkg 消息中的 PROGRAM 字段
- 在服务器上,使用程序(“dpkg”)过滤器而不是标签过滤器。
高血压