日志未从 Google Compute Engine 到达 Cloud Logging

Logs aren't arriving in Cloud Logging from Google Compute Engine

我在 GCE 中有一个 VM 实例 运行(使用 Container Optimized OS)并且在其中我有一个活跃的 运行 容器正在生成 json 日志.当我导航到 /var/lib/docker/containers/<CONTAINER_IMAGE>/<CONTAINER_IMAGE>-json.log.

时,我可以看到这些日志

在同一实例中,另一个 docker 容器正在 运行 使用图像 gcr.io/stackdriver-agents/stackdriver-logging-agent:1.8.4。这是我创建 VM 时自动设置的。

VM 有权访问 Cloud Logging,并且 Cloud Logging API 已启用。我还按照步骤 heregoogle-logging-enabled 添加到元数据中,值为 true.

当 VM 启动时,日志记录代理似乎正确启动并发出一条日志,说明它正在拖尾我想要日志的 docker 容器的日志文件,但是该文件中的日志永远不会出现在 Google 日志记录中。以下是确实进入 Cloud Logging 的日志的屏幕截图:

我遇到这个问题已经有一段时间了,非常感谢您对这个问题的任何帮助!提前致谢 (:

Google logging 使用 fluentd 来捕获日志。

你可以reconfugure fluentd to include additional log files.

创建文件 /etc/google-fluentd/config.d/my_app_name.conf 并在文件中放入格式为 path /path/to/my/log 的一行。 fluentd documentation.

中有更多示例

您还可以指定文件的格式 parsed: as a single string type field or in more structured way (more convinient when you're looking for something). Again - here's some more info about fluentd's output plugins

最后继续阅读 fluentd documentation 以更好地了解如何使用此工具。

在我提供的 json 日志中,使用的时间格式未被 fluentd 接受。我已经能够通过添加来解决这个问题:

reserve_time true

到默认配置中的过滤器。现在配置忽略任何指定时间的嵌套字段。我是从 here.

那里了解到的