以前咱們搭建的ELK日誌收集系統,主要是用來收集SpringBoot應用的日誌。其原理是應用經過Logstash插件,使用TCP向Logstash傳輸日誌,從而存儲到Elasticsearch中去。可是有不少中間件的日誌都是直接存儲在文件中的,好比Nginx、Elasticsearch和MySQL,此時咱們就須要一個搬運工來把日誌搬到Elasticsearch中去,Filebeat正是這樣一個日誌搬運工,本文將詳細介紹它的使用方法,但願對你們有所幫助。css
Filebeat是一款輕量級日誌採集器,可用於轉發和彙總日誌與文件。Filebeat內置有多種模塊(Nginx、MySQL、Redis、Elasticsearch、Logstash等),可針對常見格式的日誌大大簡化收集、解析和可視化過程,只需一條命令便可。html
安裝Filebeat以前,咱們須要先安裝好Elasticsearch和Kibana,具體參考《你竟然還去服務器上撈日誌,搭個日誌收集系統難道不香麼 !》,注意使用7.6.2版本。mysql
咱們先下載Filebeat的安裝包,下載地址:https://www.elastic.co/cn/downloads/past-releases/filebeat-7-6-2nginx
下載完成後解壓到指定目錄,注意圖中所示的三個地方;sql
Kibana中早就提供好了Filebeat收集各類日誌的教程,咱們先進入首頁,訪問地址:http://localhost:5601/app/kibana#/homebash
點擊Add log data按鈕,能夠發現支持的中間件仍是很豐富的,涵蓋了經常使用的;服務器
點開Nginx的日誌收集教程看下,是否是很詳細;app
接下來咱們就要開始配置Filebeat了,配置好Elasticsearch和Kibana的鏈接地址,修改Filebeat的安裝目錄下的配置文件filebeat.yml便可,修改內容以下。elasticsearch
output.elasticsearch: hosts: ["localhost:9200"]setup.kibana: host: "localhost:5601"
咱們先拿Nginx來練練手,體驗下Filebeat的日誌收集功能吧。ide
使用以下命令開啓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的日誌。
使用以下命令開啓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的日誌。
使用以下命令開啓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收集中間件日誌是否是方便!