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使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
Apr 04 Servers
Nginx 路由转发和反向代理location配置实现
Nov 11 Servers
详解nginx安装过程并代理下载服务器文件
Feb 12 Servers
使用Docker容器部署rocketmq单机的全过程
Apr 03 Servers
IIS服务器中设置HTTP重定向访问HTTPS
Apr 29 Servers
nginx 配置指令之location使用详解
May 25 Servers
shell进度条追踪指令执行时间的场景分析
Jun 16 Servers
Nginx文件已经存在全局反向代理问题排查记录
Jul 15 Servers
centos环境下nginx高可用集群的搭建指南
Jul 23 Servers
Centos7 Shell编程之正则表达式、文本处理工具详解
Aug 05 Servers
VMware虚拟机安装 Windows Server 2022的详细图文教程
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 cron中的批处理
2008/09/16 PHP
php文本转图片自动换行的方法
2013/03/13 PHP
ThinkPHP应用模式扩展详解
2014/07/16 PHP
Linux下php5.4启动脚本
2014/08/03 PHP
PHP扩展模块memcached长连接使用方法分析
2014/12/24 PHP
php微信公众号开发之简答题
2018/10/20 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
2020/01/26 PHP
给moz-firefox下添加IE方法和属性
2007/04/10 Javascript
jQuery 一个图片切换的插件
2011/10/09 Javascript
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
JavaScript表单焦点自动切换代码
2016/07/24 Javascript
jQuery中fadein与fadeout方法用法示例
2016/09/16 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
AngularJs 终极购物车(实例讲解)
2017/11/08 Javascript
基于模板引擎Jade的应用(详解)
2017/12/12 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
2018/12/24 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
2020/11/26 Vue.js
[01:19]DOTA2城市挑战赛报名开始 开启你的城市传奇
2018/03/23 DOTA
跟老齐学Python之网站的结构
2014/10/24 Python
python执行子进程实现进程间通信的方法
2015/06/02 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
2019/08/18 Python
Python虚拟环境venv用法详解
2020/05/25 Python
The Hut英国:英国领先的豪华在线百货商店
2019/07/26 全球购物
EJB的基本架构
2016/09/22 面试题
构造方法和其他方法的区别
2016/04/26 面试题
应届大学生求职信
2013/12/01 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
旷工辞退通知书
2015/04/17 职场文书
优秀教师主要事迹材料
2015/11/04 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
如何使用pdb进行Python调试
2021/06/30 Python
nginx常用配置conf的示例代码详解
2022/03/21 Servers