我正在使用此启动脚本运行容器优化的计算实例:
#!/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 社区指南和docker docs设置的。
但是我没有看到容器启动的日志。
此外,当我通过 SSH 连接到实例并运行命令logger "hello from logger"
时,我看不到它出现在云记录器中。我尝试将其转换为高级过滤器并删除除“来自记录器的你好”字符串过滤器之外的所有过滤器。
如何正确设置日志记录?我bunyan
在我的 NodeJS 应用程序中使用,但是当应用程序失败时我完全没有可见性?我很想拥有journalctl
云记录器中的所有日志。或者,至少是 的startup-script
一部分journalctl
。现在我通过 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)
sudo systemctl status stackdriver-logging
在 VM 中运行命令时