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_cache 缓存配置详解
Mar 31 Servers
扩展多台相同的Web服务器
Apr 01 Servers
nginx反向代理配置去除前缀案例教程
Jul 26 Servers
Nginx内网单机反向代理的实现
Nov 07 Servers
nginx中封禁ip和允许内网ip访问的实现示例
Mar 17 Servers
Linux、ubuntu系统下查看显卡型号、显卡信息详解
Apr 07 Servers
Consul在linux环境的集群部署
Apr 08 Servers
微信告警的zabbix监控系统 监控整个NGINX集群
Apr 18 Servers
Windows server 2012搭建FTP服务器
Apr 29 Servers
教你如何用cmd快速登录服务器
Jun 10 Servers
安装harbor作为docker镜像仓库的问题
Jun 14 Servers
GPU服务器的多用户配置方法
Jul 07 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字符过滤函数去除字符串最后一个逗号(rtrim)
2013/03/26 PHP
一个比较不错的PHP日历类分享
2014/11/18 PHP
php不使用copy()函数复制文件的方法
2015/03/13 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
织梦sitemap地图实时推送给百度的教程
2015/08/03 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
php socket通信简单实现
2016/11/18 PHP
PHP中的Iterator迭代对象属性详解
2019/04/12 PHP
javascript学习网址备忘
2007/05/29 Javascript
JScript 脚本实现文件下载 一般用于下载木马
2009/10/29 Javascript
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
Jquery时间轴特效(三种不同类型)
2015/11/02 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
2017/07/03 Javascript
详解vue前后台数据交互vue-resource文档
2017/07/19 Javascript
template.js前端模板引擎使用详解
2017/10/10 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
2020/04/27 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
使用Python编写基于DHT协议的BT资源爬虫
2016/03/19 Python
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
python字典值排序并取出前n个key值的方法
2018/10/17 Python
python自动化生成IOS的图标
2018/11/13 Python
Python实现的批量修改文件后缀名操作示例
2018/12/07 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
基于Tensorflow:CPU性能分析
2020/02/10 Python
OpenCV图片漫画效果的实现示例
2020/08/18 Python
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
奇怪的鱼:Weird Fish
2018/03/18 全球购物
英语求职信范文
2014/05/23 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
C3 线性化算法与 MRO之Python中的多继承
2021/10/05 Python