【问题标题】:remote syslog server not getting IP address from syslog-ng when forwarding apache log远程 syslog 服务器在转发 apache 日志时未从 syslog-ng 获取 IP 地址
【发布时间】:2019-08-26 21:43:53
【问题描述】:

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

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

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); };

问题在于 syslog-ng 在它发送的数据中没有包含来自 apache access_log 文件的 IP 地址。

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

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"

在远程 rsyslog 上结束为:

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

我通过tcpdump 验证了 IP 地址不在输出数据包中,因此出于某种原因删除了 syslog-ng。

我在这里做错了什么?

【问题讨论】:

    标签: syslog-ng


    【解决方案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

    【讨论】:

      【解决方案2】:

      我不得不像这样使用no-parse 选项:

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

      【讨论】:

        猜你喜欢
        • 2015-05-04
        • 2019-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-27
        • 2011-09-06
        相关资源
        最近更新 更多