日志服務的時序數據類型遵循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不能包含豎線( | ),其它不做限制。例如methodPOSTURL/api/v1/get

數據點

數據點代表時間線在具體某個時間點的值,每個數據點由時間戳和值組成。其中時間戳精度為納秒,值的類型為double。

編碼方式

時序數據的寫入協議和日志寫入協議一致,使用Protobuf的數據編碼方式。時序標識和數據點都在content字段中,具體表示方式如下所示。
字段說明示例
__name__Metric名稱。nginx_ingress_controller_response_size
__labels__Label信息,格式為{key}#$#{value}|{key}#$#{value}|{key}#$#{value}
說明
  • Label的Key需按照字母順序進行排序。
  • 建議不要寫入Value為空字符串的Label。例如Label信息為app#$#|controller_class#$#nginx,則不建議將Key為app的Label寫入時序庫,可能造成PromQL聚合計算報錯。
app#$#ingress-nginx|controller_class#$#nginx|controller_namespace#$#kube-system|controller_pod#$#nginx-ingress-controller-589877c6b7-hw9cj
__time_nano__時間戳,單位為納秒。1585727297293000000
__value__值。36.0