gpt4 book ai didi

GKE 未显示 Stackdriver 日志记录

转载 作者:行者123 更新时间:2023-12-01 21:34:26 28 4
gpt4 key购买 nike

我似乎在某处缺少一些配置,但不知道在哪里。

我的应用程序(golang)正在使用 stackdriver 日志记录。当我在本地运行时,它工作正常,并且我的日志消息显示在 Stackdriver 中。当我在 GKE 中运行时,我的自定义记录器消息不会显示。

任何标准输出消息(fmt.println())都将显示在堆栈驱动程序中。他们只是不具备适当的严重性,而宁愿使用日志 API。我的 GKE 实例中可能存在哪些错误配置,导致 google 日志记录不显示?

抱歉,帖子含糊不清,但我没有太多可说的,没有收到任何错误。

这是我发送消息的代码(如果有帮助的话)。

    func logMessage(message string, transactionID string, severity logging.Severity) {

ctx := context.Background()

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

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

logger.Log(logging.Entry{Payload: message, InsertID: transactionID, Severity: severity})

// Closes the client and flushes the buffer to the Stackdriver Logging
// service.
if err := client.Close(); err != nil {
log.Panicln("Failed to close client: \n", err.Error())
return
}
return
}

更新:

我让 SSH 工作到节点(VM 实例),并确认 FluentD 看起来正在工作并接收更改。我打开日志文件,只看到 fmt.Println 中的内容,而没有看到 golang 云 Logger 中的任何内容。

也许我不明白 Google Stackdriver Logging ( https://godoc.org/cloud.google.com/go/logging ) 应该如何工作?显然我错过了一些东西,只是还不确定是什么。

谢谢

最佳答案

在 GKE 上,使用 Fluentd 代理并将其包含在 VM 镜像(节点)中。他的作用是监视 Docker 日志文件的更改,这些日志文件位于目录 /var/lib/docker/containers/ 中,并从 /var/log/containers 符号链接(symbolic link)到> 使用捕获 pod 名称和容器名称的名称的目录。然后,这些日志会提交到 Google Cloud Logging,假定已安装云日志记录插件。

您可以通过其他输入(例如 Streaming unstructured (text) or structured (JSON) logs via log files)自定义流日志的代理配置。 .

默认情况下,Fluentd 从监视的“k8s_container”标签中提取 local_resource_id:

资源。格式为:

'k8s_container.<namespace_name>.<pod_name>.<container_name>'.

fluidd 代理将字段“log”重命名为更通用的字段“message”。这样,在从记录中提取“时间”、“严重性”和“流”后,Fluent-plugin-google-cloud 就知道将字段展平为 textPayload 而不是 jsonPayload。

如果未设置“严重性”,则假定 stderr 为 ERROR,stdout 为 INFO。

创建集群时可以启用代理,然后将创建默认的 Fluentd Pod。

您也可以执行 manual installation of stackdriver-logging-agent in GKE (流利)。

首先,我建议您查找是否有正在运行的代理。

要执行此操作,请通过 SSH 连接到您的节点并检查代理是否正在运行,请运行以下命令行

ps ax | grep fluentd

输出示例:

2284 ?        Sl     0:00 /opt/google-fluentd/embedded/bin/ruby /usr/sbin/google-fluentd [...]
2287 ? Sl 42:44 /opt/google-fluentd/embedded/bin/ruby /usr/sbin/google-fluentd [...]

通过运行以下命令行进行测试:

logger "Some test message"

检查堆栈驱动程序日志记录中的测试消息

关于GKE 未显示 Stackdriver 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53784734/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com