我在我的集群以及cAdvisor和Grafana上部署了Prometheus。它运作得非常好。我在Grafana的UI上获得了所需的所有数据。 我开始使用Prometheus Java API来使用这些数据。例如,获取CPU使用率,如果它具有某个值,则会执行某些操作。
我在Grafana上显示的是每个容器的Container CPU使用情况。现在我想尽可能使用Java API获取该信息(或者如果没有,则可以获得)。但是当然PromQL查询在Java程序中是不可用的(从我尝试过但我可能错了)。
我想到了几个方面:
ex:node_cpu
会给我一些数据。
但是如果我想要更精确的东西,我需要发送一个请求,例如irate(node_cpu{job="prometheus"}[5m])
,这是通过Java无法实现的。
我有办法获得更精确的指标吗?
答案 0 :(得分:0)
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" ]
}
]
}
}
更多细节,here