日志服务的时序数据类型遵循Prometheus的定义规范,在时序库中所有的数据都按照时序类型存储。时序数据由时序标识和数据点组成,相同时序标识的数据组成时间线。

时序标识

每条时间线都有一个唯一的时序标识,由Metric name和Labels组成。

Metric name类型为字符串,一般用于标识指标类型,Metric name需遵循正则表达式:[a-zA-Z_:][a-zA-Z0-9_:]* 。例如http_request_total表示接收到的HTTP请求的总数。

Labels由一组Key-Value对组成,用于标识指标的相关属性,Label的Key需遵循正则表达式: [a-zA-Z_][a-zA-Z0-9_]* ,Label的Value不能包含竖线( | ),其它不做限制。例如methodPOSTURL/api/v1/get

数据点

数据点代表时间线在具体某个时间点的值,每个数据点由时间戳和值组成。其中时间戳精度为纳秒,值的类型为double。

编码方式

时序数据的写入协议和日志写入协议一致,使用Protobuf的数据编码方式。时序标识和数据点都在content字段中,具体表示方式如下所示。
Key 说明 示例
__name__ Metric名称 nginx_ingress_controller_response_size
__labels__ label信息,分隔符形式:{key}#$#{value}|{key}#$#{value}|{key}#$#{value}
说明 Lable名称需按照字母顺序进行排序。
app#$#ingress-nginx|controller_class#$#nginx|controller_namespace#$#kube-system|controller_pod#$#nginx-ingress-controller-589877c6b7-hw9cj
__time_nano__ 时间戳,单位为纳秒 1585727297293000000
__value__ 36.0