我正在使用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。
我在这里做什么错了?
答案 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"));
};