【发布时间】:2021-04-19 14:23:06
【问题描述】:
我正在使用这个启动脚本运行一个容器优化的计算实例:
#!/bin/bash
mkdir /home/my-app
cd /home/my-app
export HOME=/home/my-app
docker-credential-gcr configure-docker
docker run --rm --log-driver=gcplogs --name my-app --security-opt seccomp=./config.json gcr.io/my-project/my-app:latest
--log-driver 和 --name 标志是根据 GCP community guide 和 docker docs 设置的。
但我没有看到容器启动的日志。
另外,当我通过 SSH 连接到实例并运行命令 logger "hello from logger" 时,我没有看到它出现在云记录器中。我已尝试将其转换为高级过滤器并删除除“hello from logger”字符串过滤器之外的所有过滤器。
如何正确设置日志记录?我在我的 NodeJS 应用程序中使用bunyan,但是当应用程序失败时,我完全没有可见性?我希望在云记录器中拥有来自 journalctl 的所有日志。或者,至少是journalctl 的startup-script 部分。现在我正在通过 SSH 进入实例并运行 journalctl -r | grep startup-script 来检索它们。
更新
访问范围设置正确:
Stackdriver Logging API: Write Only
Stackdriver Logging API: Write Only
我使用的是默认计算引擎服务帐户。这里是我创建这个虚拟机的命令:
gcloud compute instance-templates create $APP_ID-template \
--scopes=bigquery,default,compute-rw,storage-rw \
--image-project=cos-cloud \
--image-family=cos-77-lts \
--machine-type=e2-medium \
--metadata-from-file=startup-script=./start.sh \
--tags=http-server,https-server
gcloud compute instance-groups managed create $APP_ID-group \
--size=1 \
--template=$APP_ID-template
启动脚本:
#!/bin/bash
mkdir /home/startDir
cd /home/startDir
export HOME=/home/startDir
docker-credential-gcr configure-docker
docker run --log-driver=gcplogs --name my-app --security-opt seccomp=./config.json gcr.io/project-id/app:latest
此 VM 运行 NodeJS 脚本。我没有为我的 NodeJS 脚本提供 JSON 密钥。 bunyan 记录器正在正确地将日志发送到云记录器。只有在服务器完全崩溃时才会发送日志失败。
日志 API 已启用。我得到了这个:
● stackdriver-logging.service - Fluentd container for Stackdriver Logging
Loaded: loaded (/usr/lib/systemd/system/stackdriver-logging.service; static; vendor preset: disabled)
Active: inactive (dead)
在 VM 中运行 sudo systemctl status stackdriver-logging 命令时
【问题讨论】:
-
这项工作适合你吗``` resource.type="gce_instance" resource.labels.instance_id="xxxxxxxxxxxxxxxxxxxxxxx" protoPayload.metadata.instanceMetadataDelta.addedMetadataKeys="startup-script" ```跨度>
-
不,它没有。我知道如何搜索日志。运行常规实例时显示启动脚本日志。此问题仅存在于容器优化操作系统中
-
当使用 cos-stable-85-13310-1041-161 从启动脚本运行容器时,我确实会在 Cloud Logging 中的“VM 实例”下获取容器日志。您能否确认在本地运行容器时看到了这些日志(没有 --log-driver=gcplogs)?使用其他启动磁盘映像(例如 Ubuntu)时,您是否会在 Cloud Logging 中看到日志?
-
我阅读了您的更新。创建实例时,您需要添加此标志以启用日志记录:
--metadata=google-logging-enabled=true -
另外,你为什么使用镜像家族
cos-77-lts?
标签: google-cloud-platform google-compute-engine stackdriver google-cloud-stackdriver google-container-optimized-os