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配置proxy_pass中url末尾带/与不带/的区别详解
Mar 31 Servers
Apache Calcite 实现方言转换的代码
Apr 24 Servers
Linux安装apache服务器的配置过程
Nov 27 Servers
Kubernetes中Deployment的升级与回滚
Apr 01 Servers
Nginx配置之禁止指定IP访问
May 02 Servers
阿里云服务器Ubuntu 20.04上安装Odoo 15
May 20 Servers
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
Jun 01 Servers
vscode远程免密登入Linux服务器的配置方法
Jun 28 Servers
Windows Server 2008配置防火墙策略详解
Jun 28 Servers
kubernetes集群搭建Zabbix监控平台的详细过程
Jul 07 Servers
Apache Kafka 分区重分配的实现原理解析
Jul 15 Servers
修改Nginx配置返回指定content-type的方法
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
怎么样可以把 phpinfo()屏蔽掉?
2006/11/24 PHP
PHP实现货币换算的方法
2014/11/29 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
PHP实现的文件操作类及文件下载功能示例
2016/12/24 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
function foo的原型与prototype属性解惑
2010/11/19 Javascript
window.dialogArguments 使用说明
2011/04/11 Javascript
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
Jquery实现纵向横向菜单
2016/01/24 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
2016/12/14 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
微信小程序页面传值实例分析
2017/04/19 Javascript
JS实现图片预览的两种方式
2017/06/27 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
小程序自定义日历效果
2018/12/29 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
解决antd的Form组件setFieldsValue的警告问题
2020/10/29 Javascript
[01:07:57]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第二场 1月19日
2021/03/11 DOTA
Python下使用Psyco模块优化运行速度
2015/04/05 Python
python hook监听事件详解
2018/10/25 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
HTML5单页面手势滑屏切换原理分析
2017/07/10 HTML / CSS
Farah官方网站:男士服装及配件
2019/11/01 全球购物
法学专业自我鉴定
2014/02/05 职场文书
计算机求职自荐信范文
2014/04/19 职场文书
中学学校门卫岗位职责
2014/08/15 职场文书
军人离婚协议书样本
2014/10/21 职场文书
党性分析材料格式
2014/12/19 职场文书
学风建设主题班会
2015/08/17 职场文书
Pygame Time时间控制的具体使用详解
2021/11/17 Python