91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用fluentd作為docker日志驅動收集日志

發布時間:2021-07-29 23:14:25 來源:億速云 閱讀:461 作者:chen 欄目:云計算

這篇文章主要講解了“如何使用fluentd作為docker日志驅動收集日志”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何使用fluentd作為docker日志驅動收集日志”吧!

前言

docker默認的日志驅動是json-file,每一個容器都會在本地生成一個/var/lib/docker/containers/containerID/containerID-json.log,而日志驅動是支持擴展的,本章主要講解的是Fluentd驅動收集docker日志.

Fluentd是用于統一日志記錄層的開源數據收集器,是繼Kubernetes、Prometheus、Envoy 、CoreDNS 和containerd后的第6個CNCF畢業項目,常用來對比的是elastic的logstash,相對而言fluentd更加輕量靈活,現在發展非常迅速社區很活躍,在編寫這篇blog的時候github的star是8.8k,fork是1k就可見一斑.

前提

  1. docker

  2. 了解fluentd配置

  3. 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需要在配置的目錄中有寫入的權限,所以需要先準備好存放log的目錄以及給予權限.
創建目錄

mkdir /var/log/fluentd

給予權限,這里用于實驗演示,直接授權777

chmod -R 777 /var/log/fluentd

在docker-compose.yml和fluentd.conf的目錄中執行命令:
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]}

這是我最后的一個實驗結果,會創建一個${tag[1]}目錄,挺奇怪的,而且在這個目錄下還會有兩個文件

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

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

架構總結

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

我們先看一下原始的docker日志是怎么樣一個架構:

如何使用fluentd作為docker日志驅動收集日志

docker會在本機的/var/lib/docker/containers/containerID/containerID-json.log路徑為每一個容器生成一個log文件,存儲docker的日志.

上圖中總共有7個容器,當成7個微服務的話,在需要查看日志的時候就已經很不方便了,最差情況需要分別在三臺機器上查看每一個容器的日志.

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

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

如何使用fluentd作為docker日志驅動收集日志

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

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

fluentd實際上可以將收集到的日志再次傳輸出去,例如傳輸到elasticsearch等存儲軟件中:

如何使用fluentd作為docker日志驅動收集日志

fluentd靈活性

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

感謝各位的閱讀,以上就是“如何使用fluentd作為docker日志驅動收集日志”的內容了,經過本文的學習后,相信大家對如何使用fluentd作為docker日志驅動收集日志這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

潼关县| 滦南县| 锦屏县| 大荔县| 霍邱县| 广元市| 句容市| 武乡县| 滦南县| 大理市| 余干县| 枣强县| 错那县| 定襄县| 孝昌县| 格尔木市| 日照市| 石河子市| 虎林市| 简阳市| 河曲县| 海林市| 聊城市| 玉林市| 乐昌市| 望谟县| 抚宁县| 明溪县| 开原市| 津南区| 怀仁县| 车致| 岚皋县| 宁明县| 永川市| 安义县| 鹰潭市| 浮山县| 旬阳县| 武宁县| 榆中县|