1. 程式人生 > >centos7下安裝docker(18.3docker日誌---logging driver---fluentd)

centos7下安裝docker(18.3docker日誌---logging driver---fluentd)

發送 dcoker 一個 tag 連接 選擇 路徑 logging logs

前面我們學的ELK中用filebeat收集docker容器日誌,利用的是dcoker默認的logging driver json-file,下面我們用fluentd來收集容器日誌

Fluentd是一個開源的數據收集器,他目前又超過500種的plugin,可以連接各種數據源和數據輸出組件。

實踐:

fluentd負責收集容器的日誌,發送給elasticsearch,日誌處理流程如下:

技術分享圖片

這裏我們用filebeat將fluentd收集到的日誌轉發給elasticsearch。這當然不是唯一的方案,fluentd有一個plugin,fluentd-plugin-elasticsearch可以直接將日誌轉發給elasticsearch,可以根據自己的需要選擇合適的方案。

安裝Fluentd

docker run -d -p 24224:24224 -p 24224:24224/udp -v /data:/fluentd/log fluent/fluentd

技術分享圖片

fluentd會在TCP/UDP端口24224上接收日誌數據,日誌將保存在Host的/data目錄中

重新配置filebeat

vim /etc/filebeat/filebeat.yml,將/data目錄添加到監控路徑中

技術分享圖片

重啟filebeat

監控容器日誌,啟動測試容器

docker run -d --log-driver fluentd --log-opt fluentd-address=localhost:24224 --log-opt tag="log-test-container-A" busybox sh -c ‘while true;do echo "this is a log message"‘

docker run -d --log-driver fluentd --log-opt fluentd-address=localhost:24224 技術分享圖片

busybox sh -c ‘while true;do echo "this is a log message"‘

技術分享圖片

--log-driver=fluentd告訴docker使用fluentd的logging driver

--log-opt fluentd-address=localhost:24224將容器日誌發送到fluentd的數據接受端口

--log-opt tag="log-test-container-A"和--log-opt tag="log-test-container-B"在容器中添加一個tag用於區分不同的容器

容器啟動後在kibana就可以看到相關容器的日誌了

centos7下安裝docker(18.3docker日誌---logging driver---fluentd)