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
Mac环境Nginx配置和访问本地静态资源的实现
Mar 31 Servers
配置nginx 重定向到系统维护页面
Jun 08 Servers
Rhit高效可视化Nginx日志查看工具
Nov 01 Servers
Nginx禁止ip访问或非法域名访问
Apr 07 Servers
Nginx配置根据url参数重定向
Apr 11 Servers
Tomcat执行startup.bat出现闪退的原因及解决办法
Apr 20 Servers
Tomcat弱口令复现及利用
May 06 Servers
Linux磁盘管理方法介绍
Jun 01 Servers
nginx代理实现静态资源访问的示例代码
Jul 07 Servers
Nginx如何配置根据路径转发详解
Jul 23 Servers
Flink 侧流输出源码示例解析
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
thinkPHP5实现数据库添加内容的方法
2017/10/25 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
2018/04/09 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
鼠标图片振动代码
2006/07/06 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
javascript实现table表格隔行变色的方法
2015/05/13 Javascript
CSS图片响应式 垂直水平居中
2015/08/14 Javascript
使用jQuery mobile库检测url绝对地址和相对地址的方法
2015/12/04 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
uploader秒传图片到服务器完整代码
2017/04/22 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
2018/01/08 Javascript
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
vue项目中,main.js,App.vue,index.html的调用方法
2018/09/20 Javascript
Vue项目History模式404问题解决方法
2018/10/31 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
Vue中的this.$options.data()和this.$data用法说明
2020/07/26 Javascript
Python下载懒人图库JavaScript特效
2015/05/28 Python
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
2019/06/26 Python
Python 实现数组相减示例
2019/12/27 Python
Python实现简单的猜单词小游戏
2020/10/28 Python
详解anaconda安装步骤
2020/11/23 Python
HTML5之SVG 2D入门6—视窗坐标系与用户坐标系及变换概述
2013/01/30 HTML / CSS
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
联想新西兰官方网站:Lenovo New Zealand
2018/10/30 全球购物
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
私有程序集与共享程序集有什么区别
2013/04/05 面试题
个人简历自我评价范文
2014/02/04 职场文书
爱情寄语大全
2014/04/09 职场文书
师德自我剖析材料范文
2014/10/06 职场文书
学校党委干部个人对照检查材料思想汇报
2014/10/09 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书
详解Mysql 函数调用优化
2021/04/07 MySQL
html中两种获取标签内的值的方法
2022/06/10 HTML / CSS
Python创建SQL数据库流程逐步讲解
2022/09/23 Python