本文介绍日志服务Trace数据的格式。
日志服务Trace数据格式完全兼容OpenTelemetry Trace 1.0格式,通过OpenTelemetry、Jaeger、Zipkin、OpenCensus、SkyWalking等协议写入的Trace数据可自动映射成OpenTelemetry的Trace数据格式。其他类型的Trace数据可通过数据加工转换为日志服务Trace格式。
原始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。 |