ELK日志收集系統(tǒng)大家都知道枣接,但是還有一種日志收集系統(tǒng)EFK拴曲,肯定有很多朋友不知道!這里的F指的是Fluentd士修,它具有Logstash類似的日志收集功能妄迁,但是內(nèi)存占用連Logstash的十分之一都不到,性能優(yōu)越李命、非常輕巧登淘。本文將詳細(xì)介紹Fluentd的使用,主要用來收集SpringBoot應(yīng)用的日志封字,希望對大家有所幫助黔州!
Fluentd 簡介
Fluentd是一款開源的日志收集功能,致力于為用戶搭建統(tǒng)一的日志收集層阔籽,和Elasticsearch流妻、Kibana一起使用可以搭建EFK日志收集系統(tǒng)。什么是統(tǒng)一的日志收集層呢笆制?看下下面這張圖就清楚了绅这!
安裝
在你居然還去服務(wù)器上撈日志,搭個日志收集系統(tǒng)難道不香么在辆!中已經(jīng)介紹了ELK日志收集系統(tǒng)的搭建证薇,這里就不再介紹Elasticsearch和Kibana的安裝了度苔,直接介紹Fluentd在Docker環(huán)境下的安裝。
下載Fluentd的Docker鏡像浑度;
將默認(rèn)配置fluent.conf文件復(fù)制到/mydata/fluentd/目錄下寇窑,配置信息如下:
運(yùn)行Fluentd服務(wù),需要開放24221~24224四個端口用于接收不同類型的日志箩张;
第一次啟動可能會失敗甩骏,修改目錄權(quán)限后重新啟動即可;
使用root用戶進(jìn)入Fluentd容器內(nèi)部先慷;
安裝Fluentd的Elasticsearch插件饮笛;
如果你依然想使用docker-compose一次性安裝EFK的話,可以使用如下腳本论熙,注意使用user:root啟動就不需要再修改目錄權(quán)限了缎浇!
使用新的配置文件fluent.conf替換原來的配置文件,然后重新啟動Fluentd服務(wù)赴肚,新的配置文件會在下面給出素跺。
Fluentd配置詳解
接下來我們來介紹下Fluentd配置文件如何配置,先放出完全配置誉券,然后我們對里面的一些配置要點(diǎn)進(jìn)行詳細(xì)說明指厌。
完全配置
配置要點(diǎn)解析
<source>
定義了日志收集的來源,可以有tcp踊跟、udp踩验、tail(文件)、forward(tcp+udp)商玫、http等方式箕憾。
這里我們從tcp請求收集日志,端口為24221拳昌,并且設(shè)置了tag為debug袭异。
<parse>
定義對原始數(shù)據(jù)的解析方式,可以將日志轉(zhuǎn)化為JSON炬藤。
比如我們將debug日志轉(zhuǎn)化為JSON可以進(jìn)行如下配置御铃。
<filter>
可以對收集的日志進(jìn)行一系列的處理,比如說將日志打印到控制臺或者對日志進(jìn)行解析沈矿。
將所有日志打印到控制臺的配置:
對于tag為record來源的日志上真,我們將其中的message屬性轉(zhuǎn)化為JSON格式,如果不進(jìn)行轉(zhuǎn)化的話羹膳,message屬性將會是一個字符串睡互。
<match>
定義了收集到的日志最后輸出到哪里,可以輸出到stdout(控制臺)、file就珠、elasticsearch寇壳、mongo等里面。
這里我們使用elasticsearch來存儲日志信息嗓违,logstash_format、logstash_prefix图贸、logstash_dateformat主要用來控制日志索引名稱的生成蹂季,當(dāng)前配置生成debug日志的索引格式為
docker-debug-logs-2020-06-03,flush_interval用來控制日志輸出到elasticsearch的時間間隔疏日。
替換配置文件
替換掉原來的
/mydata/fluentd/fluent.conf配置文件偿洁,然后再重新啟動服務(wù),我們的Fluentd服務(wù)就可以開始收集日志了沟优。
docekrrestart?efk-fluentd
結(jié)合SpringBoot使用
其實(shí)Fluentd收集日志的原理和Logstash一樣涕滋,都是通過tcp端口來收集日志,所以我們只要把logback配置文件中原來Logstash日志收集地址端口改為Fluentd的即可挠阁。
修改logback-spring.xml配置文件宾肺;
如果你的Fluentd不是部署在原來Logstash的服務(wù)器上,還需要修改application-dev.yml配置中的logstash.host屬性侵俗。
啟動并運(yùn)行我們的SpringBoot應(yīng)用锨用。
Kibana中查看日志
至此我們的EFK日志收集系統(tǒng)搭建完成了,只需在Kibana中使用即可隘谣。
在Management->Kibana->Index Patterns中可以創(chuàng)建Index Patterns增拥,Kibana服務(wù)訪問地址:http://192.168.3.101:5601
創(chuàng)建完成后查看日志,可以看出該日志收集功能和我們之前搭建的ELK系統(tǒng)完全相同寻歧。
Logstash vs Fluentd
接下來我們來對這兩個日志收集工具的各個方面做個對比掌栅。