使用普罗米修斯的容器度量

我在我的集​​群以及cAdvisor和Grafana上部署了Prometheus。 它运作非常好。 我在Grafana的用户界面上获得了所有需要的数据。 我开始使用Prometheus Java API来使用这些数据。 例如,获取CPU使用情况,如果它有一定的价值将做一些事情。

Grafana上显示的是每个容器的容器CPU使用情况。 现在我想尽可能用Java API来获取这些信息(或者如果没有的话)。 但是,当然,PromQL查询不能从Java程序中使用(从我的尝试,但我可能是错的)。

我想到了几种方法:

  • 克隆cAdvisor项目,直接执行我想在Go中执行的操作
  • 使用docker stat命令创build一个bash脚本,它将使我得到与容器和CPU使用率相关的信息
  • 或者也许实际上有一种方法来发送PromQL查询。 例如,我们通过Java或Prometheus接口获取其名称:

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

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

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

看到下面的例子,从他们的网站复制。

以下HTTP GET请求:

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

返回像这样的东西:

 { "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" ] } ] } } 

这里有更多的细节