【发布时间】: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 生成)时,文本条目会发送到
globalstackdriver 日志。但是,当我部署到我的 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