Fluentd 紀錄檔驅動程式

fluentd 記錄驅動程式將容器日誌作為結構化日誌資料發送到 Fluentd各種輸出插件

欄位說明
container_id完整的 64 字元容器 ID。
container_name啟動時的容器名稱。如果您使用 docker rename 重新命名容器,則新名稱不會反映在日誌項目中。
sourcestdoutstderr
log容器日誌

用法

支援某些選項,方法是根據需要多次指定 --log-opt

若要使用 fluentd 驅動程式作為預設記錄驅動程式,請在 daemon.json 檔案中將 log-driverlog-opt 鍵設定為適當的值,該檔案位於 Linux 主機上的 /etc/docker/ 或 Windows Server 上的 C:\ProgramData\docker\config\daemon.json。如需使用 daemon.json 設定 Docker 的詳細資訊,請參閱 daemon.json

以下範例將日誌驅動程式設定為 fluentd 並設定 fluentd-address 選項。

{
  "log-driver": "fluentd",
  "log-opts": {
    "fluentd-address": "fluentdhost:24224"
  }
}

重新啟動 Docker 以使變更生效。

注意

daemon.json 設定檔中的 log-opts 設定選項必須以字串形式提供。因此,布林值和數值(例如 fluentd-asyncfluentd-max-retries 的值)必須以引號 (") 括起來。

若要設定特定容器的記錄驅動程式,請將 --log-driver 選項傳遞給 docker run

$ docker run --log-driver=fluentd ...

在使用此記錄驅動程式之前,請啟動 Fluentd 守護行程。預設情況下,記錄驅動程式會透過 localhost:24224 連線到此守護行程。使用 fluentd-address 選項連線到不同的位址。

$ docker run --log-driver=fluentd --log-opt fluentd-address=fluentdhost:24224

如果容器無法連線到 Fluentd 守護行程,則容器會立即停止,除非使用 fluentd-async 選項。

選項

使用者可以使用 --log-opt NAME=VALUE 旗標來指定其他 Fluentd 記錄驅動程式選項。

fluentd-address

預設情況下,記錄驅動程式會連線到 localhost:24224。提供 fluentd-address 選項以連線到不同的位址。支援 tcp(預設)和 unix 通訊端。

$ docker run --log-driver=fluentd --log-opt fluentd-address=fluentdhost:24224
$ docker run --log-driver=fluentd --log-opt fluentd-address=tcp://fluentdhost:24224
$ docker run --log-driver=fluentd --log-opt fluentd-address=unix:///path/to/fluentd.sock

以上兩個指定了相同的位址,因為 tcp 是預設值。

tag

預設情況下,Docker 使用容器 ID 的前 12 個字元來標記日誌訊息。請參閱 日誌標籤選項文件 以自訂日誌標籤格式。

labels、labels-regex、env 和 env-regex

labelsenv 選項都接受以逗號分隔的鍵值列表。如果 labelenv 鍵值發生衝突,則 env 的值優先。這兩個選項都會將額外的欄位添加到日誌訊息的額外屬性中。

env-regexlabels-regex 選項分別與 envlabels 類似且相容。它們的值是正規表達式,用於匹配與日誌相關的環境變數和標籤。它用於進階的日誌標籤選項

fluentd-async

Docker 在背景連線到 Fluentd。訊息會被緩衝,直到連線建立完成。預設值為 false

fluentd-async-reconnect-interval

當啟用 fluentd-async 時,fluentd-async-reconnect-interval 選項定義了重新建立與 fluentd-address 連線的時間間隔(以毫秒為單位)。如果地址解析為一個或多個 IP 地址(例如 Consul 服務地址),則此選項很有用。

fluentd-buffer-limit

設定記憶體中緩衝的事件數量。記錄將儲存在記憶體中,最多達到此數量。如果緩衝區已滿,則記錄日誌的呼叫將會失敗。預設值為 1048576。(https://github.com/fluent/fluent-logger-golang/tree/master#bufferlimit

fluentd-retry-wait

重試之間的等待時間。預設值為 1 秒。

fluentd-max-retries

最大重試次數。預設值為 4294967295 (2**32 - 1)。

fluentd-sub-second-precision

以奈秒解析度產生事件日誌。預設值為 false

使用 Docker 管理 Fluentd 守護行程

關於 Fluentd 本身,請參閱專案網頁它的文件Fluentd Docker 映像檔測試容器記錄器

  1. 撰寫設定檔 (test.conf) 以傾印輸入的日誌

  2. 使用此設定檔啟動 Fluentd 容器

  3. 使用 fluentd 記錄驅動程式啟動一個或多個容器