這篇文章主要講解了“如何使用fluentd作為docker日志驅(qū)動收集日志”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何使用fluentd作為docker日志驅(qū)動收集日志”吧!
創(chuàng)新互聯(lián)建站于2013年開始,先為五大連池等服務(wù)建站,五大連池等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為五大連池企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
docker默認的日志驅(qū)動是json-file,每一個容器都會在本地生成一個/var/lib/docker/containers/containerID/containerID-json.log
,而日志驅(qū)動是支持擴展的,本章主要講解的是Fluentd驅(qū)動收集docker日志.
Fluentd是用于統(tǒng)一日志記錄層的開源數(shù)據(jù)收集器,是繼Kubernetes、Prometheus、Envoy 、CoreDNS 和containerd后的第6個CNCF畢業(yè)項目,常用來對比的是elastic的logstash,相對而言fluentd更加輕量靈活,現(xiàn)在發(fā)展非常迅速社區(qū)很活躍,在編寫這篇blog的時候github的star是8.8k,fork是1k就可見一斑.
docker
了解fluentd配置
docker-compose
docker-compose.yml
version: '3.7' x-logging: &default-logging driver: fluentd options: fluentd-address: localhost:24224 fluentd-async-connect: 'true' mode: non-blocking max-buffer-size: 4m tag: "kafeidou.{{.Name}}" #配置容器的tag,以kafeidou.為前綴,容器名稱為后綴,docker-compose會給容器添加副本后綴,如 fluentd_1 services: fluentd: image: fluent/fluentd:v1.3.2 ports: - 24224:24224 volumes: - ./:/fluentd/etc - /var/log/fluentd:/var/log/fluentd environment: - FLUENTD_CONF=fluentd.conf fluentd-worker: image: fluent/fluentd:v1.3.2 depends_on: - fluentd logging: *default-logging
fluentd.conf
<source> @type forward port 24224 bind 0.0.0.0 </source> <match kafeidou.*> @type file path /var/log/fluentd/kafeidou/${tag[1]} append true <format> @type single_value message_key log </format> <buffer tag,time> @type file timekey 1d timekey_wait 10m flush_mode interval flush_interval 5s </buffer> </match> <match **> @type file path /var/log/fluentd/${tag} append true <format> @type single_value message_key log </format> <buffer tag,time> @type file timekey 1d timekey_wait 10m flush_mode interval flush_interval 5s </buffer> </match>
由于fluentd需要在配置的目錄中有寫入的權(quán)限,所以需要先準備好存放log的目錄以及給予權(quán)限.
創(chuàng)建目錄
mkdir /var/log/fluentd
給予權(quán)限,這里用于實驗演示,直接授權(quán)777
chmod -R 777 /var/log/fluentd
在docker-compose.yml和fluentd.conf的目錄中執(zhí)行命令:docker-compose up -d
[root@master log]# docker-compose up -d WARNING: The Docker Engine you're using is running in swarm mode. Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node. To deploy your application across the swarm, use `docker stack deploy`. Creating network "log_default" with the default driver Creating fluentd ... done Creating fluentd-worker ... done
查看一下日志目錄下,應該就有對應的容器日志文件了:
[root@master log]# ls /var/log/fluentd/kafeidou/ fluentd-worker.20200215.log ${tag[1]}
這是我最后的一個實驗結(jié)果,會創(chuàng)建一個${tag[1]}
目錄,挺奇怪的,而且在這個目錄下還會有兩個文件
[root@master log]# ls /var/log/fluentd/kafeidou/\$\{tag\[1\]\}/ buffer.b59ea0804f0c1f8b6206cf76aacf52fb0.log buffer.b59ea0804f0c1f8b6206cf76aacf52fb0.log.meta
如果有明白這塊的也歡迎一起交流!
我們先看一下原始的docker日志是怎么樣一個架構(gòu):
docker會在本機的/var/lib/docker/containers/containerID/containerID-json.log
路徑為每一個容器生成一個log文件,存儲docker的日志.
上圖中總共有7個容器,當成7個微服務(wù)的話,在需要查看日志的時候就已經(jīng)很不方便了,最差情況需要分別在三臺機器上查看每一個容器的日志.
使用fluentd收集docker日志后可以將容器匯總到一起.來看看配置了本文的fluentd配置文件后的架構(gòu):
由于fluentd配置的是存儲在fluentd所在機器的本地目錄,所以效果是將其他機器的容器日志收集到fluentd所在機器的本地目錄中.
fluentd實際上可以將收集到的日志再次傳輸出去,例如傳輸?shù)絜lasticsearch等存儲軟件中:
fluentd能做的事情還有很多,fluentd本身能作為傳輸節(jié)點也能作為接受節(jié)點,還能夠過濾特定日志,格式化特定內(nèi)容的日志,將匹配的特定日志再次傳輸出去,這里只是做到一個簡單的收集docker容器日志的效果.
感謝各位的閱讀,以上就是“如何使用fluentd作為docker日志驅(qū)動收集日志”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對如何使用fluentd作為docker日志驅(qū)動收集日志這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
標題名稱:如何使用fluentd作為docker日志驅(qū)動收集日志
URL地址:http://muchs.cn/article28/piedcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、網(wǎng)站營銷、移動網(wǎng)站建設(shè)、建站公司、微信小程序、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)