--- title: traceSpan layout: protoc-gen-docs number_of_entries: 3 ---

## Template

TraceSpan represents an individual span within a distributed trace.

When writing the configuration, the value for the fields associated with this template can either be a literal or an expression. Please note that if the datatype of a field is not istio.mixer.adapter.model.v1beta1.Value, then the expression’s inferred type must match the datatype of the field.

Example config:

    apiVersion: "config.istio.io/v1alpha2"
    kind: tracespan
    metadata:
      name: default
      namespace: istio-system
    spec:
      traceId: request.headers["x-b3-traceid"]
      spanId: request.headers["x-b3-spanid"] | ""
      parentSpanId: request.headers["x-b3-parentspanid"] | ""
      spanName: request.path | "/"
      startTime: request.time
      endTime: response.time
      spanTags:
        http.method: request.method | ""
        http.status_code: response.code | 200
        http.url: request.path | ""
        request.size: request.size | 0
        response.size: response.size | 0
        source.ip: source.ip | ip("0.0.0.0")
        source.service: source.service | ""
        source.user: source.user | ""
        source.version: source.labels["version"] | ""

See also: Distributed Tracing for information on tracing within Istio.

Field | Type | Description
--- | --- | ---
`traceId` | `string` | Trace ID is the unique identifier for a trace. All spans from the same trace share the same Trace ID. Required.
`spanId` | `string` | Span ID is the unique identifier for a span within a trace. It is assigned when the span is created. Optional.
`parentSpanId` | `string` | Parent Span ID is the unique identifier for a parent span of this span instance. If this is a root span, then this field MUST be empty. Optional.
`spanName` | `string` | Span name is a description of the span’s operation. For example, the name can be a qualified method name or a file name and a line number where the operation is called. A best practice is to use the same display name within an application and at the same call point. This makes it easier to correlate spans in different traces. Required.
`startTime` | `istio.mixer.adapter.model.v1beta1.TimeStamp` | The start time of the span. Required.
`endTime` | `istio.mixer.adapter.model.v1beta1.TimeStamp` | The end time of the span. Required.
`spanTags` | `map<string, istio.mixer.adapter.model.v1beta1.Value>` | Span tags are a set of pairs that provide metadata for the entire span. The values can be specified in the form of expressions. Optional.

## istio.mixer.adapter.model.v1beta1.TimeStamp

TimeStamp is used inside templates for fields that are of ValueType “TIMESTAMP”

## istio.mixer.adapter.model.v1beta1.Value

Value is used inside templates for fields that have dynamic types. The actual datatype of the field depends on the datatype of the expression used in the operator configuration.