通过ELK实现Nginx日志字段扩展
需求描述
在日常访问RGW过程中,一般会在RGW前端架设Nginx,并通过Nginx日志来统计或者分析用户请求,但是默认Nginx日志字段是不含bucket_name的,如何通过ELK组件来实现对Nginx日志字段进行补充,添加上bucket_name字段呢?于是就有了下面的内容。
基本原理
通常访问一个S3的资源,我们可以使用两种类型的URL格式
虚拟主机格式(virtual-hosted style)-> GET http://bucket_name.s3.demo.local/objectname
相对路径格式 (path-style)-> GET http://s3.demo.local/bucket_name/objectname
而在Nginx日志中可以通过http_host和request_uri字段来判断请求具体属于上面的哪种类型。
ELK日志处理流程
Nginx的Access Log以JSON格式进行保存,然后通过Filebeat推送到Kafka,之后再由Logstash拉取数据并处理后存储到ES。
操作流程
为缩小篇幅,下面操作中减少了kafka和ES,直接从Filebeat->Logstash进行日志处理
Nginx日志设置
nginx日志配置如下
Filebeat设置
Logstash设置
以endpoint -> demo.local为例
最终效果
模拟客户端virtual-hosted style方式访问
输出如下
模拟客户端path style方式访问
输出如下
欢迎订阅本公众号cephbook,干货满满,专业老司机教你搞"对象"存储!
领取 专属20元代金券
Get大咖技术交流圈