之前咱们搭建的 ELK 日志收集零碎,次要是用来收集 SpringBoot 利用的日志。其原理是利用通过 Logstash 插件,应用 TCP 向 Logstash 传输日志,从而存储到 Elasticsearch 中去。然而有很多中间件的日志都是间接存储在文件中的,比方
Nginx
、Elasticsearch
和MySQL
,此时咱们就须要一个搬运工来把日志搬到 Elasticsearch 中去,Filebeat 正是这样一个日志搬运工,本文将具体介绍它的应用办法,心愿对大家有所帮忙。
SpringBoot 实战电商我的项目 mall(40k+star)地址:https://github.com/macrozheng/mall
Filebeat 简介
Filebeat 是一款轻量级日志采集器,可用于转发和汇总日志与文件。Filebeat 内置有多种模块(Nginx、MySQL、Redis、Elasticsearch、Logstash 等),可针对常见格局的日志大大简化收集、解析和可视化过程,只需一条命令即可。
Filebeat 装置及配置
装置 Filebeat 之前,咱们须要先装置好 Elasticsearch 和 Kibana,具体参考《你竟然还去服务器上捞日志,搭个日志收集零碎难道不香么!》,留神应用 7.6.2 版本。
- 咱们先下载 Filebeat 的安装包,下载地址:https://www.elastic.co/cn/dow…
- 下载实现后解压到指定目录,留神图中所示的三个中央;
- Kibana 中早就提供好了 Filebeat 收集各种日志的教程,咱们先进入首页,拜访地址:http://localhost:5601/app/kibana#/home
- 点击
Add log data
按钮,能够发现反对的中间件还是很丰盛的,涵盖了罕用的;
- 点开 Nginx 的日志收集教程看下,是不是很具体;
- 接下来咱们就要开始配置 Filebeat 了,配置好 Elasticsearch 和 Kibana 的连贯地址,批改 Filebeat 的装置目录下的配置文件
filebeat.yml
即可,批改内容如下。
output.elasticsearch:
hosts: ["localhost:9200"]
setup.kibana:
host: "localhost:5601"
收集 Nginx 日志
咱们先拿 Nginx 来练练手,体验下 Filebeat 的日志收集性能吧。
- 应用如下命令开启 Filebeat 的 Nginx 日志收集模块;
filebeat modules enable nginx
- 开启实现后,进入
modules.d
目录下,你会发现nginx.yml
的disable
后缀没有了,阐明曾经被开启;
- 接下来批改
nginx.yml
文件,配置好 Nginx 的access
和error
日志门路;
# Module: nginx
# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.6/filebeat-module-nginx.html
- module: nginx
access:
enabled: true
var.paths: ["I:/developer/env/nginx-1.8.1/logs/access.log"]
error:
enabled: true
var.paths: ["I:/developer/env/nginx-1.8.1/logs/error.log"]
- 因为启用了 Nginx 日志收集模块,咱们须要通过如下命令对 Filebeat 进行设置;
filebeat setup
- 通过如下命令启动 Filebeat 服务;
filebeat -e
- 咱们能够通过之前应用的 Kibana 中的 Nginx 教程页面,查看下数据是否胜利被收集了;
- 点击
Nginx logs dashboard
按钮能够查看收集到的 Nginx 日志,先看看概览日志;
- 再看看具体日志,从此不必再去服务器上捞 Nginx 日志了!
收集 Elasticsearch 日志
接下来咱们再试试收集 Elasticsearch 的日志。
- 应用如下命令开启 Filebeat 的 Elasticsearch 日志收集模块;
filebeat modules enable elasticsearch
- 接下来批改
elasticsearch.yml
配置,配置好 Elasticsearch 的日志门路;
# Module: elasticsearch
# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.6/filebeat-module-elasticsearch.html
- module: elasticsearch
server:
enabled: true
var.paths: ["I:/developer/env/elasticsearch-7.6.2/logs/elasticsearch.log"]
slowlog:
enabled: true
var.paths: ["I:/developer/env/elasticsearch-7.6.2/logs/elasticsearch_index_indexing_slowlog.log","I:/developer/env/elasticsearch-7.6.2/logs/elasticsearch_index_search_slowlog.log"]
deprecation:
enabled: true
var.paths: ["I:/developer/env/elasticsearch-7.6.2/logs/elasticsearch_deprecation.log"]
- 设置并启动 Filebeat 服务;
filebeat setup
filebeat -e
- 在
Discover
页面中查看 Elasticsearch 日志。
收集 MySQL 日志
再来试试收集 MySQL 的日志。
- 应用如下命令开启 Filebeat 的 MySQL 日志收集模块;
filebeat modules enable mysql
- 接下来批改
mysql.yml
配置,配置好 MySQL 的日志门路,次要是谬误日志和慢查问日志;
# Module: mysql
# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.6/filebeat-module-mysql.html
- module: mysql
error:
enabled: true
var.paths: ["C:/ProgramData/MySQL/MySQL Server 5.7/Data/DESKTOP-5NIMJ19.err"]
slowlog:
enabled: true
var.paths: ["C:/ProgramData/MySQL/MySQL Server 5.7/Data/DESKTOP-5NIMJ19-slow.log"]
- 设置并启动 Filebeat 服务;
filebeat setup
filebeat -e
- 点击
MySQL logs dashboard
按钮能够查看收集到的 MySQL 日志;
- 查看 MySQL 收集到的日志详情。
总结
本文次要介绍了应用 Filebeat 去收集 Nginx、Elasticsearch 和 MySQL 的文件日志,其余中间件的日志收集用法也基本相同,用 Filebeat 收集中间件日志是不是不便!
本文 GitHub https://github.com/macrozheng/mall-learning 曾经收录,欢送大家 Star!