转发apache日志时,远程syslog服务器未从syslog-ng获取IP地址

时间:2019-08-26 21:43:53

标签: syslog-ng

我正在使用syslog-ng服务器将我的apache access_log转发到rsyslog服务器。

这是我的syslog-ng.conf文件的相关部分

this.state.exhausted === true

问题是syslog-ng在发送的数据中不包含apache access_log文件的IP地址。

例如,我的apache access_log文件中的行如下所示:

source s_http {
    file("/var/log/httpd/access_log" program-override("apache_access_log"));
};

...

destination loghost { tcp("10.0.0.48" port(514)); };

...

log { source(s_http); destination(loghost); };

在远程rsyslog上显示为:

10.0.0.181 - oauthuser [26/Aug/2019:21:40:02 +0000] "POST /api/v1/vm/event/ HTTP/1.1" 201 392 "-" "python-requests/2.22.0"

我用 - oauthuser [26/Aug/2019:21:40:02 +0000] "POST /api/v1/vm/event/ HTTP/1.1" 201 392 "-" "python-requests/2.22.0" 验证了IP地址不在输出数据包中,因此出于某种原因删除了syslog-ng。

我在这里做什么错了?

2 个答案:

答案 0 :(得分:1)

如果您使用的不是很旧的syslog-ng版本,它应该具有专用的解析器来解析apache访问日志以达到目的:http://support.oneidentity.com/technical-documents/syslog-ng-open-source-edition/administration-guide/parser-parse-and-segment-structured-messages/apache-access-log-parser

答案 1 :(得分:0)

我必须像这样使用no-parse选项:

source s_http {
    file("/var/log/httpd/access_log" program-override("apache_access_log") flags("no-parse"));
};