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中break与last的区别详析
Mar 31 Servers
nginx简单配置多个server的方法
Mar 31 Servers
Nginx 根据URL带的参数转发的实现
Apr 01 Servers
nginx限制并发连接请求数的方法
Apr 01 Servers
nginx作grpc的反向代理踩坑总结
Jul 07 Servers
nginx配置虚拟主机的详细步骤
Jul 21 Servers
使用kubeadm命令行工具创建kubernetes集群
Mar 31 Servers
基于Apache Hudi在Google云构建数据湖平台的思路详解
Apr 07 Servers
Linux下使用C语言代码搭建一个简单的HTTP服务器
Apr 13 Servers
tomcat默认最大连接数及相关调整方法
May 06 Servers
docker 制作mysql镜像并自动安装
May 20 Servers
V Rising 服务器搭建图文教程
Jun 16 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 JSON格式数据交互实例代码详解
2011/01/13 PHP
PHP插入排序实现代码
2013/04/04 PHP
php结合md5的加密解密算法实例
2016/09/30 PHP
jQuery+php简单实现全选删除的方法
2016/11/28 PHP
在Laravel 的 Blade 模版中实现定义变量
2019/10/14 PHP
Extjs入门之动态加载树代码
2010/04/09 Javascript
你必须知道的Javascript知识点之"深入理解作用域链"的介绍
2013/04/23 Javascript
JavaScript使用HTML5的window.postMessage实现跨域通信例子
2014/04/11 Javascript
js鼠标滑过图片震动特效的方法
2015/02/17 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
2016/12/21 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
2017/01/04 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
PYTHON 中使用 GLOBAL引发的一系列问题
2016/10/12 Python
通过python爬虫赚钱的方法
2019/01/29 Python
django认证系统 Authentication使用详解
2019/07/22 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
Python中print函数简单使用总结
2019/08/05 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
详解Python高阶函数
2020/08/15 Python
python中如何打包用户自定义模块
2020/09/23 Python
SmartBuyGlasses丹麦:网上购买名牌太阳镜、眼镜和隐形眼镜
2016/10/01 全球购物
表扬信格式
2014/01/12 职场文书
给医务人员表扬信
2014/01/12 职场文书
班组长岗位职责
2014/03/03 职场文书
阳光体育活动总结
2014/04/30 职场文书
文明班集体申报材料
2014/05/23 职场文书
公司离职证明标准范本
2014/10/05 职场文书
教师党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
2014年安全员工作总结
2014/11/13 职场文书
小学少先队辅导员述职报告
2015/01/10 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书