mirror of
https://github.com/hanzoai/o11y.git
synced 2026-10-15 12:58:33 +00:00
The derived-fields guide they pointed at lived on o11y.io, which resolves to no server and is registered to another company. The waterfall span's calculated-fields note and the ten CalculatedFields descriptions now say what each field is and link nothing. That note is what docs.hanzo.ai prints for the waterfall API's db_name, through cloud's openapi.yaml. Co-authored-by: Hanzo Dev <[email protected]>
475 lines
18 KiB
Go
475 lines
18 KiB
Go
package telemetrytraces
|
|
|
|
import (
|
|
"github.com/hanzoai/o11y/pkg/types/telemetrytypes"
|
|
)
|
|
|
|
const (
|
|
|
|
// Internal Columns.
|
|
SpanTimestampBucketStartColumn = "ts_bucket_start"
|
|
SpanResourceFingerPrintColumn = "resource_fingerprint"
|
|
|
|
// Intrinsic Columns.
|
|
SpanTimestampColumn = "timestamp"
|
|
SpanTraceIDColumn = "trace_id"
|
|
SpanSpanIDColumn = "span_id"
|
|
SpanTraceStateColumn = "trace_state"
|
|
SpanParentSpanIDColumn = "parent_span_id"
|
|
SpanFlagsColumn = "flags"
|
|
SpanNameColumn = "name"
|
|
SpanKindColumn = "kind"
|
|
SpanKindStringColumn = "kind_string"
|
|
SpanDurationNanoColumn = "duration_nano"
|
|
SpanStatusCodeColumn = "status_code"
|
|
SpanStatusMessageColumn = "status_message"
|
|
SpanStatusCodeStringColumn = "status_code_string"
|
|
SpanEventsColumn = "events"
|
|
SpanLinksColumn = "links"
|
|
|
|
// Calculated Columns.
|
|
SpanResponseStatusCodeColumn = "response_status_code"
|
|
SpanExternalHTTPURLColumn = "external_http_url"
|
|
SpanHTTPURLColumn = "http_url"
|
|
SpanExternalHTTPMethodColumn = "external_http_method"
|
|
SpanHTTPMethodColumn = "http_method"
|
|
SpanHTTPHostColumn = "http_host"
|
|
SpanDBNameColumn = "db_name"
|
|
SpanDBOperationColumn = "db_operation"
|
|
SpanHasErrorColumn = "has_error"
|
|
SpanIsRemoteColumn = "is_remote"
|
|
|
|
// Contextual Columns.
|
|
SpanAttributesStringColumn = "attributes_string"
|
|
SpanAttributesNumberColumn = "attributes_number"
|
|
SpanAttributesBoolColumn = "attributes_bool"
|
|
SpanResourcesStringColumn = "resources_string"
|
|
)
|
|
|
|
var (
|
|
IntrinsicFields = map[string]telemetrytypes.TelemetryFieldKey{
|
|
"trace_id": {
|
|
Name: "trace_id",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"span_id": {
|
|
Name: "span_id",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"trace_state": {
|
|
Name: "trace_state",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"parent_span_id": {
|
|
Name: "parent_span_id",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"flags": {
|
|
Name: "flags",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeNumber,
|
|
},
|
|
"name": {
|
|
Name: "name",
|
|
Description: "Name of the span",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"kind_string": {
|
|
Name: "kind_string",
|
|
Description: "Span kind enum (string). Known values are ['Client', 'Server', 'Internal', 'Producer', 'Consumer']. Learn more [here](https://opentelemetry.io/docs/concepts/signals/traces/#span-kind)",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"duration_nano": {
|
|
Name: "duration_nano",
|
|
Description: "Span duration",
|
|
Unit: "ns",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeNumber,
|
|
},
|
|
"status_code": {
|
|
Name: "status_code",
|
|
Description: "Span status code enum (number). Use `status_code_string` instead. Learn more [here](https://opentelemetry.io/docs/concepts/signals/traces/#span-status)",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeNumber,
|
|
},
|
|
"status_message": {
|
|
Name: "status_message",
|
|
Description: "Span status message. Learn more [here](https://opentelemetry.io/docs/concepts/signals/traces/#span-status)",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"status_code_string": {
|
|
Name: "status_code_string",
|
|
Description: "Span status code enum (string). Learn more [here](https://opentelemetry.io/docs/concepts/signals/traces/#span-status)",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
}
|
|
IntrinsicFieldsDeprecated = map[string]telemetrytypes.TelemetryFieldKey{
|
|
"traceID": {
|
|
Name: "traceID",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"spanID": {
|
|
Name: "spanID",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"parentSpanID": {
|
|
Name: "parentSpanID",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"spanKind": {
|
|
Name: "spanKind",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"durationNano": {
|
|
Name: "durationNano",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeNumber,
|
|
},
|
|
"statusCode": {
|
|
Name: "statusCode",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeNumber,
|
|
},
|
|
"statusMessage": {
|
|
Name: "statusMessage",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"statusCodeString": {
|
|
Name: "statusCodeString",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"kind": {
|
|
Name: "kind",
|
|
Description: "Span kind enum (number). Use `kind_string` instead. Learn more [here](https://opentelemetry.io/docs/concepts/signals/traces/#span-kind)",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeNumber,
|
|
},
|
|
"timestamp": {
|
|
Name: "timestamp",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeNumber,
|
|
},
|
|
}
|
|
|
|
CalculatedFields = map[string]telemetrytypes.TelemetryFieldKey{
|
|
"response_status_code": {
|
|
Name: "response_status_code",
|
|
Description: "Derived response status code from the HTTP/RPC status code attributes.",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"external_http_url": {
|
|
Name: "external_http_url",
|
|
Description: "The hostname of the external HTTP URL.",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"http_url": {
|
|
Name: "http_url",
|
|
Description: "HTTP URL of the request.",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"external_http_method": {
|
|
Name: "external_http_method",
|
|
Description: "HTTP request method of client spans.",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"http_method": {
|
|
Name: "http_method",
|
|
Description: "The HTTP request method.",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"http_host": {
|
|
Name: "http_host",
|
|
Description: "The HTTP host or server address.",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"db_name": {
|
|
Name: "db_name",
|
|
Description: "The database name or namespace.",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"db_operation": {
|
|
Name: "db_operation",
|
|
Description: "The database operation being performed.",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"has_error": {
|
|
Name: "has_error",
|
|
Description: "Whether the span has an error.",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeBool,
|
|
},
|
|
"is_remote": {
|
|
Name: "is_remote",
|
|
Description: "Whether the span is remote.",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
}
|
|
|
|
CalculatedFieldsDeprecated = map[string]telemetrytypes.TelemetryFieldKey{
|
|
"responseStatusCode": {
|
|
Name: "responseStatusCode",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"externalHttpUrl": {
|
|
Name: "externalHttpUrl",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"httpUrl": {
|
|
Name: "httpUrl",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"externalHttpMethod": {
|
|
Name: "externalHttpMethod",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"httpMethod": {
|
|
Name: "httpMethod",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"httpHost": {
|
|
Name: "httpHost",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"dbName": {
|
|
Name: "dbName",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"dbOperation": {
|
|
Name: "dbOperation",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"hasError": {
|
|
Name: "hasError",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeBool,
|
|
},
|
|
"isRemote": {
|
|
Name: "isRemote",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"serviceName": {
|
|
Name: "serviceName",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"httpRoute": {
|
|
Name: "httpRoute",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"msgSystem": {
|
|
Name: "msgSystem",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"msgOperation": {
|
|
Name: "msgOperation",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"dbSystem": {
|
|
Name: "dbSystem",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"rpcSystem": {
|
|
Name: "rpcSystem",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"rpcService": {
|
|
Name: "rpcService",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"rpcMethod": {
|
|
Name: "rpcMethod",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"peerService": {
|
|
Name: "peerService",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
}
|
|
SpanSearchScopeRoot = "isroot"
|
|
SpanSearchScopeEntryPoint = "isentrypoint"
|
|
|
|
// IntrinsicSpanFields lists the intrinsic span columns, in the order they
|
|
// should appear when a raw query expands its SelectFields.
|
|
IntrinsicSpanFields = []telemetrytypes.TelemetryFieldKey{
|
|
{Name: SpanTimestampColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanTraceIDColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanSpanIDColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanTraceStateColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanParentSpanIDColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanFlagsColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanNameColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanKindColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanKindStringColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanDurationNanoColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanStatusCodeColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanStatusMessageColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanStatusCodeStringColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanEventsColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanLinksColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
}
|
|
|
|
// CalculatedSpanFields lists the calculated/derived span columns, in the
|
|
// order they should appear when a raw query expands its SelectFields.
|
|
CalculatedSpanFields = []telemetrytypes.TelemetryFieldKey{
|
|
{Name: SpanResponseStatusCodeColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanExternalHTTPURLColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanHTTPURLColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanExternalHTTPMethodColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanHTTPMethodColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanHTTPHostColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanDBNameColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanDBOperationColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanHasErrorColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
{Name: SpanIsRemoteColumn, FieldContext: telemetrytypes.FieldContextSpan},
|
|
}
|
|
|
|
// ContextualSpanColumns lists the attribute and resource maps selected raw
|
|
// (rather than via ColumnExpressionFor) so that consume.go can merge them into
|
|
// unified "attributes" and "resource" maps. On the envelope there is ONE
|
|
// attributes map (String-valued) and no typed number/bool maps, so those two
|
|
// project as empty typed maps; the resource map is rebuilt from the promoted
|
|
// service/host columns. Aliases keep the consumer's column names stable.
|
|
ContextualSpanColumns = []string{
|
|
"attributes AS attributes_string",
|
|
"CAST(map() AS Map(String, Float64)) AS attributes_number",
|
|
"CAST(map() AS Map(String, Bool)) AS attributes_bool",
|
|
"map('service.name', toString(service), 'host', toString(host)) AS resources_string",
|
|
}
|
|
|
|
DefaultFields = map[string]telemetrytypes.TelemetryFieldKey{
|
|
"timestamp": {
|
|
Name: "timestamp",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeNumber,
|
|
},
|
|
"span_id": {
|
|
Name: "span_id",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"trace_id": {
|
|
Name: "trace_id",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"name": {
|
|
Name: "name",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
"service.name": {
|
|
Name: "service.name",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextResource,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
Materialized: true,
|
|
},
|
|
"duration_nano": {
|
|
Name: "duration_nano",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeNumber,
|
|
},
|
|
"response_status_code": {
|
|
Name: "response_status_code",
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
},
|
|
}
|
|
)
|