常见问题
vector cannot contain metrics with the same labelset错误
原因一:
__labels__
字段值中的LabelName不符合字母序。写入MetricStore的
__labels__
字段由多组Label (LabelName#$#LabelValue)组成,且所有Label之间使用竖线(|)连接。在时序标识中,要求所有Label按照LabelName的字母序排序。更多信息,请参见时序标识。当
__labels__
字段值中的LabelName不符合字母序时,会出现该错误。您可以通过如下SQL语句确认__labels__
字段值中的LabelName是否按照字母序排序。* | select * from ( select __labels__, array_join(array_sort(split(__labels__, '|')), '|') as rightLabels from "MetricStore名字.prom" where __name__!='' ) where __labels__ != rightLabels
原因二:
__labels__
字段值中存在LabelValue为空问题。在Prometheus Engine中,LabelValue为空的Label会被视作无效。Prometheus Engine执行计算时会删除无效Label,因此出现该错误。您可以通过下述步骤确认
__labels__
字段值中是否存在LabelValue为空问题。缩小查询时间范围,定位到出现此错误的大致时间区间。
执行如下SQL语句。
* | select __labels__ from "MetricStore名字.prom" where __name__!='' and regexp_like(__labels__, '.*#\$#\|.*|.*#\$#$')
如果有返回结果,则表示存在LabelValue为空问题。建议修正数据上报端代码逻辑,删除无效Label。
PromQL查询时缺失Label信息,但原始数据中存在该Label
__labels__
字段值中的LabelName未按照字母序排序时会出现该问题。您可以通过如下SQL语句确认__labels__
字段值中的LabelName是否按照字母序排序。
* | select * from (
select __labels__, array_join(array_sort(split(__labels__, '|')), '|') as rightLabels from "MetricStore名字.prom" where __name__!=''
) where __labels__ != rightLabels
PromQL中涉及by/without计算时,结果不符合预期
__labels__
字段值中的LabelName未按照字母序排序时会出现该问题。您可以通过如下SQL语句确认__labels__
字段值中的LabelName是否按照字母序排序。
* | select * from (
select __labels__, array_join(array_sort(split(__labels__, '|')), '|') as rightLabels from "MetricStore名字.prom" where __name__!=''
) where __labels__ != rightLabels
指标探索中没有数据
可能原因是默认查询时间范围内没有数据。
在选择查询时间范围时,确保该时间范围内存在数据。
使用指标探索功能时,为保证响应速度,系统默认查询范围为最近5分钟。

在控制台中,查询到的时序数据缺失较多时间线
在日志服务控制台的MetricStore查询分析页面中执行查询时,存在limit参数,该参数会限制SQL查询或PromQL查询的返回数据的数量。建议适当调大该参数。

PromQL计算结果中存在Warning信息
可能原因是在拉取原始数据时,因Shard读取能力上限问题,未将该时间段内的数据读取完整。建议缩小查询时间范围或者分裂Shard提升整体吞吐能力。

exceeded maximum resolution of 11,000 points per timeseries. Try decreasing the query resolution (?step=XX)错误
在Prometheus中,限制每条时间线最大存在11000个数据点,即 (endTime - startTime) / step
的值最大为11000。建议缩小查询区间或者调大step参数。
