Prometheus:根据另一个指标过滤查询

时间:2020-07-28 13:07:43

标签: monitoring prometheus grafana

说我在普罗米修斯有两个指标,两个计数器:

  • requests_processed_total
  • requests_failed_total

它们都具有匹配的service标签。示例:

requests_processed_total{service="news"} 1097
requests_processed_total{service="store"} 487
requests_failed_total{service="news"} 23
requests_failed_total{service="store"} 89

如何查询requests_failed_total,但仅查询其request_processed_total > 1000的服务。

我希望得到以下答复:

requests_failed_total{service="news"} 23

# Note that the "store" service is excluded

2 个答案:

答案 0 :(得分:2)

如果您使用的是Grafana,则可以执行以下操作:

(1)创建一个仪表板

(2)单击仪表板设置>变量>新建

(3)使用以下命令创建一个变量:

Name        = service
Type        = Query

Data source = Prometheus
Query       = query_result(request_processed_total>5)
Regex       = /service="(.*)"/

(4)使用“服务”变量在任何面板中显示“ requests_failed_total”指标(您也可以使用“重复” Grafana功能。

答案 1 :(得分:0)

您可以使用HTTP API进行此操作。

以下命令将查找request_processed_total> 1000的服务:

C =
       84333      266452
       46609      223000
      176395      328914
       84865       94391
      104444      227034
      221905      302546
      227497      335959
      188486      344305
      164789      266497
      153603      354932

以下命令将显示给定服务的requests_failed_total:

curl --silent --user USER:PASS --globoff --request GET "https://PROMETHEUS-SERVER/query?query=request_processed_total>1000" | jq --raw-output '.data.result[].metric.service'

因此,如果两者兼得,您将得到想要的东西:

curl --silent --user USER:PASS --globoff --request GET "https://PROMETHEUS-SERVER/query?query=request_failed_total{service=\"SERVICE\"}" | jq --raw-output '.data.result[].value[1]'