使用Prometheus的容器指标

时间:2017-03-30 11:01:08

标签: docker docker-swarm prometheus

我在我的集​​群以及cAdvisor和Grafana上部署了Prometheus。它运作得非常好。我在Grafana的UI上获得了所需的所有数据。 我开始使用Prometheus Java API来使用这些数据。例如,获取CPU使用率,如果它具有某个值,则会执行某些操作。

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

我想到了几个方面:

  • 克隆cAdvisor项目并直接在Go
  • 中实现我想要做的事情
  • 使用docker stat命令创建一个bash脚本,该命令可以获得容器和CPU使用率
  • 或许实际上有一种方法可以发送PromQL查询。 例如,我们通过Java或Prometheus接口获取其名称的指标:

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

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

1 个答案:

答案 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

相关问题