为 GKE 设置错误报告
Setting up ERROR REPORTING for GKE
我正在尝试为部署到 GKE 的应用设置 Stackdriver 错误报告。
据我了解,有两种方法可以做到这一点:Stackdriver Logging agent 和 Error Reporting 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
?
(请注意,Stackdriver 错误报告尚未正式支持)
这个问答可能会帮助您了解 fluentd 配置:
而且,由于您似乎在使用 Node.js,我鼓励您直接使用 https://github.com/GoogleCloudPlatform/cloud-errors-nodejs,它不会通过日志记录发送错误,而是直接向错误报告报告 API.
斯特伦,非常感谢 !
让我分享一些关于这个问题的细节
最近 Stackdriver 默认从 GKE 中的流行语言中获取 fluentd 异常。它将在 GKE 的下一个版本中启用,并且转储到容器的 stdout
/stderr
的异常将在错误报告中可见。
Is there a way to reach this fluentd with fluent-logger-node library?
GCE 和 GKE 上的日志代理工作方式不同。在 GCE 上,您直接在 VM 上安装代理,并且可以使用 localhost
从同一 VM 访问它。但是,GKE 使用 pods 运行,没有直接在节点上安装任何东西。每个 pod 都有自己的网络堆栈,因此当您从容器内部调用 localhost
时,您不是在寻址 VM,而是寻址这个特定的 pod。
如果启用 Stackdriver Logging,确实每个节点都部署了 fluentd。但是,它在容器内运行,因此您目前无法从您的应用程序轻松访问它。
将来,Stackdriver 和 GKE 团队将致力于提供可访问的 node-wide fluentd 端口,但不幸的是,现在您必须自己动手。
如前所述,在应用程序 pod 中部署另一个 fluentd 代理作为 sidecar 容器并手动配置它可能更容易,here is an example how to do it with least efforts。在这种情况下,您将能够使用 localhost
访问代理,就像在 GCE 上一样。
我正在尝试为部署到 GKE 的应用设置 Stackdriver 错误报告。
据我了解,有两种方法可以做到这一点:Stackdriver Logging agent 和 Error Reporting 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
?
(请注意,Stackdriver 错误报告尚未正式支持)
这个问答可能会帮助您了解 fluentd 配置:
而且,由于您似乎在使用 Node.js,我鼓励您直接使用 https://github.com/GoogleCloudPlatform/cloud-errors-nodejs,它不会通过日志记录发送错误,而是直接向错误报告报告 API.
斯特伦,非常感谢
让我分享一些关于这个问题的细节
最近 Stackdriver 默认从 GKE 中的流行语言中获取 fluentd 异常。它将在 GKE 的下一个版本中启用,并且转储到容器的 stdout
/stderr
的异常将在错误报告中可见。
Is there a way to reach this fluentd with fluent-logger-node library?
GCE 和 GKE 上的日志代理工作方式不同。在 GCE 上,您直接在 VM 上安装代理,并且可以使用 localhost
从同一 VM 访问它。但是,GKE 使用 pods 运行,没有直接在节点上安装任何东西。每个 pod 都有自己的网络堆栈,因此当您从容器内部调用 localhost
时,您不是在寻址 VM,而是寻址这个特定的 pod。
如果启用 Stackdriver Logging,确实每个节点都部署了 fluentd。但是,它在容器内运行,因此您目前无法从您的应用程序轻松访问它。
将来,Stackdriver 和 GKE 团队将致力于提供可访问的 node-wide fluentd 端口,但不幸的是,现在您必须自己动手。
如前所述,在应用程序 pod 中部署另一个 fluentd 代理作为 sidecar 容器并手动配置它可能更容易,here is an example how to do it with least efforts。在这种情况下,您将能够使用 localhost
访问代理,就像在 GCE 上一样。