数据流从 Nginx 访问日志 -> Rsyslog 或 Syslog -> Fluentd -> Kinesis

Data flow from Nginx access log -> Rsyslog or Syslog -> Fluentd -> Kinesis

我正在努力将 nginx 访问日志传递到 Fluentdaws kinesisAWS S3 via kinesis firehose。在 log rotation 期间,nginx 日志将被推送到 AWS Glacier

我正处于需要通过 syslog/rsyslog 将 nginx 访问日志传递给 fluentd 的初始步骤。

使用的Nginx版本是1.14。

我的 OS 是:

NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"

有很多方法可以将nginx日志推送到rsyslog。

方式 1: 使用模块 imfile 并更新 rsyslog.conf,如 https://petermolnar.net/log-nginx-to-rsyslog/

所示

方法 2: 更新 nginx.conf 以直接写入系统日志。我担心这会在高流量期间减慢 nginx 的速度。 https://docs.nginx.com/nginx/admin-guide/monitoring/logging/#logging-to-syslog

方式三:跳过rsyslog/syslog,直接通过模块https://github.com/fluent/nginx-fluentd-module将nginx的数据传给fluentd。在这里我担心这个模块是否可靠以及 nginx 是否应该因为使用这个模块而变得不那么敏感。

What is the best way to achieve the goal , the goal is for realtime data flow from nginx access logs to fluentd , without blocking nginx to serve requests.

一个多月没有回复,分享一下我选择的方式。

使用模块 imfile 并更新 rsyslog.conf,如 https://petermolnar.net/log-nginx-to-rsyslog/

所示