【发布时间】:2019-02-01 18:08:19
【问题描述】:
在Java App Engine的情况下,如果Java App发生异常,我可以像this一样自动获取GCP错误报告
但是对于 GKE 上的 Java 应用程序,我无法获得 GCP 错误报告
它是怎么做到的?
【问题讨论】:
标签: java google-cloud-platform google-kubernetes-engine google-cloud-error-reporting
在Java App Engine的情况下,如果Java App发生异常,我可以像this一样自动获取GCP错误报告
但是对于 GKE 上的 Java 应用程序,我无法获得 GCP 错误报告
它是怎么做到的?
【问题讨论】:
标签: java google-cloud-platform google-kubernetes-engine google-cloud-error-reporting
您应该将Stackdriver Kubernetes Monitoring 安装到 GKE;同时也可以和Prometheus一起使用。这些功能目前仍处于测试阶段(未包含在任何 SLA 中)。另请参阅Fluentd 数据收集器,它与Logging API 相当相关。这个visual diagram 可以解释最可靠的谁向谁报告:
SLF4J example 这个SLF4J example 展示了如何从 Java 环境中记录日志,Logging Application Events with Java 有相关文档(您可能正在寻找的内容)。原则上,Java 环境中的记录器需要告诉本地代理发生了什么。
关于 Kubernetes 中的Logging API,参见Logging Using Stackdriver 和Customizing Stackdriver Logs for Kubernetes Engine with Fluentd;有不止一种方法可以做到这一点。
Monitoring API 和 Logging API 可以独立使用,但它们仍然观察相同的资源和相同的时间线,这就是使用两者有意义的原因。
关于所需的访问范围:
您必须是包含您的集群的项目的所有者。
【讨论】:
如doc 中所述,App Engine 环境应用程序会自动启用 Stackdriver 错误报告。但是在 GKE 上,您必须在创建集群时添加云平台访问范围。收集错误的首选方法是能够使用 REST API 或 Error Reporting Client Libraries 发布到 Stackdriver Error Reporting
【讨论】: