使用 Stackdriver API on Kubernetes / Google Container Engine (GKE) 进行日志记录

Logging using Stackdriver API on Kubernetes / Google Container Engine (GKE)

我有一个利用 Google Cloud Logging API.

的 go 应用程序

相关代码与其文档中的示例相同:https://github.com/GoogleCloudPlatform/golang-samples/blob/master/logging/logging_quickstart/main.go

检查它与 minikube 一起工作后(我的有效负载出现在我的日志查看器的 Global 类别中),我将应用程序部署在 Google 容器引擎 (GKE) 上。

部署到那里后,我再也看不到应用程序通过日志记录发送的日志 API。 写入 std 的日志出现在 GKE container 类别中,但没有我使用 API.

发送的条目的踪迹

我的集群启用了 Stackdriver 日志记录 API/只写,默认服务帐户是编辑器(甚至尝试使用所有者),我也尝试使用专用服务帐户(使用 env GOOGLE_APPLICATION_CREDENTIALS ) 具有日志编写器甚至所有者访问权限,我看不到日志并且客户端库没有报告任何错误。

可能是什么原因或我可以从哪里开始调试此类问题?

谢谢,

原来日志在那里,但不在我期望的地方。

使用 gcloud CLI,我可以看到这些日志获得了资源类型 gce_instance,因此出现在 GCE VM Instance 类别中

要解决这个问题:

  $ gcloud beta logging logs list
  projects/<PROJECT>/logs/<LOG_NAME>
  ...

然后

$ gcloud beta logging read projects/<PROJECT>/logs/<LOG_NAME>
---
insertId: ...
jsonPayload:
   ...
logName: ...
receiveTimestamp: ...
resource:
  labels:
    instance_id: ...
    project_id: ...
    zone: ...
  type: gce_instance
timestamp: ...

注意 typegce_instance