Prometheus 普罗米修斯查询范围函数工作不正常

Prometheus 普罗米修斯查询范围函数工作不正常,prometheus,Prometheus,我正在运行下面的查询来解析来自普罗米修斯的数据,但是 “错误”:“无法将\”“解析为有效的时间戳” 结果: { "status": "error", "errorType": "bad_data", "error": "cannot parse \"\" to a valid timestamp" } { "status": "success", "data": { "resultType": "vector", "result": [ {

我正在运行下面的查询来解析来自普罗米修斯的数据,但是

“错误”:“无法将\”“解析为有效的时间戳”

结果:

{
  "status": "error",
  "errorType": "bad_data",
  "error": "cannot parse \"\" to a valid timestamp"
}
{
  "status": "success",
  "data": {
    "resultType": "vector",
    "result": [
      {
        "metric": {},
        "value": [
          1574761076.19,
          "1"
        ]
      }
    ]
  }
}
另一方面,当我运行下面的查询时,我得到了正确的结果:

curl -G -v --data-urlencode 'query=sum(irate(istio_requests_total{reporter="source",destination_service="$service",response_code!~"5.*"}[5m])) / sum(irate(istio_requests_total{reporter="source",destination_service=~"$service"}[5m]))' 'localhost:9090/api/v1/query' | jq
结果:

{
  "status": "error",
  "errorType": "bad_data",
  "error": "cannot parse \"\" to a valid timestamp"
}
{
  "status": "success",
  "data": {
    "resultType": "vector",
    "result": [
      {
        "metric": {},
        "value": [
          1574761076.19,
          "1"
        ]
      }
    ]
  }
}

有人能告诉我哪里出错了吗?

您的普罗米修斯查询看起来不错,但是
curl
命令似乎不正确。建议使用
--data urlencode
拆分每个查询参数

curl --data-urlencode 'query=queryValue' \
     --data-urlencode 'start=startValue' \
     --data-urlencode 'end=endValue' \
     --data-urlencode 'step=stepValue'
因此,您的
curl
调用将是:

curl -G -v --data-urlencode 'query=sum(irate(istio_requests_total{reporter="source",destination_service="$service",response_code!~"5.*"}[5m])) / sum(irate(istio_requests_total{reporter="source",destination_service=~"$service"}[5m]))' --data-urlencode 'start=1574750639' --data-urlencode 'end=1574751539' --data-urlencode 'step=15s' 'localhost:9090/api/v1/query_range' | jq
来源
--数据URL编码的手册页

提到它的行为类似于
-d,--data

其中谈到多次使用cli标志

如果在同一命令行上多次使用这些选项中的任何一个,则指定的数据段将与分隔的&-符号合并在一起。因此,使用“-d name=daniel-d skill=loosy”将生成一个类似于“name=daniel&skill=loosy”的帖子块


您的Prometheus查询看起来不错,但是
curl
命令似乎不正确。建议使用
--data urlencode
拆分每个查询参数

curl --data-urlencode 'query=queryValue' \
     --data-urlencode 'start=startValue' \
     --data-urlencode 'end=endValue' \
     --data-urlencode 'step=stepValue'
因此,您的
curl
调用将是:

curl -G -v --data-urlencode 'query=sum(irate(istio_requests_total{reporter="source",destination_service="$service",response_code!~"5.*"}[5m])) / sum(irate(istio_requests_total{reporter="source",destination_service=~"$service"}[5m]))' --data-urlencode 'start=1574750639' --data-urlencode 'end=1574751539' --data-urlencode 'step=15s' 'localhost:9090/api/v1/query_range' | jq
来源
--数据URL编码的手册页

提到它的行为类似于
-d,--data

其中谈到多次使用cli标志

如果在同一命令行上多次使用这些选项中的任何一个,则指定的数据段将与分隔的&-符号合并在一起。因此,使用“-d name=daniel-d skill=loosy”将生成一个类似于“name=daniel&skill=loosy”的帖子块