我想将 nginx 日志文件(在一台服务器上)发送到 redis(在第二台服务器上)以便稍后使用 logstash(在第三台服务器上)处理它,但我有点迷路了
我正在使用 redis 作为缓冲区,以防万一 logstash 服务器因维护或任何其他原因而宕机时不会丢失任何数据
最佳答案
我就是这样解决的,
我让 nginx 登录到 syslog 服务器,并从 syslog-ng 登录到 redis
这是我的配置
在 nginx http
指令中
log_format xxx_log_format '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" "$gzip_ratio"';
在 nginx server
指令中
access_log syslog:server=127.0.0.1:601 xxx_log_format;
在 syslog-ng 配置中
source s_syslog {
udp(
port(601)
);
};
destination d_redis {
redis(
host("REDIS-IP")
port(6379)
command("LPUSH", "access_logs", "${MESSAGE}")
);
};
log {
source(s_syslog);
destination(d_redis);
};
关于logstash - nginx 日志到 redis 到 logstash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39977532/