使用 Prometheus 的容器指标

Use Container Metrics from Prometheus

我在我的集​​群上部署了 Prometheus 以及 cAdvisor 和 Grafana。它工作得非常好。我在 Grafana 的 UI 上获得了我需要的所有数据。 为了使用这些数据,我开始使用 Prometheus Java API。例如获取 CPU 用法,如果它有一定的价值,就会做一些事情。

我在Grafana上显示的是每个容器的ContainerCPU使用情况。现在,如果可能的话,我想通过 Java API 获取该信息(或者如果不能的话)。但是,PromQL 查询当然不能用于 Java 程序(根据我的尝试,但我可能错了)。

我想了几个办法:

例如:node_cpu 会给我一些数据。 但是如果我想要更精确的东西,我需要发送一个请求,例如 irate(node_cpu{job="prometheus"}[5m]) 这是不可能通过 Java.

有没有办法让我获得更精确的指标?

Prometheus 支持与语言无关的 REST API 请求。您只需要使用 您的查询 发送 HTTP 请求并处理响应。

请参阅下面的示例,从他们的网站复制而来。

以下 HTTP GET 请求:

http://localhost:9090/api/v1/query?query=up&time=2015-07-01T20:10:51.781Z

returns 像这样:

{
   "status" : "success",
   "data" : {
      "resultType" : "vector",
      "result" : [
         {
            "metric" : {
               "__name__" : "up",
               "job" : "prometheus",
               "instance" : "localhost:9090"
            },
            "value": [ 1435781451.781, "1" ]
         },
         {
            "metric" : {
               "__name__" : "up",
               "job" : "node",
               "instance" : "localhost:9100"
            },
            "value" : [ 1435781451.781, "0" ]
         }
      ]
   }
}

更多详细信息,here