0

我正在尝试为部署到 GKE 的应用设置 Stackdriver 错误报告。

据我了解,有两种方法可以做到这一点:Stackdriver Logging agentError Reporting REST API

根据Google Compute Engine文档上的设置 如果我已经有一个正在运行的日志代理,我可以在localhost:24224.

看起来 GKE 已经有了一个日志记录代理:

✗ kubectl get pods --namespace=kube-system
NAME                                                      READY     STATUS    RESTARTS   AGE
fluentd-cloud-logging-gke-tc-default-pool-5713124a-969q   1/1       Running   0          3d

fluentd有没有办法通过fluent-logger-node图书馆来达到这个目的?

4

2 回答 2

2

斯特伦,非常感谢您的回答

让我分享一些关于这个问题的细节

最近 Stackdriver 默认从 GKE 中的流行语言中制作了流利的提取异常。它将在 GKE 的下一个版本中启用,并且转储到stdout/stderr的容器的异常将在错误报告中可见。

有没有办法通过 fluent-logger-node 库达到这个 fluentd ?

GCE 和 GKE 上的日志记录代理的工作方式不同。在 GCE 上,您可以直接在 VM 上安装代理,并且可以使用localhost. 但是,GKE 使用 pod 运行,没有直接在节点上安装任何内容。每个 pod 都有自己的网络堆栈,因此当您localhost从容器内部调用时,您不是在处理 VM,而是在处理这个特定的 pod。

如果您启用 Stackdriver Logging,那么 fluentd 确实会部署在每个节点上。但是,它在容器内运行,因此您目前无法从应用程序轻松访问它。

未来,Stackdriver 和 GKE 团队将致力于提供开箱即用的可访问节点范围的 fluentd 端口,但现在,不幸的是,您必须自己做。

如前所述,在应用程序 pod 中部署另一个 fluentd 代理作为 sidecar 容器并手动配置它可能更容易,这里是一个示例,如何以最少的努力做到这一点。在这种情况下,您将能够访问代理localhost,就像它在 GCE 上一样。

于 2017-01-26T14:26:07.323 回答
0

(请注意,Stackdriver 错误报告尚未正式支持)

这个问题和答案可能会帮助您了解 fluentd 配置:How to setup error reporting in Stackdriver from kubernetes pods?

而且,由于您似乎使用的是 Node.js,我鼓励您直接使用https://github.com/GoogleCloudPlatform/cloud-errors-nodejs,它不会通过日志发送错误,而是直接发送到错误报告报告 API。

于 2017-01-26T14:03:37.053 回答