有没有办法使用 Java JMX Stackdriver 插件监控 Google 云 运行 中 Docker 容器中的 Java 应用程序 运行?

Is there a way to monitor to Java app running in Docker container in Google Cloud Run with Java JMX Stackdriver plugin?

我正在尝试使用 DropWizard 指标库收集指标并通过 JMX 导出它们。

在 Google Cloud Engine 上,使用 Stackdriver 的 JMX 插件可以轻松导出这些指标 (https://cloud.google.com/monitoring/agent/plugins/jvm#configuring)

但是我需要使用 Cloud 运行 做类似的事情,有已知的方法吗?

谢谢!

我不熟悉 JMX,但熟悉 GCP,包括 Cloud 运行。

I've implemented something similar(ish) using Prometheus (and Cloud Endpoints for app security), multiplexing the app and metrics on 8080.

IIUC 监控代理(基于 collectd):

  1. 使用预定义端口收集指标
  2. 将这些发送到 Cloud Monitoring(以前称为 Stackdriver)

如您所知,云 运行 是基于容器的,只允许一个端口 (8080)。

我怀疑尝试将代理捆绑在应用程序的容器中会很麻烦(并且 Google 可能不支持),但代理仍然可以打电话回家(云监控),尽管可能需要对 IAM 进行一些调整。

It would be great if Cloud Run permitted multiple containers per service

您可以通过 8080 多路复用 JMX 和您的应用流量。

It would be great if Cloud Run permitted multiple ports per service

然后,您的普通用户可以访问该应用程序,监控代理(运行 其他地方)可以在同一服务端口上 ping JMX 指标并将这些指标发送到云监控。

您需要更加注意安全。您可以制作 JWT 以向 Cloud 运行 进行身份验证,尽管这些对于 Cloud 运行 来说更“棘手”,因为每个服务都需要一个特定的 JWT 使用服务的端点来形成其受众。

您可能希望禁止经过身份验证的应用程序用户也捕获您的 JMX 指标。

我假设通过 Google 的前端路由 JMX 流量到云 运行 服务没有限制。

显然更好的选择是在云端检测 Java 代码 运行 是使用 OpenCensus 库。

OpenCensus 库可以轻松地与 DropWizard 一起使用,并且它实现了 Stackdriver 导出器。

这里有一些建议: https://opencensus.io/exporters/supported-exporters/java/stackdriver-stats/ https://cloud.google.com/monitoring/custom-metrics/open-census