为GKE设置ERROR REPORTING

时间:2017-01-25 23:33:17

标签: google-kubernetes-engine stackdriver google-cloud-error-reporting

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

据我了解,有两种方法: Stackdriver日志记录代理错误报告REST API

根据Setting up on 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

有没有办法通过fluent-logger-node library来与fluentd达成合作?

2 个答案:

答案 0 :(得分:2)

Steren,非常感谢your answer

让我分享有关此问题的一些细节

最近,Stackdriver默认从GKE中的流行语言中获得了流利的摄取异常。它将在下一版GKE中启用,并且在错误报告中可以看到转储到容器的stdout / stderr的异常。

  

有没有办法通过流利的记录器节点库达到这个流利的程度?

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

如果启用堆栈驱动程序日志记录,则在每个节点上部署fluentd是正确的。但是,它在容器内部运行,因此您目前无法从应用程序轻松访问它。

将来,Stackdriver和GKE团队将开始提供开箱即用的可访问节点范围的流畅端口,但不幸的是,现在你必须自己完成。

如上所述,在应用程序窗格中将另一个流畅的代理部署为sidecar容器并手动配置here is an example how to do it with least efforts可能更容易。在这种情况下,您将能够使用localhost访问代理,就好像它将在GCE上一样。

答案 1 :(得分:0)

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

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

但是,由于您似乎在使用Node.js,我建议您直接使用https://github.com/GoogleCloudPlatform/cloud-errors-nodejs,它不会通过Logging发送错误,而是直接使用错误报告报告API。