之前咱们搭建的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 setupfilebeat -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 setupfilebeat -e
- 点击
MySQL logs dashboard
按钮能够查看收集到的MySQL日志;
- 查看MySQL收集到的日志详情。
总结
本文次要介绍了应用Filebeat去收集Nginx、Elasticsearch和MySQL的文件日志,其余中间件的日志收集用法也基本相同,用Filebeat收集中间件日志是不是不便!
本文 GitHub https://github.com/macrozheng/mall-learning 曾经收录,欢送大家Star!