【问题标题】:Logging to Stackdriver from Google Cloud Endpoints in Kubernetes pod从 Kubernetes pod 中的 Google Cloud Endpoints 记录到 Stackdriver
【发布时间】:2017-09-27 17:40:51
【问题描述】:

我在从我的 golang api 登录到 Stackdriver 时遇到问题。我的配置:

  • 在三个计算引擎实例上运行的 GKE 集群
  • 在 GKE 容器集群上启用了日志记录和监控
  • 转到 ESP 后面的服务
  • kube-system 命名空间中有三个节点运行fluentd 映像。命名为 fluentd-cloud-logging-xxx-xxx-xxx-default-pool-nnnnnn。
  • 当我在本地运行我的服务(使用 go-swagger 生成)时,文本条目会发送到 global stackdriver 日志。但是,当我部署到我的 k8s 集群时什么都没有。

我使用的代码是这样的:

    api.Logger = func(text string, args ...interface{}) {
    ctx := context.Background()

    // Sets your Google Cloud Platform project ID.
    projectID := "my-project-name"

    // Creates a client.
    client, err := logging.NewClient(ctx, projectID)
    if err != nil {
        log.Fatalf("Failed to create client: %v", err)
    }

    // Sets the name of the log to write to.
    logName := "tried.various.different.names.with.no.luck"

    // Selects the log to write to.
    logger := client.Logger(logName)

    // Sets the data to log.
    textL := fmt.Sprintf(text, args...)

    // Adds an entry to the log buffer.
    logger.Log(logging.Entry{Payload: textL, Severity: logging.Critical})

    // Closes the client and flushes the buffer to the Stackdriver Logging
    // service.
    if err := client.Close(); err != nil {
        log.Fatalf("Failed to close client: %v", err)
    }

    fmt.Printf("Logged: %v\n", textL)

}

目前我不需要错误报告,因为我只是在评估 - 我很乐意只发送非结构化文本。但目前尚不清楚我是否需​​要像Boris' discussion on error reporting/stack traces from Kubernetes pods 这样才能得到它?

【问题讨论】:

  • 您在运行代码时是否从 API 收到任何错误?
  • 我不这么认为。现在已经一个月了,我继续前进。绝对没有创建日志(上面的 logName 行)。在某一时刻,我认为部署到 k8s 集群的代码可能正在记录到“全局”,但我不确定这可能来自我的本地开发环境。我现在已经停用了那个集群,所以我无法检查。
  • 查看“GCE VM 实例”类别组。我很可能有同样的问题:stackoverflow.com/questions/45022651/…

标签: logging kubernetes google-cloud-endpoints google-kubernetes-engine stackdriver


【解决方案1】:

在 Cloud Run 中与 Golang 应用程序有类似问题。
要查找 stackdriver 日志,您必须在 Logs Viewer 中指定过滤器 resource.type = "project"

【讨论】:

    【解决方案2】:

    使用 Stackdriver 日志记录客户端创建的日志条目似乎没有归入任何预定义的类别,因此很难在 Logs Viewer 的基本模式中找到。

    尝试通过将查询转换为advanced filter 来访问日志查看器“高级过滤器界面”并创建以下过滤器:

    logName:"projects/my-project-name/logs/tried.various.different.names.with.no.luck"
    

    这至少对我有用。

    【讨论】:

      猜你喜欢
      • 2018-08-23
      • 2023-04-10
      • 1970-01-01
      • 2013-09-14
      • 1970-01-01
      • 2018-06-13
      • 2020-06-26
      • 2018-12-18
      • 2016-09-16
      相关资源
      最近更新 更多