當前位置:
首頁 > 知識 > Flunetd 用於統一日誌記錄層的開源數據收集器

Flunetd 用於統一日誌記錄層的開源數據收集器

傳統的日誌查看方式

Flunetd 用於統一日誌記錄層的開源數據收集器

使用fluentd之後

Flunetd 用於統一日誌記錄層的開源數據收集器

一、介紹

Fluentd是一個開源的數據收集器,可以統一對數據收集和消費,以便更好地使用和理解數據。

幾大特色:

使用JSON統一記錄

簡單靈活可插拔架構

最小的資源需求

內置可靠性

1. JSON統一記錄

Fluentd儘可能地將數據結構轉化為JSON格式,這樣可以使Fluentd統一處理日誌數據的各個方面:收集,過濾,緩衝和輸出多個源和目的地(Unified Logging Layer)的日誌。JSON格式對於下游數據處理容易得多,因為它具有足夠的結構可訪問,同時保留靈活的模式。(在我們的日誌集群架構中,fluentd擔任了一個轉發者角色。)

2. 可插拔架構

Fluentd有一個靈活的插件系統,允許社區擴展其功能。社區提供了500多個的插件連接數十個data sources 和 data outputs,利用這些插件,我們可以更好的處理日誌消息流。

3. 最小的資源需求

Fluentd是用C語言和Ruby語言編寫的,需要很少的系統資源。一個運行實例 使用30-40MB的內存,可以處理13,000個事件/秒/核心。Fluentd以Ruby編寫,具有靈活性,性能敏感部分用C編寫。(另外Fluentd還有一個mini版本叫Fluent Bit io。程序只有幾十kb的大小,由於暫不支持輸出消息到kafka。所以暫未考慮使用。)

4. 內置可靠性

Fluentd支持基於內存和文件的緩衝(推薦配置文件中可添加buffer選項為file/production、memory/test),以防止節點間數據丟失。Fluentd還支持強大的故障切換功能(standby),可以設置高可用性。

二、插件介紹

Fluentd有6種類型的插件:input,Parser,Filter,Output,Formatter和Buffer。

1. Input Plugins

概述:Fluentd從外部來源檢索和拉取日誌事件,input 插件通常會創建一個線程socket和一個監聽socket,它也可以從被定期寫入的數據源中提取數據(如tail file_name)。 支持的input插件列表:

in_udp
in_tcp
in_forward
in_secure_forward
in_http
in_unix
in_tail
in_exec
in_syslog
in_scribe
in_multiprocess
in_dummy

2. Output Plugins

概述:輸出插件又可分為三種類型:非緩衝、緩衝和時間切片(time sliced)

Non-Buffered 輸出插件不會緩衝數據並立即寫出結果

Buffered 輸出插件維護一個隊列(一個chunk是一個事件的集合),並且它的行為可以通過「chunk limit」 和 「queue limit」參數進行調整

Time Sliced 輸出插件實際上是一種Bufferred插件,但是這些塊是按時間鍵入的

Flunetd 用於統一日誌記錄層的開源數據收集器

輸出插件的緩衝區行為(如果有),可以由一個單獨的緩衝區插件定義。即為每個輸出插件可以選擇不同的緩衝區插件。有一些輸出插件是完全定製的,不要使用緩衝區。

Non-Buffered 輸出插件列表

out_copy
out_null
out_roundrobin
out_stdout

Buffered 輸出插件列表

out_exec_filter
out_forward
out_mongo or out_mongo_replset

Time Sliced 輸出插件列表(我們用到了kafka)

out_splunk
out_file
out_forward
out_secure_forward
out_exec
out_exec_filter
out_copy
out_geoip
out_roundrobin
out_stdout
out_null
out_s3
out_splunk
out_kafka
out_mongo
out_mongo_replset
out_relabel
out_rewrite_tag_filter
out_webhdfs

3. Buffer Plugins

概述:Buffer plugins 被緩衝輸出插件使用,如 out_file, out_forward等等。用戶可以選擇最適合系統架構性能和可靠性需求的緩衝區插件。

Buffer 結構

queue
+---------+
| |
| chunk <-- write events to the top chunk
| |
| chunk |
| |
| chunk |
| |
| chunk --> write out the bottom chunk
| |
+---------+

如上面所示,當頂部塊超過指定的大小或時間限制時(分別為buffer_chunk_limit 和 flush_interval),一個新的空塊將被推到隊列的頂部。當新的塊被推出時,底部塊被立即寫出。 如果底部的塊未能寫出,它將保留在隊列中,並且Fluentd將在等待幾秒鐘後重試(等待時間,根據retry_wait參數設置)。如果重試限制尚未禁用(disable_retry_limit is false),並且重試次數超過指定的限制(retry_limit),這個塊將被刪除。每次重試等待時間加倍(1.0秒, 2.0秒, 4.0秒, …),直到達到max_retry_wait。如果隊列長度超過指定的限制(buffer_queue_limit),則新事件將被拒絕。

所有的緩衝輸出插件都支持以下參數:

