Google Cloud 日誌驅動程式

Google Cloud 日誌驅動程式將容器日誌傳送到 Google Cloud 日誌 日誌。

用法

要使用 gcplogs 驅動程式作為預設日誌驅動程式,請在 daemon.json 檔案中將 log-driverlog-opt 鍵設定為相應的值。該檔案位於 Linux 主機上的 /etc/docker/ 或 Windows Server 上的 C:\ProgramData\docker\config\daemon.json 中。有關使用 daemon.json 配置 Docker 的更多資訊,請參閱 daemon.json

以下示例將日誌驅動程式設定為 gcplogs 並設定 gcp-meta-name 選項。

{
  "log-driver": "gcplogs",
  "log-opts": {
    "gcp-meta-name": "example-instance-12345"
  }
}

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

您可以使用 --log-driver 選項為 docker run 指定特定容器的日誌驅動程式

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

如果 Docker 檢測到它在 Google Cloud 專案中執行,它會從 例項元資料服務 中發現配置。否則,使用者必須使用 --gcp-project 日誌選項指定要記錄到的專案,Docker 會嘗試從 Google 應用程式預設憑據 中獲取憑據。--gcp-project 標誌優先於從元資料伺服器發現的資訊,因此在 Google Cloud 專案中執行的 Docker 守護程式可以使用 --gcp-project 覆蓋到其他專案進行日誌記錄。

Docker 從 Google Cloud 元資料伺服器獲取區域、例項名稱和例項 ID 的值。如果元資料伺服器不可用,則可以透過選項提供這些值。它們不會覆蓋來自元資料伺服器的值。

gcplogs 選項

您可以使用 --log-opt NAME=VALUE 標誌來指定這些額外的 Google Cloud 日誌驅動程式選項

選項必需描述
gcp-project可選要記錄到的 Google Cloud 專案。預設為從 Google Cloud 元資料伺服器中發現該值。
gcp-log-cmd可選是否記錄容器啟動的命令。預設為 false。
labels可選標籤鍵的逗號分隔列表,如果為容器指定了這些標籤,則應將其包含在訊息中。
labels-regex可選類似於併兼容 labels。一個匹配與日誌相關的標籤的正則表示式。用於高階 日誌標籤選項
env可選環境變數鍵的逗號分隔列表,如果為容器指定了這些變數,則應將其包含在訊息中。
env-regex可選類似於併兼容 env。一個匹配與日誌相關的環境變數的正則表示式。用於高階 日誌標籤選項
gcp-meta-zone可選例項的區域名稱。
gcp-meta-name可選例項名稱。
gcp-meta-id可選例項 ID。

如果 labelenv 鍵之間存在衝突,則 env 的值優先。這兩個選項都會在日誌訊息的屬性中新增其他欄位。

以下是如何記錄到預設日誌目標的日誌選項的示例,該目標透過查詢 Google Cloud 元資料伺服器來發現。

$ docker run \
    --log-driver=gcplogs \
    --log-opt labels=location \
    --log-opt env=TEST \
    --log-opt gcp-log-cmd=true \
    --env "TEST=false" \
    --label location=west \
    your/application

此配置還指示驅動程式在有效負載中包含標籤 location、環境變數 ENV 以及用於啟動容器的命令。

以下示例顯示了在 Google Cloud 之外執行的日誌選項。GOOGLE_APPLICATION_CREDENTIALS 環境變數必須為守護程式設定,例如透過 systemd

[Service]
Environment="GOOGLE_APPLICATION_CREDENTIALS=uQWVCPkMTI34bpssr1HI"
$ docker run \
    --log-driver=gcplogs \
    --log-opt gcp-project=test-project \
    --log-opt gcp-meta-zone=west1 \
    --log-opt gcp-meta-name=`hostname` \
    your/application