之前我們搭建的ELK日志收集系統,主要是用來收集SpringBoot應用的日志。其原理是應用通過Logstash插件,使用TCP向Logstash傳輸日志,從而存儲到Elasticsearch中去。但是有很多中間件的日志都是直接存儲在文件中的,比如Nginx、Elasticsearch和MySQL,此時我們就需要一個搬運工來把日志搬到Elasticsearch中去,Filebeat正是這樣一個日志搬運工,本文將詳細介紹它的使用方法,希望對大家有所幫助。
Filebeat簡介
Filebeat是一款輕量級日志采集器,可用于轉發和匯總日志與文件。Filebeat內置有多種模塊(Nginx、MySQL、redis、Elasticsearch、Logstash等),可針對常見格式的日志大大簡化收集、解析和可視化過程,只需一條命令即可。
Filebeat安裝及配置
安裝Filebeat之前,我們需要先安裝好Elasticsearch和Kibana,具體參考 你居然還去服務器上撈日志,搭個日志收集系統難道不香么 ,注意使用7.6.2版本。
- 我們先下載Filebeat的安裝包
- 下載完成后解壓到指定目錄,注意圖中所示的三個地方;
- Kibana中早就提供好了Filebeat收集各種日志的教程,我們先進入首頁
- 點擊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收集中間件日志是不是方便!