Google Stackdriver Logging无法在Google Cloud Shell和GKE中使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Google Stackdriver Logging无法在Google Cloud Shell和GKE中使用相关的知识,希望对你有一定的参考价值。

我为GKE构建了一个docker镜像,并希望使用Google Stackdriver Logging。

目前我只是在服务启动时尝试记录Service started

虽然在我的主机上运行容器运行良好(在Google Cloud Console> Logs Viewer> Global,我可以在预期时看到Service started),在Google Cloud Shell上以完全相同的方式运行容器不会记录任何内容。部署到GKE完全相同的行为,没有错误,但我找不到所谓的创建日志。

以下是我的群集的范围:cloud-platform,compute-rw,datastore,default,storage-full,logging-write,service-control,service-management

请注意,日志客户端已成功创建:

client, err := logging.NewClient(ctx, projectID)

if err != nil {
    log.Fatalf("Failed to create the logging client: %v", err)
} else {
    fmt.Println("Logging client created")
}

app.Logger = client.Logger(logName)

text := "Started service !"

app.Logger.Log(logging.Entry{
    Payload: text,
})

每次在我的群集日志中或在Google Cloud Shell中手动运行容器时,我都会“记录客户端已创建”。但我得到“开始服务!”只有在我自己的机器上运行容器时。

答案

我运行了gcloud logging命令:

gcloud logging read "logName=projects/${PROJECT_ID}/logs/${LOG_NAME}"

我发现了type: gce_instance而不是预期的type: global

感谢https://stackoverflow.com/a/45085569/7046455我在GCE VM Instance下找到了我的日志。

令人惊讶的是,不能简单地通过Google云端控制台上的日志名称获取所有日志,而在CLI上则可以...

编辑:这些实际上是来自Google Cloud Shell的日志,而不是来自我的容器!我还没有找到为什么我的群集中没有创建日志...

以上是关于Google Stackdriver Logging无法在Google Cloud Shell和GKE中使用的主要内容,如果未能解决你的问题,请参考以下文章

如何清除 Google Cloud Platform 中的 Stackdriver 日志?

Stackdriver Trace 与 Google Cloud Run

Google StackDriver:如何将其他日志与跟踪日志关联(和嵌套)?

google cloud Stackdriver Metrics 以扩展管理实例组 - 区域

Google Stackdriver Logging无法在Google Cloud Shell和GKE中使用

用于 Google Cloud 外部服务器的 agentPath 上的 Stackdriver GCP 多个代理