使用普罗米修斯的容器度量
我在我的集群以及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" ] } ] } }
这里有更多的细节