本文介紹Log ServiceTrace資料的格式。
Log ServiceTrace資料格式完全相容OpenTelemetry Trace 1.0格式,通過OpenTelemetry、Jaeger、Zipkin、OpenCensus、SkyWalking等協議寫入的Trace資料可自動對應成OpenTelemetry的Trace資料格式。其他類型的Trace資料可通過資料加工轉換為Log ServiceTrace格式。
原始Trace資料
原始Trace資料會被採集到名為{instance}-traces的Logstore中,採集時所定義的欄位如下所示。
欄位 | 類型 | 是否必選 | 說明 | 樣本 |
host | String | 否 | 資源所在主機的主機名稱。提取自resource欄位中的host.name欄位。 | test-host |
service | String | 是 | 資源的服務名。提取自resource欄位中的service.name欄位。 | test-service |
resource | JSON Object | 否 | 除host、service之外的其他資源欄位,例如進程ID、進程名、Pod名等。更多資訊,請參見Resource Semantic Conventions。 | {"k8s.pod.name":"xxxx", "k8s.pod.namespace":"kube-system"} |
otlp.name | String | 否 | Trace SDK名稱。 | go-sdk |
otlp.version | String | 否 | Trace SDK版本號碼。 | v1.0.0 |
name | String | 是 | Span名稱。 | /get/314159 |
kind | String | 否 | Span類型,例如CLIENT、SERVER等。更多資訊,請參見SpanKind。 | SERVER |
traceID | String | 是 | Trace ID。使用十六進位表示。 | 0123456789abcde0123456789abcde |
spanID | String | 是 | Span ID。使用十六進位表示。 | 0123456789abcde |
parentSpanID | String | 是 | ParentSpan ID。使用十六進位表示。 | 0123456789abcde |
links | JSON Array | 否 | 相關聯的其他的Span。更多資訊,請參見Specifying links。 | [{"TraceID" : "abc", "SpanId" : "abc", "TraceState" : "", "Attributes" : { "k" : "v" } }] |
logs | JSON Array | 否 | 相關聯的日誌、事件資訊。更多資訊,請參見Add Events。 | 無 |
traceState | String | 否 | W3C定義的Trace State資訊。更多資訊,請參見W3C Trace Context Specification。 | 無 |
start | INT | 是 | 開始時間。Unix時間戳記類型,單位:納秒。 | 1686294916826000000 |
end | INT | 否 | 結束時間。Unix時間戳記類型,單位:納秒。 | 1686294924827000000 |
duration | INT | 是 | 延遲時間,start參數與end參數之間的差值。單位:納秒。 | 8001000 |
attribute | JSON Object | 是 | Span相關的屬性資訊,例如HTTP請求的URL、狀態代碼等。更多資訊,請參見Attribute Naming。 | {"custom":"custom","host.hostname":"myhost","my-label":"myapp-type","null-value":"","service.name":"myapp"} |
statusCode | String | 是 | 狀態代碼。取值為OK、ERROR、UNSET。其中,UNSET與OK同義。 | ERROR |
statusMessage | String | 否 | 狀態資訊。 | stack overflow |
維度調用關係資料
Trace資料經計算產生的維度調用關係資料將被儲存在名為{instance}-traces-deps的Logstore中,對應的欄位說明如下所示。
欄位 | 資料類型 | 說明 |
version | String | 不同維度下的調用關係,目前共有四個維度。
|
child_host | String | 被呼叫者的主機資訊。 僅在version為service_name_host或service_name_host_resource時出現。 |
child_name | String | 被呼叫者的方法。 僅在version為service_name、service_name_host或service_name_host_resource時出現。 |
child_resource | JSON Object | 被呼叫者的資源資訊。 僅在version為service_name_host_resource時出現。 |
child_service | String | 被呼叫者的服務名。 |
child_type | JSON Object | 被呼叫者的補充資訊。 |
inner_percentile | String | 百分位,系統通過inner_percentile函數解析百分位。 |
max_latency | Double | 調用服務方法的最大延遲值。 |
min_latency | Double | 調用服務方法的最小延遲值。 |
n_status_fail | Double | 調用服務方法失敗的次數。 |
n_status_succ | Double | 調用服務方法成功的次數。 |
parent_host | JSON Array | 調用方的主機資訊。 僅在version為service_name_host或service_name_host_resource時出現。 |
parent_name | JSON Array | 調用方的方法。 僅在version為service_name、service_name_host或service_name_host_resource時出現。 |
parent_resource | JSON Object | 調用方的資源資訊。 僅在version為service_name_host_resource時出現。 |
parent_service | INT | 調用方服務名。 僅在version為service、service_name或service_name_host_resource時出現。 |
parent_type | INT | 調用方的補充資訊。 |
sum_latency | INT | 調用服務方法的延遲累加值。 |
彙總指標中間結果資料
Trace資料經計算產生的彙總指標中間結果將被儲存在名為{instance}-traces-metrics的Logstore中,對應的欄位說明如下所示。
欄位 | 資料類型 | 說明 |
host | STRING | Span的Host值。 |
inner_percentile | STRING | 百分位,系統通過inner_percentile函數解析百分位。 |
max_latency | Double | 調用服務方法的最大延遲值。 |
min_latency | Double | 調用服務方法的最小延遲值。 |
n_status_fail | INT | 服務方法執行失敗的次數。 |
name | STRING | Span名稱。 |
resource | JSON Object | Span資源資訊。 |
service | STRING | Span服務名稱。 |
sum_latency | Double | 調用服務方法的延遲總和,通常和total一起使用,計算平均延遲。 |
total | INT | 調用服務方法的次數。 |
type | JSON Object | Span的補充資訊,通常包含以下資訊。
|
version | String | 指標類型,目前固定為metric_info。 |