关于java:面对成百上千台服务器产生的日志试试这款轻量级日志搬运神器

32次阅读

共计 3030 个字符,预计需要花费 8 分钟才能阅读完成。

之前咱们搭建的 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 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!

正文完
 0