使用 Prometheus 的容器指标
Use Container Metrics from Prometheus
我在我的集群上部署了 Prometheus 以及 cAdvisor 和 Grafana。它工作得非常好。我在 Grafana 的 UI 上获得了我需要的所有数据。
为了使用这些数据,我开始使用 Prometheus Java API。例如获取 CPU 用法,如果它有一定的价值,就会做一些事情。
我在Grafana上显示的是每个容器的ContainerCPU使用情况。现在,如果可能的话,我想通过 Java API 获取该信息(或者如果不能的话)。但是,PromQL 查询当然不能用于 Java 程序(根据我的尝试,但我可能错了)。
我想了几个办法:
- 克隆cAdvisor项目,直接用Go实现我想做的
- 使用 docker stat 命令创建一个 bash 脚本,这将使我获得容器和 CPU 使用关联
- 或者也许实际上有一种方法可以发送 PromQL 查询。
例如,我们通过 Java 或 Prometheus 接口按名称获取指标:
例如:node_cpu
会给我一些数据。
但是如果我想要更精确的东西,我需要发送一个请求,例如 irate(node_cpu{job="prometheus"}[5m])
这是不可能通过 Java.
有没有办法让我获得更精确的指标?
Prometheus 支持与语言无关的 REST API 请求。您只需要使用 您的查询 发送 HTTP 请求并处理响应。
请参阅下面的示例,从他们的网站复制而来。
以下 HTTP GET 请求:
http://localhost:9090/api/v1/query?query=up&time=2015-07-01T20:10:51.781Z
returns 像这样:
{
"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
我在我的集群上部署了 Prometheus 以及 cAdvisor 和 Grafana。它工作得非常好。我在 Grafana 的 UI 上获得了我需要的所有数据。 为了使用这些数据,我开始使用 Prometheus Java API。例如获取 CPU 用法,如果它有一定的价值,就会做一些事情。
我在Grafana上显示的是每个容器的ContainerCPU使用情况。现在,如果可能的话,我想通过 Java API 获取该信息(或者如果不能的话)。但是,PromQL 查询当然不能用于 Java 程序(根据我的尝试,但我可能错了)。
我想了几个办法:
- 克隆cAdvisor项目,直接用Go实现我想做的
- 使用 docker stat 命令创建一个 bash 脚本,这将使我获得容器和 CPU 使用关联
- 或者也许实际上有一种方法可以发送 PromQL 查询。 例如,我们通过 Java 或 Prometheus 接口按名称获取指标:
例如:node_cpu
会给我一些数据。
但是如果我想要更精确的东西,我需要发送一个请求,例如 irate(node_cpu{job="prometheus"}[5m])
这是不可能通过 Java.
有没有办法让我获得更精确的指标?
Prometheus 支持与语言无关的 REST API 请求。您只需要使用 您的查询 发送 HTTP 请求并处理响应。
请参阅下面的示例,从他们的网站复制而来。
以下 HTTP GET 请求:
http://localhost:9090/api/v1/query?query=up&time=2015-07-01T20:10:51.781Z
returns 像这样:
{
"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