我正在运行下面的查询来解析来自普罗米修斯的数据,但得到
"错误":"无法将 \"\" 解析为有效时间戳">
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]))&start=1574750639&end=1574751539&step=15s' 'localhost:9090/api/v1/query_range' | jq
结果:
{
"status": "error",
"errorType": "bad_data",
"error": "cannot parse "" to a valid timestamp"
}
另一方面,当我运行下面的查询时,我得到了正确的结果:
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": "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
来源
--data-urlencode
手册页 https://curl.haxx.se/docs/manpage.html#--data-urlencode
提到它的行为类似于-d, --data
https://curl.haxx.se/docs/manpage.html#-d
其中谈到多次使用 cli 标志。
如果在同一命令行上多次使用这些选项中的任何一个,则指定的数据片段将使用分隔的 &-符号合并在一起。因此,使用"-d name=daniel -d skill=lousy"将生成一个看起来像"name=daniel&skill=lousy"的帖子块。