通过ELK实现Nginx日志字段扩展

通过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,干货满满,专业老司机教你搞"对象"存储!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180508G10G7G00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券