搜索值 < 0.5 和掩码如何包含单词 new?

How search values < 0.5 and mask include word new?

我有内容

{"status":"success","data":{"resultType":"matrix","result":[{"metric":{"__name__":"process_status","process_id":"process_fly1","instance":"server01","job":"new_job1"},"values":[[1516627862,"1"],[1516627922,"1"],[1516627982,"1"],[1516628042,"1"],[1516628102,"1"],[1516628162,"1"],[1516628222,"1"],[1516628282,"1"],[1516628342,"1"],[1516628402,"1"],[1516628462,"1"],[1516628522,"1"],[1516628582,"1"],[1516628642,"1"],[1516628702,"1"],[1516628762,"1"],[1516628822,"1"],[1516628882,"1"],[1516628942,"1"],[1516629002,"1"],[1516629062,"1"],[1516629122,"1"],[1516629182,"1"],[1516629242,"1"],[1516629302,"1"],[1516629362,"1"],[1516629422,"1"],[1516629482,"1"],[1516629542,"1"],[1516629602,"1"],[1516629662,"1"],[1516629722,"1"],[1516629782,"1"],[1516629842,"1"],[1516629902,"1"],[1516629962,"1"],[1516630022,"1"],[1516630082,"1"],[1516630142,"1"],[1516630202,"1"],[1516630262,"1"],[1516630322,"1"],[1516630382,"1"],[1516630442,"1"],[1516630502,"1"],[1516630562,"1"],[1516630622,"1"],[1516630682,"1"],[1516630742,"1"],[1516630802,"1"],[1516630862,"1"],[1516630922,"1"],[1516630982,"1"],[1516631042,"1"],[1516631102,"1"],[1516631162,"1"],[1516631222,"1"],[1516631282,"1"],[1516631342,"1"],[1516631402,"1"],[1516631462,"1"]]},{"metric":{"__name__":"process_status","process_id":"process_grow","instance":"server01","job":"new_job1"},"values":[[1516627862,"0"],[1516627922,"0"],[1516627982,"0"],[1516628042,"0"],[1516628102,"0"],[1516628162,"0"],[1516628222,"0"],[1516628282,"0"],[1516628342,"0"],[1516628402,"0"],[1516628462,"0"],[1516628522,"0"],[1516628582,"0"],[1516628642,"0"],[1516628702,"0"],[1516628762,"0"],[1516628822,"0"],[1516628882,"0"],[1516628942,"0"],[1516629002,"0"],[1516629062,"0"],[1516629122,"0"],[1516629182,"0"],[1516629242,"0"],[1516629302,"0"],[1516629362,"0"],[1516629422,"0"],[1516629482,"0"],[1516629542,"0"],[1516629602,"0"],[1516629662,"0"],[1516629722,"0"],[1516629782,"0"],[1516629842,"0"],[1516629902,"0"],[1516629962,"0"],[1516630022,"0"],[1516630082,"0"],[1516630142,"0"],[1516630202,"0"],[1516630262,"0"],[1516630322,"0"],[1516630382,"0"],[1516630442,"0"],[1516630502,"0"],[1516630562,"0"],[1516630622,"0"],[1516630682,"0"],[1516630742,"0"],[1516630802,"0"],[1516630862,"0"],[1516630922,"0"],[1516630982,"0"],[1516631042,"0"],[1516631102,"0"],[1516631162,"0"],[1516631222,"0"],[1516631282,"0"],[1516631342,"0"],[1516631402,"0"],[1516631462,"0"]]},
{"metric":{"__name__":"process_status","process_id":"process_fly2","instance":"server01","job":"new_job1"},"values":[[1516627862,"1"],[1516627922,"1"],[1516627982,"1"],[1516628042,"1"],[1516628102,"1"],[1516628162,"1"],[1516628222,"1"],[1516628282,"1"],[1516628342,"1"],[1516628402,"1"],[1516628462,"1"],[1516628522,"1"],[1516628582,"1"],[1516628642,"1"],[1516628702,"1"],[1516628762,"1"],[1516628822,"1"],[1516628882,"1"],[1516628942,"1"],[1516629002,"1"],[1516629062,"1"],[1516629122,"1"],[1516629182,"1"],[1516629242,"1"],[1516629302,"1"],[1516629362,"1"],[1516629422,"1"],[1516629482,"1"],[1516629542,"1"],[1516629602,"1"],[1516629662,"1"],[1516629722,"1"],[1516629782,"1"],[1516629842,"1"],[1516629902,"1"],[1516629962,"1"],[1516630022,"1"],[1516630082,"1"],[1516630142,"1"],[1516630202,"1"],[1516630262,"1"],[1516630322,"1"],[1516630382,"1"],[1516630442,"1"],[1516630502,"1"],[1516630562,"1"],[1516630622,"1"],[1516630682,"1"],[1516630742,"1"],[1516630802,"1"],[1516630862,"1"],[1516630922,"1"],[1516630982,"1"],[1516631042,"1"],[1516631102,"1"],[1516631162,"1"],[1516631222,"1"],[1516631282,"1"],[1516631342,"1"],[1516631402,"1"],[1516631462,"1"]]}]}}

我想获取 < 0.5 的值并且名称 process_id 满足掩码 fly

http://server02/api/v1/query_range?query=count(process_status<0.5)&{process_id=~"*fly*"}&start=1516627862.0&end=1516631462.0&step=60

但效果不佳。 如何让 REST API 请求更好?

使用普通的 URL 有点令人困惑。尤其是未加密的 &。我建议通过网络测试您的查询 UI: http://server02/graph.

你的 URL 看起来你想尝试 count(process_status<0.5)&{process_id=~"*fly*"},但由于 URL 编码,它实际上是 count(process_status<0.5).

=~ 匹配器使用正则表达式。因此你必须写 process_id=~".*fly.*" 而不是 *fly*.

如果我没有正确理解你的问题,你的查询应该是这样的:

process_status{process_id=~".*fly.*"} < 0.5

文档也应该很清楚:https://prometheus.io/docs/prometheus/latest/querying/basics/

sum(process_status{process_id=~".*fly.*"} < bool 0.5)

Prometheus 使用正则表达式,而不是 glob。要处理没有匹配系列的情况,您需要使用 bool 修饰符 which returns 0/1 然后对其求和。使用 count 如果没有匹配的时间序列,您将得到任何结果(与 0 不同)。