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-安裝: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日誌使用Fluentd收集:http://www.imekaku.com/2016/09/08/docker-log-fluentd/
須要注意:log-drive的幾個選項,特別是異步的選項,由於若是沒有設置爲異步,fluentd掛了,容器就掛了。
若是每臺宿主機上的fluentd收集容器的日誌以後,存放在本地,那麼仍然不便於日誌的概括整理。
Fluentd 配置文件-client fluentd 到 server fluentd:http://www.imekaku.com/2016/09/14/fluentd-configure-client-server/
在這篇文章中,對docker的log-driver的幾個選項也有了一個比較詳細的介紹。
初步創建了一個client到server的高可用模型。
Fluentd 服務器log aggregators根據tag輸出到指定路徑:http://www.imekaku.com/2016/09/14/fluentd-log-aggregators-tag-path/
收集到的日誌但願按照不一樣的類別,放在不一樣的目錄
Fluentd將Docker log中stdout和stderr分開:http://www.imekaku.com/2016/09/18/fluentd-docker-log-stdout-stderr/
從docker容器中收集的日誌,主要有兩個來源,分別是stdout和stderr,但願可以區分它們,而且把它們輸出到指定目錄
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在輸出日誌的路徑中加入時間:http://www.imekaku.com/2016/09/26/fluentd-put-time-in-path/
在fluentd的輸出日誌文件名是有時間的,是根據time_slice_format來分割的,可是每每會但願在路徑中也加入時間,從而根據路徑篩選出不一樣的日誌,避免大量的日誌產生干擾。或者但願日誌的文件前面加上日誌,這樣能夠根據時間進行排序。
Fluentd輸出日誌文件命名規則:http://www.imekaku.com/2016/09/21/fluentd-log-filename/
fluentd日誌的命令規則主要是根據time_sllice_format設置選項來切割的。若是須要設置5分鐘,3分鐘一次輸出,就須要設置flush_interval選項的時間。或者設置chunk的大小。
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本身的日誌:http://www.imekaku.com/2016/09/23/fluentd-own-log/
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日誌輸出測試-配置文件:http://www.imekaku.com/2016/09/19/fluentd-log-test01/
Fluentd經常使用配置文件方案:http://www.imekaku.com/2016/09/23/fluentd-configuration-always/
轉載請註明:Imekaku-Blog » 日誌收集工具Fluentd使用總結