metrics查询原理

本文介绍了时序数据的基本存储结构,包括DataPoint、TagSet和TimeSeries。查询过程涉及过滤、转换(如Rate计算)、降采样和分组聚合。在过滤和分组阶段,依据MetricName和TagSet筛选数据,降采样用于减少计算量,最后通过聚合运算得到每个分组的总结果。
摘要由CSDN通过智能技术生成

存储结构

基本数据结构:

type DataPoint struct{
    Timestamp int64
    Value float64
}
type DataPointSet []DataPoint

type Tag struct {
    Key string
    Value string
}
type TagSet []Tag

type InputRecord struct{
     MetricName string
     Tags  TagSet
     Dp    DataPoint
}

type TimeSeries struct {
     MetricName string
     Tags    TagSet
     Dps     DataPointSet
}

即对生产方来说,每次打点形成的结构是InputRecord, 而对存储方来说,收到的所有InputRecord根据MetricName+Tags存储为一组基本的数据,这是最基本的分组:
在这里插入图片描述

查询

以查询sum:rate:5m-avg-none:throughput:{service=risk|login}为例,查询要经过下面几步:过滤 --> 转换(求导) --> 降采样(减少待计算的样本数) --> 分组(根据tag条件,消解未指定的tag) --> 聚合运算

  • 过滤:根据MetricName和TagSet选出候选集
    在这里插入图片描述

  • Rate转换
    在这里插入图片描述

  • 降采样,即对指定时间长度内的数据只保留一个,避免计算量过大。保留的值可以是平均值
    在这里插入图片描述

  • 分组,根据tag指定的条件分组,未指定条件的tag将被"熔合",即那些tag将如同被从数据中移除一样。注意,分组之后,每一组中仍然有多个TimeSeries数据,需要后一步的聚合使得最终结果每组只有一个TimeSeries
    在这里插入图片描述

  • 聚合:在每一个分组内,对组内的所有TimeSeries进行聚合,相同时间点的数据进行Sum/Count等运算
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值