我正在尝试为部署到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
达成合作?
答案 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。