Filebeat 采集 Nginx 日志的方法


Posted in Servers onMarch 31, 2021

Nginx 日志可用于分析用户地址位置,行为画像等,如何通过 Elastic Stack 进行一站式的数据采集,数据清洗,数据落地,数据可视化,让数据发挥真正的价值呢?

架构设计

涉及到 Elastic Stack 中 Filebeat 是用于采集 Nginx 相关的日志, Elasticsearch 是用于对于数据落地存储和搜索的引擎, Kibana 是用于对数据可视化的工具。

在 Nginx 中相关的日志是存储在 /var/log/nginx 目录下的,分别是访问日志 access.log,错误日志 error.log。

Filebeat 采集 Nginx 日志的方法

如果是裸机环境下,可以直接在同一主机下安装 Filebeat 针对日志文件进行采集。
如果是 Docker 环境下,建议 Nginx 使用 Volume 的方式进行共享日志文件给 Filebeat 采集。
如果是 Kubernetes 环境下,建议在 Pod 中添加 Filebeat Container进行对 PV 采集。

针对不同场景有不同的采集方案,有些可以利用Daemonset采集宿主机上的日志,有些是以Sidecar方式进行采集,具体视业务场景而定。

实施方法

以 Docker 环境下为例

Nginx

创建存储卷,便于 Nginx 和 Filebeat 容器共同挂载
docker volume create nginx-log-volume

启动 Nginx 容器,并且将存储卷映射到日志目录
docker run -d --name nginx -p 80:80 -v nginx-log-volume:/var/log/nginx nginx:latest

进入容器修改配置
docker exec -it nginx /bin/bash

由于容器环境下,默认的日志会输入到stdout,所以取消该设置并指定文件
unlink /var/log/nginx/access.log
unlink /var/log/nginx/error.log
touch /var/log/nginx/access.log /var/log/nginx/error.log
nginx -s reload

Filebeat

启动 Filebeat 容器,并且将存储卷映射到数据目录
docker run -d --name filebeat --user=root -v nginx-log-volume:/data elastic/filebeat:7.9.2

进入容器修改配置
docker exec -it filebeat /bin/bash

修改配置,添加 Elasticsearch 和 Kibana 的主机
vi filebeat.yml

filebeat.config:
 modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false

processors:
 - add_cloud_metadata: ~
 - add_docker_metadata: ~

output.elasticsearch:
 hosts: 'elasticsearch:9200'
 username: "elastic"
 password: "xxx"
setup.kibana:
 host: "kibana:5601"

 

启用 Nginx 采集模块

filebeat modules enable nginx

编辑 Nginx 采集配置
vi modules.d/nginx.yml

- module: nginx
 access:
  enabled: true
  var.paths: ["/data/access.log*"]
 error:
  enabled: true
  var.paths: ["/data/error.log*"]

 

设置 Filebeat 创建 Kibana上的 Index Pattern 和 Dashboard
filebeat setup

重启 Filebeat 生效配置
docker restart filebeat

可视化展示

通过 Kibana 中的 Dashboard 功能
展示 Nginx 对于日志的访问情况及用户地址位置、浏览器信息

Filebeat 采集 Nginx 日志的方法

展示 Nginx 对于访问日志和错误日志的具体请求信息

Filebeat 采集 Nginx 日志的方法

Servers 相关文章推荐
本地通过nginx配置反向代理的全过程记录
Mar 31 Servers
nginx实现发布静态资源的方法
Mar 31 Servers
nginx里的rewrite跳转的实现
Mar 31 Servers
Nginx反向代理及负载均衡如何实现(基于linux)
Mar 31 Servers
Nginx 根据URL带的参数转发的实现
Apr 01 Servers
Apache Hudi数据布局黑科技降低一半查询时间
Mar 31 Servers
Docker 镜像介绍以及commit相关操作
Apr 13 Servers
Ubuntu Server 安装Tomcat并配置systemctl
Apr 28 Servers
nginx 添加http_stub_status_module模块
May 25 Servers
netty 实现tomcat的示例代码
Jun 05 Servers
Flink 侧流输出源码示例解析
Sep 23 Servers
教你使用Ubuntu搭建DNS服务器
Sep 23 Servers
如何利用map实现Nginx允许多个域名跨域
Mar 31 #Servers
Nginx 过滤静态资源文件的访问日志的实现
Mar 31 #Servers
Nginx的反向代理实例详解
nginx反向代理时如何保持长连接
Mar 31 #Servers
Nginx + consul + upsync 完成动态负载均衡的方法详解
Mar 31 #Servers
浅谈Nginx 中的两种限流方式
Mar 31 #Servers
查看nginx配置文件路径和资源文件路径的方法
Mar 31 #Servers
You might like
PHP新手上路(九)
2006/10/09 PHP
php使用curl检测网页是否被百度收录的示例分享
2014/01/31 PHP
php之curl实现http与https请求的方法
2014/10/21 PHP
php操作memcache缓存方法分享
2015/06/03 PHP
PHP加密技术的简单实现
2016/09/04 PHP
支持ie与FireFox的剪切板操作代码
2009/09/28 Javascript
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
基于jQuery实现中英文切换导航条效果
2016/09/18 Javascript
微信小程序  网络请求API详解
2016/10/25 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
canvas绘制表盘时钟
2017/01/23 Javascript
深究AngularJS之ui-router详解
2017/06/13 Javascript
vue 页面加载进度条组件实例
2018/02/05 Javascript
JS 验证码功能的三种实现方式
2018/11/26 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
详解vue中v-bind:style效果的自定义指令
2020/01/21 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
python实现月食效果实例代码
2019/06/18 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
python dict乱码如何解决
2020/06/07 Python
基于python实现删除指定文件类型
2020/07/21 Python
python安装mysql的依赖包mysql-python操作
2021/01/01 Python
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
澳大利亚最大的在线美发和美容零售商之一:My Hair Care & Beauty
2019/08/24 全球购物
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
房地产管理毕业生自荐信
2013/11/04 职场文书
教师绩效考核方案
2014/01/21 职场文书
收银员岗位职责
2014/02/07 职场文书
2014党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
初二英语教学反思
2016/02/15 职场文书
详解CSS不受控制的position fixed
2021/05/25 HTML / CSS
Python selenium的这三种等待方式一定要会!
2021/06/10 Python
Python常遇到的错误和异常
2021/11/02 Python
「天才王子的赤字国家重生术」妮妮姆·拉雷粘土人开订
2022/03/21 日漫
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python