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 相关文章推荐
如何利用map实现Nginx允许多个域名跨域
Mar 31 Servers
win10安装配置nginx的过程
Mar 31 Servers
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
Mar 31 Servers
Apache Calcite 实现方言转换的代码
Apr 24 Servers
使用Nginx搭载rtmp直播服务器的方法
Oct 16 Servers
nginx中proxy_pass各种用法详解
Nov 07 Servers
Z-Order加速Hudi大规模数据集方案分析
Mar 31 Servers
Vscode中SSH插件如何远程连接Linux
May 02 Servers
Nginx报错104:Connection reset by peer问题的解决及分析
Jul 23 Servers
win7配置本地ftp服务器的图文教程
Aug 05 Servers
解决ubuntu安装软件时,status-code=409报错的问题
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
Email+URL的判断和自动转换函数
2006/10/09 PHP
php的大小写敏感问题整理
2011/12/29 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
php微信公众号js-sdk开发应用
2016/11/28 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
2014/04/11 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
jQuery双向列表选择器DIV模拟版
2016/11/01 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
2016/11/10 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
yii form 表单提交之前JS在提交按钮的验证方法
2017/03/15 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
微信小程序如何获取用户信息
2018/01/26 Javascript
JS实现的合并多个数组去重算法示例
2018/04/11 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
javascript的this关键字详解
2019/05/20 Javascript
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
jquery实现烟花效果(面向对象)
2020/03/10 jQuery
Vue组件间的通信pubsub-js实现步骤解析
2020/03/11 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
2019/12/26 Python
解决python运行效率不高的问题
2020/07/20 Python
芬兰攀岩、山地运动和户外活动用品购物网站:Bergfreunde
2016/10/06 全球购物
JBL英国官网:JBL UK
2018/07/04 全球购物
商务英语大学生职业生涯规划书范文
2014/01/01 职场文书
年级组长自我鉴定
2014/02/22 职场文书
党员三严三实对照检查材料
2014/10/13 职场文书
redis复制有可能碰到的问题汇总
2022/04/03 Redis