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设置日志打印post请求参数的方法
Mar 31 Servers
Nginx URL重写rewrite机制原理及使用实例
Apr 01 Servers
Nginx部署vue项目和配置代理的问题解析
Aug 04 Servers
Nginx下SSL证书安装部署步骤介绍
Dec 06 Servers
Apache Hudi数据布局黑科技降低一半查询时间
Mar 31 Servers
利用nginx搭建RTMP视频点播、直播、HLS服务器
May 25 Servers
V Rising 服务器搭建图文教程
Jun 16 Servers
Linux下搭建SFTP服务器的命令详解
Jun 25 Servers
Nginx配置使用详解
Jul 07 Servers
本地搭建minio文件服务器(使用bat脚本启动)的方法
Jul 15 Servers
Docker容器harbor私有仓库部署和管理
Aug 05 Servers
ubuntu如何搭建vsftpd服务器
Dec 24 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 smarty模版引擎中变量操作符及使用方法
2009/12/11 PHP
PHP性能优化 产生高度优化代码
2011/07/22 PHP
php中cookie实现二级域名可访问操作的方法
2014/11/11 PHP
PHP实现随机生成水印图片功能
2017/03/22 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
Javascript 事件流和事件绑定
2009/07/16 Javascript
JavaScript this 深入理解
2009/07/30 Javascript
jcrop基本参数一览
2013/07/16 Javascript
浅析jquery的作用与优势
2013/12/02 Javascript
为指定的元素添加遮罩层的示例代码
2014/01/15 Javascript
express的中间件basicAuth详解
2014/12/04 Javascript
Javascript常用小技巧汇总
2015/06/24 Javascript
jQuery手机拨号界面特效代码分享
2015/08/27 Javascript
Vue实现virtual-dom的原理简析
2017/07/10 Javascript
微信小程序删除处理详解
2017/08/16 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
vue2使用keep-alive缓存多层列表页的方法
2018/09/21 Javascript
详解JS浏览器事件循环机制
2019/03/27 Javascript
js变量值传到php过程详解 将php解析成数据
2019/06/26 Javascript
layUI实现列表查询功能
2019/07/27 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
js实现简单的倒计时
2021/01/28 Javascript
Python如何实现守护进程的方法示例
2017/02/08 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
pycham查看程序执行的时间方法
2018/11/29 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
Python正则表达式高级使用方法汇总
2020/06/18 Python
python3中布局背景颜色代码分析
2020/12/01 Python
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
师德个人剖析材料
2014/02/02 职场文书
爱耳日活动总结
2014/04/30 职场文书
通知函的格式
2015/04/27 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
python实现简单的三子棋游戏
2022/04/28 Python