【问题标题】:Use Container Metrics from Prometheus使用 Prometheus 的容器指标
【发布时间】:2017-03-30 11:01:07
【问题描述】:

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

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

我想了几个办法:

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

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

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

【问题讨论】:

    标签: docker docker-swarm prometheus


    【解决方案1】:

    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

    【讨论】:

      猜你喜欢
      • 2018-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多