之前咱们搭建的ELK日志收集零碎,次要是用来收集SpringBoot利用的日志。其原理是利用通过Logstash插件,应用TCP向Logstash传输日志,从而存储到Elasticsearch中去。然而有很多中间件的日志都是间接存储在文件中的,比方NginxElasticsearchMySQL,此时咱们就须要一个搬运工来把日志搬到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.ymldisable后缀没有了,阐明曾经被开启;

  • 接下来批改nginx.yml文件,配置好Nginx的accesserror日志门路;
# 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!