<match pattern>
# omit the part about @type and other output parameters
buffer_type memory
buffer_chunk_limit 256m
buffer_queue_limit 128
flush_interval 60s
disable_retry_limit false
retry_limit 17
retry_wait 1s
max_retry_wait 10s # default is infinite
</match>

buffer_type指定要使用的緩衝區插件,默認情況下使用內存緩衝區插件。您還可以將緩衝區類型指定為file,使用buffer_path指定file路徑. 生產環境建議使用file

Flunetd 用於統一日誌記錄層的開源數據收集器

Secondary output:當重試計數超過retry_limit時就使用備份的目的地。目前,當primary 插件類型為file 插件時可以工作。這是很有用的,當primary 目的地或網路條件不穩定時。相當於B方案。

buff 可用的插件列表

buf_memory
buf_file

4. Filter Plugins

概述:Filter插件使Fluentd 可以修改事件流,例如下面的場景:

  • 通過刷新一個或多個欄位的值來過濾事件。
  • 通過添加新的欄位豐富事件。
  • 刪除或屏蔽某些欄位的隱私和合規性。拓展:「脫敏」

<filter foo.bar>
@type grep
regexp1 message cool
</filter>

上面的意思就是:將事件與tag(標籤)為「foo.bar」進行匹配,並且如果message欄位的值包含 cool,則事件將通過其餘的配置。

像output插件中的

<filter foo.bar>
@type grep
regexp1 message cool
</filter>

<filter foo.bar>
@type record_transformer
<record>
hostname "#{Socket.gethostname}"
</record>
</filter>

一旦messages 欄位中有包含cool 的事件,將會繼續匹配。將以機器的主機名作為其值來獲取新欄位「hostname」。

filter 過濾插件可用的列表

grep
record-transformer
filter_stdout

5. Parser Plugins

概述:有時,用於輸入插件的 format參數(如:in_tail,in_syslog,in_tcp 和 in_udp)無法解析用戶的自定義數據格式.(例如,上下文相關語法不能用正則表達式來解析)。為了解決這種情況,Fluentd有一個可插拔系統,使用戶能夠創建自己的解析器格式。

內置的Parsers 列表

regexp
apache2
apache_error
nginx
syslog
csv
tsv
ltsv
json
multiline
none

支持使用Parsers 核心的Input plugins 列表(帶 format參數的)

in_tail
in_tcp
in_udp
in_syslog
in_http

6. Formatter Plugins

概述:有時,輸出插件的輸出格式不能滿足自己的需要。Fluentd有一個名為Text Formatter的可插拔系統,使用戶可以擴展和重新使用自定義的輸出格式。

對於支持Text Formatter的輸出插件,format參數可用於更改輸出格式。

內置Formatters列表

out_file
json
ltsv
csv
msgpack
hash
single_value

支持文本格式化程序支持的輸出插件列表(很遺憾,暫不支持kafka)

out_file
out_s3

三、生產環境的建議1. high-availability

高可用配置參考鏈接:http://docs.fluentd.org/v0.12/articles/high-availability

2. performance-tuning

性能優化配置參考鏈接:http://docs.fluentd.org/v0.12/articles/performance-tuning

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科技優家 的精彩文章:

一次花費了一兩個小時的mysql問題排查
簡單聊聊不可或缺的Nginx反向代理伺服器——實現負載均衡
集合結合數據結構來看看(三)
springboot用thymeleaf模板的paginate分頁

TAG:科技優家 |

您可能感興趣

五支「氣場收集器」的吃土色口紅,做一個秋日cool girl
紅色iPhone 8及8P真機圖賞:顏值雖高 但卻是指紋收集器
CMS垃圾收集器
JVM內存分配、GC原理與垃圾收集器
最強安卓旗艦機皇華為Mate20再度曝光:後蓋竟成指紋收集器
從0開始編寫信息收集器
G1 垃圾收集器之對象分配過程
3.15晚會戰況:智能騷擾電話機器人,手機竟成隱私收集器?
五隻國產「氣場收集器」口紅,第四隻專屬於學生黨的「女王范」
新版本:還在怕喪屍群?了解一下血月模式究極利器-輻射收集器
荷蘭天才少年的「海洋塑料垃圾收集器」出征了
爐石傳說:1費的「靈魂收集器」並非新卡,是舊卡換了張原畫?
見「前男友」必備的五隻口紅,氣場收集器,圖五瞬間掌控全場!
寵溺眼神收集器《校花的貼身高手》純美校花撩人
本身是混血帥哥的他,還是個行走的帥哥收集器!
小米8透明版硬殼變成「劃痕收集器」?看看雷軍咋補救!
和閨蜜玩劈腿、跟前女友跑了、算計房子的……我難道是渣男收集器?
節約一點是一點,印軍各種銅殼子彈收集器,我軍鋼殼子彈無此麻煩
他幹了你不敢幹的事!憤怒的印度國王使用勞斯萊斯汽車作為垃圾收集器!
林青霞趙薇陳紅都為她折服,瓊瑤才是「美女收集器」!