Google Cloud Logging 驅動程式
Google Cloud Logging 驅動程式將容器日誌傳送到 Google Cloud Logging 日誌記錄。
用法
要將 gcplogs
驅動程式用作預設的日誌記錄驅動程式,請在 daemon.json
檔案中將 log-driver
和 log-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 以使更改生效。
您可以透過使用 docker run
的 --log-driver
選項來為特定容器設定日誌記錄驅動程式。
$ docker run --log-driver=gcplogs ...
如果 Docker 檢測到它在 Google Cloud 專案中執行,它會從例項元資料服務中發現配置。否則,使用者必須使用 --gcp-project
日誌選項指定要記錄到哪個專案,並且 Docker 會嘗試從Google 應用程式預設憑據獲取憑據。--gcp-project
標誌優先於從元資料伺服器發現的資訊,因此可以使用 --gcp-project
覆蓋在 Google Cloud 專案中執行的 Docker 守護程序,以記錄到不同的專案。
Docker 從 Google Cloud 元資料伺服器獲取區域、例項名稱和例項 ID 的值。如果元資料伺服器不可用,可以透過選項提供這些值。它們不會覆蓋來自元資料伺服器的值。
gcplogs 選項
您可以使用 --log-opt NAME=VALUE
標誌來指定這些額外的 Google Cloud Logging 驅動程式選項
選項 | 必需 | 描述 |
---|---|---|
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。 |
如果 label
和 env
鍵之間存在衝突,則以 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