日誌收集工具Fluentd使用總結

fluentd是一個很是優秀的日誌收集工具,這裏我主要用它來收集docker-swarm集羣的各個容器的日誌。git

fluentd使用插件:github

用於路徑中加入tag:fluent-plugin-forestdocker

用於修改record:fluent-plugin-record-reformerjson

用於修改tag:fluent-plugin-rewrite-tag-filter服務器

用於正則匹配日誌內容,進行篩選:fluent-plugin-grep負載均衡

 

Shell異步

 

1工具

2測試

3spa

4

5

6

7

# 客戶端須要安裝的插件

/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-rewrite-tag-filter

/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-grep

/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-record-reformer

# 服務器端須要安裝的插件

/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-forest

 

fluentd安裝-基本文件路徑-插件安裝

fluentd-安裝:http://www.imekaku.com/2016/09/05/fluentd-install/

安裝完成後,須要先去官網瞭解其基本的使用方法,使用實例等等。

fluentd配置文件所在目錄:/etc/td-agent/

fluentd二進制文件所在目錄:/opt/td-agent/embedded/bin/

安裝插件的方法:/opt/td-agent/embedded/bin/fluent-gem install [插件名稱]

docker中log-driver使用fluentd

Docker日誌使用Fluentd收集:http://www.imekaku.com/2016/09/08/docker-log-fluentd/

須要注意:log-drive的幾個選項,特別是異步的選項,由於若是沒有設置爲異步,fluentd掛了,容器就掛了。

fluentd的client-server模式收集日誌

若是每臺宿主機上的fluentd收集容器的日誌以後,存放在本地,那麼仍然不便於日誌的概括整理。

Fluentd 配置文件-client fluentd 到 server fluentd:http://www.imekaku.com/2016/09/14/fluentd-configure-client-server/

在這篇文章中,對docker的log-driver的幾個選項也有了一個比較詳細的介紹。

初步創建了一個client到server的高可用模型。

fluentd輸出

  • fluentd服務器端收集日誌,放在指定的目錄

Fluentd 服務器log aggregators根據tag輸出到指定路徑:http://www.imekaku.com/2016/09/14/fluentd-log-aggregators-tag-path/

收集到的日誌但願按照不一樣的類別,放在不一樣的目錄

  • 區別docker的stdout和stderr來源,從而放在不一樣的路徑

Fluentd將Docker log中stdout和stderr分開:http://www.imekaku.com/2016/09/18/fluentd-docker-log-stdout-stderr/

從docker容器中收集的日誌,主要有兩個來源,分別是stdout和stderr,但願可以區分它們,而且把它們輸出到指定目錄

  • 從fluentd輸出的日誌文件中提取單個字段

Fluentd提取發送日誌中的value-SingleValue:http://www.imekaku.com/2016/09/18/fluentd-remove-time-tag-to-only-value/

從docker容器中提取出來的日誌,不管是從stdout中或者是stderr中的日誌,fluentd都會放在日誌的log字段(fluentd的日誌是json格式),因此若是但願提取log字段的信息,從而去除日誌中的其餘信息的話,可使用這種方式。

  • 根據日誌的不一樣來放在不一樣的路徑

Fluentd使用正則匹配log內容,輸出到不一樣的存儲介質:http://www.imekaku.com/2016/09/20/fluentd-regexp-log-output-different-disk/

因爲日誌的內容可能會比較多,可能會但願過濾掉一些日誌,或者根據日誌內容的不一樣,放在不一樣的目錄。

  • 在fluentd日誌輸出的路徑,或者文件名中加上時間

Fluentd在輸出日誌的路徑中加入時間:http://www.imekaku.com/2016/09/26/fluentd-put-time-in-path/

在fluentd的輸出日誌文件名是有時間的,是根據time_slice_format來分割的,可是每每會但願在路徑中也加入時間,從而根據路徑篩選出不一樣的日誌,避免大量的日誌產生干擾。或者但願日誌的文件前面加上日誌,這樣能夠根據時間進行排序。

  • fluentd日誌文件的命令規則

Fluentd輸出日誌文件命名規則:http://www.imekaku.com/2016/09/21/fluentd-log-filename/

fluentd日誌的命令規則主要是根據time_sllice_format設置選項來切割的。若是須要設置5分鐘,3分鐘一次輸出,就須要設置flush_interval選項的時間。或者設置chunk的大小。

docker緩衝區-fluentd緩衝區

Docker-log-driver緩衝區&Fluentd out_file, out_forward緩衝區:http://www.imekaku.com/2016/09/19/docker-log-driver-buff-fluentd-buff/

當客戶端fluentd掛了的時候,docker容器會打在本身的緩衝區;

當服務器端fluentd掛了的時候,fluentd客戶端會首先找負載均衡的另外一個節點,或者找二級節點,或者找助手節點,若是都掛了,fluentd客戶端會將日誌打在本身的緩衝區。

這篇文章就講了docker的緩衝區和fluentd的緩衝區。

fluentd本身的日誌輸出

fluentd本身的日誌:http://www.imekaku.com/2016/09/23/fluentd-own-log/

swarm集羣中使用fluentd

Docker Swarm使用fluentd收集日誌:http://www.imekaku.com/2016/09/19/docker-swarm-fluentd/

Docker Swarm集羣使用fluentd收集日誌:http://www.imekaku.com/2016/09/22/docker-swarm-clusters-fluentd-collect-log/

使用fluentd主要的目的也是但願可以收集swarm集羣中的日誌。swarm中使用fluentd和直接使用docker run建立容器收集日誌的選項是相同的。

fluentd配置文件測試和配置文件經常使用方案

Fluentd日誌輸出測試-配置文件:http://www.imekaku.com/2016/09/19/fluentd-log-test01/

Fluentd經常使用配置文件方案:http://www.imekaku.com/2016/09/23/fluentd-configuration-always/

轉載請註明:Imekaku-Blog » 日誌收集工具Fluentd使用總結

相關文章
相關標籤/搜索