使用 Java 客户端检测 Prometheus 指标

Instrumenting Prometheus metrics with Java client

我想知道是否可以使用 Java 客户端从 Prometheus 收集所有指标?

例如 Go 指标、主机指标等

如果是,是否可以像在 HTTP api 上那样查询这些指标?

您能否澄清一下:"instrumenting" 通常意味着将应用程序代码中的指标公开给 Prometheus 端点。问题是您想要从应用程序或已经抓取指标的 Prometheus 实例中读取指标。

对于这个答案,我假设您是 运行 一个已经抓取指标的 Prometheus 实例。

如果您想读取 Prometheus 从您的应用程序中抓取的最新值,您可以使用 Prometheus' federation endpoint via HTTP: you can read all metrics with their current readings in one go, or apply a query. I'm not aware of a Java library to parse the format, but you find the definition here. 您可以使用相同的方法直接查询您的应用程序。

如果您想接收一个可能更容易解析的 JSON,您可以使用 Prometheus's HTTP API

如果您想在 Prometheus 查询值时立即接收更新,您可以连接到 remote write API。已经存在集成,但乍一看没有 Java 集成。您可以使用 Kafka 作为中介。此外,这可能比您在此问题中要求的更多。