欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何使用fluentd作為docker日志驅(qū)動(dòng)收集日志

這篇文章主要講解了“如何使用fluentd作為docker日志驅(qū)動(dòng)收集日志”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“如何使用fluentd作為docker日志驅(qū)動(dòng)收集日志”吧!

創(chuàng)新互聯(lián)建站于2013年開始,先為五大連池等服務(wù)建站,五大連池等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為五大連池企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

前言

docker默認(rèn)的日志驅(qū)動(dòng)是json-file,每一個(gè)容器都會(huì)在本地生成一個(gè)/var/lib/docker/containers/containerID/containerID-json.log,而日志驅(qū)動(dòng)是支持?jǐn)U展的,本章主要講解的是Fluentd驅(qū)動(dòng)收集docker日志.

Fluentd是用于統(tǒng)一日志記錄層的開源數(shù)據(jù)收集器,是繼Kubernetes、Prometheus、Envoy 、CoreDNS 和containerd后的第6個(gè)CNCF畢業(yè)項(xiàng)目,常用來(lái)對(duì)比的是elastic的logstash,相對(duì)而言fluentd更加輕量靈活,現(xiàn)在發(fā)展非常迅速社區(qū)很活躍,在編寫這篇blog的時(shí)候github的star是8.8k,fork是1k就可見一斑.

前提

  1. docker

  2. 了解fluentd配置

  3. docker-compose

準(zhǔn)備配置文件

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會(huì)給容器添加副本后綴,如 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)限,所以需要先準(zhǔn)備好存放log的目錄以及給予權(quán)限.
創(chuàng)建目錄

mkdir /var/log/fluentd

給予權(quán)限,這里用于實(shí)驗(yà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

查看一下日志目錄下,應(yīng)該就有對(duì)應(yīng)的容器日志文件了:

[root@master log]# ls /var/log/fluentd/kafeidou/
fluentd-worker.20200215.log  ${tag[1]}

這是我最后的一個(gè)實(shí)驗(yàn)結(jié)果,會(huì)創(chuàng)建一個(gè)${tag[1]}目錄,挺奇怪的,而且在這個(gè)目錄下還會(huì)有兩個(gè)文件

[root@master log]# ls /var/log/fluentd/kafeidou/\$\{tag\[1\]\}/
buffer.b59ea0804f0c1f8b6206cf76aacf52fb0.log  buffer.b59ea0804f0c1f8b6206cf76aacf52fb0.log.meta

如果有明白這塊的也歡迎一起交流!

架構(gòu)總結(jié)

為什么不用docker的原始日志呢?

我們先看一下原始的docker日志是怎么樣一個(gè)架構(gòu):

如何使用fluentd作為docker日志驅(qū)動(dòng)收集日志

docker會(huì)在本機(jī)的/var/lib/docker/containers/containerID/containerID-json.log路徑為每一個(gè)容器生成一個(gè)log文件,存儲(chǔ)docker的日志.

上圖中總共有7個(gè)容器,當(dāng)成7個(gè)微服務(wù)的話,在需要查看日志的時(shí)候就已經(jīng)很不方便了,最差情況需要分別在三臺(tái)機(jī)器上查看每一個(gè)容器的日志.

使用了fluentd后有什么不一樣?

使用fluentd收集docker日志后可以將容器匯總到一起.來(lái)看看配置了本文的fluentd配置文件后的架構(gòu):

如何使用fluentd作為docker日志驅(qū)動(dòng)收集日志

由于fluentd配置的是存儲(chǔ)在fluentd所在機(jī)器的本地目錄,所以效果是將其他機(jī)器的容器日志收集到fluentd所在機(jī)器的本地目錄中.

fluentd只能將容器日志收集到本地嗎?

fluentd實(shí)際上可以將收集到的日志再次傳輸出去,例如傳輸?shù)絜lasticsearch等存儲(chǔ)軟件中:

如何使用fluentd作為docker日志驅(qū)動(dòng)收集日志

fluentd靈活性

fluentd能做的事情還有很多,fluentd本身能作為傳輸節(jié)點(diǎn)也能作為接受節(jié)點(diǎn),還能夠過(guò)濾特定日志,格式化特定內(nèi)容的日志,將匹配的特定日志再次傳輸出去,這里只是做到一個(gè)簡(jiǎn)單的收集docker容器日志的效果.

感謝各位的閱讀,以上就是“如何使用fluentd作為docker日志驅(qū)動(dòng)收集日志”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)如何使用fluentd作為docker日志驅(qū)動(dòng)收集日志這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

標(biāo)題名稱:如何使用fluentd作為docker日志驅(qū)動(dòng)收集日志
URL地址:http://www.chinadenli.net/article28/piedcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)網(wǎng)站營(yíng)銷移動(dòng)網(wǎng)站建設(shè)建站公司微信小程序定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司