Trace Span
The tracespan
template represents an individual span within a distributed trace.
Example config:
apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
name: default
namespace: istio-system
spec:
compiledTemplate: tracespan
params:
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
clientSpan: (context.reporter.kind | "inbound") == "outbound"
rewriteClientSpanId: "false"
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.principal: source.principal | ""
source.version: source.labels["version"] | ""
See also: Distributed Tracingfor information on tracing within Istio.
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 aliteral or an expression. Please note that if the datatype of a field is not istio.policy.v1beta1.Value,then the expression’s inferred type must match the datatype of the field.
Field | Type | Description | Required |
---|---|---|---|
traceId | string | Trace ID is the unique identifier for a trace. All spans from the sametrace share the same Trace ID.Required. | No |
spanId | string | Span ID is the unique identifier for a span within a trace. It is assignedwhen the span is created.Optional. | No |
parentSpanId | string | Parent Span ID is the unique identifier for a parent span of this spaninstance. If this is a root span, then this field MUST be empty.Optional. | No |
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 nameand a line number where the operation is called. A best practice is to usethe same display name within an application and at the same call point.This makes it easier to correlate spans in different traces.Required. | No |
startTime | TimeStamp | The start time of the span.Required. | No |
endTime | TimeStamp | The end time of the span.Required. | No |
spanTags | map<string, Value> | Span tags are a set of < key, value > pairs that provide metadata for theentire span. The values can be specified in the form of expressions.Optional. | No |
httpStatusCode | int64 | HTTP status code used to set the span status. If unset or set to 0, thespan status will be assumed to be successful. | No |
clientSpan | bool | client_span indicates the span kind. True for client spans and False ornot provided for server spans. Using bool instead of enum is a temporarywork around since mixer expression language does not yet support enumtype.Optional | No |
rewriteClientSpanId | bool | rewrite_client_span_id is used to indicate whether to create a new clientspan id to accommodate Zipkin shared span model. Some tracing systems likeStackdriver separates a RPC into client span and server span. To solve thisincompatibility, deterministically rewriting both span id of client span andparent span id of server span to the same newly generated id.Optional | No |
sourceName | string | Identifies the source (client side) of this span.Should usually be set to source.workload.name .Optional. | No |
sourceIp | IPAddress | Client IP address. Should usually be set to source.ip .Optional. | No |
destinationName | string | Identifies the destination (server side) of this span.Should usually be set to destination.workload.name .Optional. | No |
destinationIp | IPAddress | Server IP address. Should usually be set to destination.ip .Optional. | No |
requestSize | int64 | Request body size. Should usually be set to request.size .Optional. | No |
requestTotalSize | int64 | Total request size (headers and body).Should usually be set to request.total_size .Optional. | No |
responseSize | int64 | Response body size. Should usually be set to response.size .Optional. | No |
responseTotalSize | int64 | Response total size (headers and body).Should usually be set to response.total_size .Optional. | No |
apiProtocol | string | One of “http”, “https”, or “grpc” or any other value ofthe api.protocol attribute. Should usually be set to api.protocol .Optional. | No |