常见问题

更新时间: 2023-07-04 14:07:44

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为空问题。

    1. 缩小查询时间范围,定位到出现此错误的大致时间区间。

    2. 执行如下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分钟。

image.png

在控制台中,查询到的时序数据缺失较多时间线

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

image.png

PromQL计算结果中存在Warning信息

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

image.png

exceeded maximum resolution of 11,000 points per timeseries. Try decreasing the query resolution (?step=XX)错误

在Prometheus中,限制每条时间线最大存在11000个数据点,即 (endTime - startTime) / step的值最大为11000。建议缩小查询区间或者调大step参数。

image.png
阿里云首页 日志服务 相关技术圈