Cloud Logging 不适用于 Container-optimized OS 运行 容器
Cloud Logging doesn't work on a Container-optimized OS running a container
我是 运行 容器优化 OS 下 GCE 实例上的一个 Docker 容器。我已遵循本手册 https://cloud.google.com/container-optimized-os/docs/how-to/logging 并添加了 google-logging-enabled
元数据值以允许将容器的日志发送到 Cloud Logging:
instance metadata screenshot
但是没用。我在 Cloud Logging 中看不到容器的日志:
cloud logging screenshot
虽然我在现实中有很多容器日志:
container logs screenshot
如何让它工作并真正将容器的日志发送到 Cloud Logging?
更新
日志过滤器是默认过滤器:(resource.type="gce_instance" AND resource.labels.instance_id="***") OR (resource.type="global" AND jsonPayload.instance.id="***")
这意味着应显示当前实例的所有类型的日志。
我的问题是与实例关联的我的服务帐户没有 Logs Writer
权限。我发现通过 运行 sudo systemctl status stackdriver-logging
命令显示如下:
● stackdriver-logging.service - Fluentd container for Stackdriver Logging
Loaded: loaded (/usr/lib/systemd/system/stackdriver-logging.service; static; vendor preset: disabled)
Active: active (running) since Fri 2021-03-05 01:18:55 UTC; 1h 12min ago
Main PID: 385 (docker)
Tasks: 9 (limit: 2382)
Memory: 31.9M
CPU: 751ms
CGroup: /system.slice/stackdriver-logging.service
└─385 /usr/bin/docker run --rm --name=stackdriver-logging-agent -v /etc/stackdriver/logging.config.d/:/etc/google-fluentd/config.d/ -v /var/log:/var/log -v /var/lib/docker/containers/:/v
Mar 05 02:30:11 jwp-gitlab-runner-m3l0 docker[385]: 2021-03-05 02:30:11 +0000 [warn]: #0 Dropping 1 log message(s) error="User unauthorized to access *** for resource ***
通过谷歌搜索错误消息,我在 GitHub 问题 https://github.com/GoogleCloudPlatform/fluent-plugin-google-cloud/issues/295
中找到了答案
以下答案也帮助我诊断了问题:
现在我在 Cloud Logging 中拥有了我想要的所有日志。
我是 运行 容器优化 OS 下 GCE 实例上的一个 Docker 容器。我已遵循本手册 https://cloud.google.com/container-optimized-os/docs/how-to/logging 并添加了 google-logging-enabled
元数据值以允许将容器的日志发送到 Cloud Logging:
instance metadata screenshot
但是没用。我在 Cloud Logging 中看不到容器的日志:
cloud logging screenshot
虽然我在现实中有很多容器日志:
container logs screenshot
如何让它工作并真正将容器的日志发送到 Cloud Logging?
更新
日志过滤器是默认过滤器:(resource.type="gce_instance" AND resource.labels.instance_id="***") OR (resource.type="global" AND jsonPayload.instance.id="***")
这意味着应显示当前实例的所有类型的日志。
我的问题是与实例关联的我的服务帐户没有 Logs Writer
权限。我发现通过 运行 sudo systemctl status stackdriver-logging
命令显示如下:
● stackdriver-logging.service - Fluentd container for Stackdriver Logging
Loaded: loaded (/usr/lib/systemd/system/stackdriver-logging.service; static; vendor preset: disabled)
Active: active (running) since Fri 2021-03-05 01:18:55 UTC; 1h 12min ago
Main PID: 385 (docker)
Tasks: 9 (limit: 2382)
Memory: 31.9M
CPU: 751ms
CGroup: /system.slice/stackdriver-logging.service
└─385 /usr/bin/docker run --rm --name=stackdriver-logging-agent -v /etc/stackdriver/logging.config.d/:/etc/google-fluentd/config.d/ -v /var/log:/var/log -v /var/lib/docker/containers/:/v
Mar 05 02:30:11 jwp-gitlab-runner-m3l0 docker[385]: 2021-03-05 02:30:11 +0000 [warn]: #0 Dropping 1 log message(s) error="User unauthorized to access *** for resource ***
通过谷歌搜索错误消息,我在 GitHub 问题 https://github.com/GoogleCloudPlatform/fluent-plugin-google-cloud/issues/295
中找到了答案以下答案也帮助我诊断了问题:
现在我在 Cloud Logging 中拥有了我想要的所有日志。