Share feedback
Answers are generated based on the documentation.

Google Cloud Logging 驱动

Table of contents

Google Cloud Logging 驱动将容器日志发送到 Google Cloud Logging 服务。

使用方法

要将 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 --log-driver=gcplogs ...

如果 Docker 检测到它运行在 Google Cloud 项目中,它会从 实例元数据服务 发现配置。否则,用户必须使用 --gcp-project 日志选项指定要记录到哪个项目,Docker 尝试从 Google Application Default Credential 获取凭据。--gcp-project 标志优先于从元数据服务器发现的信息,因此运行在 Google Cloud 项目中的 Docker 守护进程可以使用 --gcp-project 覆盖并记录到不同的项目。

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。

如果 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