使用 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: ...
注意 type
是 gce_instance
我有一个利用 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: ...
注意 type
是 gce_instance