本文介绍日志服务Trace数据的格式。

日志服务Trace数据格式完全兼容OpenTelemetry Trace 1.0格式,通过OpenTelemetry、Jaeger、Zipkin、OpenCensus、SkyWalking等协议写入的Trace数据可自动映射成OpenTelemetry的Trace数据格式。其他类型的Trace数据可通过数据加工转换为日志服务Trace格式。

原始Trace数据

原始Trace数据会被采集到名为{instance}-traces的Logstore中,采集时所定义的字段如下所示。

字段类型是否必选说明示例
hostString资源所在主机的主机名。提取自resource字段中的host.name字段。test-host
serviceString资源的服务名。提取自resource字段中的service.name字段。test-service
resourceJSON Objecthostservice之外的其他资源字段,例如进程ID、进程名、Pod名等。更多信息,请参见Resource Semantic Conventions{"k8s.pod.name":"xxxx", "k8s.pod.namespace":"kube-system"}
otlp.nameStringTrace SDK名称。go-sdk
otlp.versionStringTrace SDK版本号。v1.0.0
nameStringSpan名称。/get/314159
kindStringSpan类型,例如CLIENT、SERVER等。更多信息,请参见SpanKindSERVER
traceIDStringTrace ID。使用十六进制表示。0123456789abcde0123456789abcde
spanIDStringSpan ID。使用十六进制表示。0123456789abcde
parentSpanIDStringParentSpan ID。使用十六进制表示。0123456789abcde
linksJSON Array相关联的其他的Span。更多信息,请参见Specifying links[{"TraceID" : "abc", "SpanId" : "abc", "TraceState" : "", "Attributes" : { "k" : "v" } }]
logsJSON Array相关联的日志、事件信息。更多信息,请参见Add Events
traceStateStringW3C定义的Trace State信息。更多信息,请参见W3C Trace Context Specification
startINT开始时间。Unix时间戳类型,单位:纳秒。1686294916826000000
endINT结束时间。Unix时间戳类型,单位:纳秒。1686294924827000000
durationINT延迟时间,start参数与end参数之间的差值。单位:纳秒。8001000
attributeJSON ObjectSpan相关的属性信息,例如HTTP请求的URL、状态码等。更多信息,请参见Attribute Naming{"custom":"custom","host.hostname":"myhost","my-label":"myapp-type","null-value":"","service.name":"myapp"}
statusCodeString状态码。取值为OK、ERROR、UNSET。其中,UNSET与OK同义。ERROR
statusMessageString状态信息。stack overflow

维度调用关系数据

Trace数据经计算生成的维度调用关系数据将被存储在名为{instance}-traces-deps的Logstore中,对应的字段说明如下所示。

字段数据类型说明
versionString不同维度下的调用关系,目前共有四个维度。
  • service:服务维度,展示服务间调用关系。
  • service_name:服务方法维度。
  • service_name_host:服务方法、主机维度。
  • service_name_host_resource:服务方法、主机、资源维度。
child_hostString被调用方的主机信息。

仅在version为service_name_host或service_name_host_resource时出现。

child_nameString被调用方的方法。

仅在version为service_name、service_name_host或service_name_host_resource时出现。

child_resourceJSON Object被调用方的资源信息。

仅在version为service_name_host_resource时出现。

child_serviceString被调用方的服务名。
child_typeJSON Object被调用方的补充信息。
inner_percentileString百分位,系统通过inner_percentile函数解析百分位。
max_latencyDouble调用服务方法的最大延迟值。
min_latencyDouble调用服务方法的最小延迟值。
n_status_failDouble调用服务方法失败的次数。
n_status_succDouble调用服务方法成功的次数。
parent_hostJSON Array调用方的主机信息。

仅在version为service_name_host或service_name_host_resource时出现。

parent_nameJSON Array调用方的方法。

仅在version为service_name、service_name_host或service_name_host_resource时出现。

parent_resourceJSON Object调用方的资源信息。

仅在version为service_name_host_resource时出现。

parent_serviceINT调用方服务名。

仅在version为service、service_name或service_name_host_resource时出现。

parent_typeINT调用方的补充信息。
sum_latencyINT调用服务方法的延迟累加值。

聚合指标中间结果数据

Trace数据经计算生成的聚合指标中间结果将被存储在名为{instance}-traces-metrics的Logstore中,对应的字段说明如下所示。

字段数据类型说明
hostSTRINGSpan的Host值。
inner_percentileSTRING百分位,系统通过inner_percentile函数解析百分位。
max_latencyDouble调用服务方法的最大延迟值。
min_latencyDouble调用服务方法的最小延迟值。
n_status_failINT服务方法执行失败的次数。
nameSTRINGSpan名称。
resourceJSON ObjectSpan资源信息。
serviceSTRINGSpan服务名称。
sum_latencyDouble调用服务方法的延迟总和,通常和total一起使用,计算平均延迟。
totalINT调用服务方法的次数。
typeJSON ObjectSpan的补充信息,通常包含以下信息。
  • parent:根节点信息。
  • mq:MQ调用相关信息。如果为空,则不是MQ调用。
  • kind:Span类型。
  • env:Span环境信息,从resource.deployment.environment字段中提取。
  • version:Span版本,从resource.service.version字段中提取。
  • db:Database调用信息。如果为空,则不是Database调用。
versionString指标类型,目前固定为metric_info。