日志服務的時序數據類型遵循Prometheus的定義規范,在時序庫中所有的數據都按照時序類型存儲。時序數據由時序標識和數據點組成,相同時序標識的數據組成時間線。
時序標識
每條時間線都有一個唯一的時序標識,由Metric name和Labels組成。
Metric name是一個字符串類型的標識符,用于標識指標類型。Metric name需遵循正則表達式[a-zA-Z_:][a-zA-Z0-9_:]* 。例如http_request_total表示接收到的HTTP請求的總數。
Labels由一組組鍵值對組成,各組鍵值對之間使用豎線(|)分割,用于標識指標的相關屬性。Key需遵循正則表達式 [a-zA-Z_][a-zA-Z0-9_]* ,Value不能包含豎線( | ),其它不做限制。例如method為POST, URL為/api/v1/get 。
數據點
數據點代表時間線在具體某個時間點的值,每個數據點由時間戳和值組成。其中時間戳精度為納秒,值的類型為double。
編碼方式
時序數據的寫入協議和日志寫入協議一致,使用Protobuf的數據編碼方式。時序標識和數據點都在content字段中,具體表示方式如下所示。
字段 | 說明 | 示例 |
---|---|---|
__name__ | Metric名稱。 | nginx_ingress_controller_response_size |
__labels__ | Label信息,格式為{key}#$#{value}|{key}#$#{value}|{key}#$#{value} 。說明
| app#$#ingress-nginx|controller_class#$#nginx|controller_namespace#$#kube-system|controller_pod#$#nginx-ingress-controller-589877c6b7-hw9cj |
__time_nano__ | 時間戳,單位為納秒。 | 1585727297293000000 |
__value__ | 值。 | 36.0 |