trace

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 3, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FormatTraceparent

func FormatTraceparent(traceID, spanID string) string

FormatTraceparent creates a W3C traceparent header value.

func NewSpanID

func NewSpanID() string

func NewTraceID

func NewTraceID() string

Types

type Collector

type Collector struct {
	// contains filtered or unexported fields
}

Collector receives completed spans and submits them to the store.

func NewCollector

func NewCollector(store Store) *Collector

func (*Collector) Submit

func (c *Collector) Submit(span *Span)

type MemStore

type MemStore struct {
	// contains filtered or unexported fields
}

func NewMemStore

func NewMemStore(maxTraces int) *MemStore

func (*MemStore) Add

func (m *MemStore) Add(span *Span)

func (*MemStore) GetTrace

func (m *MemStore) GetTrace(traceID string) *Trace

func (*MemStore) ListTraces

func (m *MemStore) ListTraces(offset, limit int) []*Trace

func (*MemStore) Subscribe

func (m *MemStore) Subscribe() <-chan *Span

func (*MemStore) Unsubscribe

func (m *MemStore) Unsubscribe(ch <-chan *Span)

type Span

type Span struct {
	TraceID  string     `json:"trace_id"`
	SpanID   string     `json:"span_id"`
	ParentID string     `json:"parent_id,omitempty"`
	Kind     SpanKind   `json:"kind"`
	Name     string     `json:"name"`
	Start    time.Time  `json:"start"`
	Duration float64    `json:"duration_ms"`
	Status   SpanStatus `json:"status"`

	// HTTP fields
	HTTPMethod       string            `json:"http_method,omitempty"`
	HTTPPath         string            `json:"http_path,omitempty"`
	HTTPStatusCode   int               `json:"http_status_code,omitempty"`
	HTTPRequestBody  string            `json:"http_request_body,omitempty"`
	HTTPResponseBody string            `json:"http_response_body,omitempty"`
	HTTPHeaders      map[string]string `json:"http_headers,omitempty"`

	// gRPC fields
	GRPCService      string            `json:"grpc_service,omitempty"`
	GRPCMethod       string            `json:"grpc_method,omitempty"`
	GRPCCode         string            `json:"grpc_code,omitempty"`
	GRPCMetadata     map[string]string `json:"grpc_metadata,omitempty"`
	GRPCRequestBody  string            `json:"grpc_request_body,omitempty"`
	GRPCResponseBody string            `json:"grpc_response_body,omitempty"`

	// SQL fields
	SQLQuery    string `json:"sql_query,omitempty"`
	SQLArgs     string `json:"sql_args,omitempty"`
	SQLRowCount int    `json:"sql_row_count,omitempty"`
	SQLError    string `json:"sql_error,omitempty"`

	// Connect RPC fields
	ConnectService      string            `json:"connect_service,omitempty"`
	ConnectMethod       string            `json:"connect_method,omitempty"`
	ConnectContentType  string            `json:"connect_content_type,omitempty"`
	ConnectTimeoutMs    string            `json:"connect_timeout_ms,omitempty"`
	ConnectHTTPStatus   int               `json:"connect_http_status,omitempty"`
	ConnectErrorCode    string            `json:"connect_error_code,omitempty"`
	ConnectErrorMessage string            `json:"connect_error_message,omitempty"`
	ConnectHeaders      map[string]string `json:"connect_headers,omitempty"`
	ConnectRequestBody  string            `json:"connect_request_body,omitempty"`
	ConnectResponseBody string            `json:"connect_response_body,omitempty"`
	ConnectIsStreaming  bool              `json:"connect_is_streaming,omitempty"`
}

type SpanKind

type SpanKind int
const (
	SpanHTTP SpanKind = iota
	SpanConnect
	SpanGRPC
	SpanSQL
)

func (SpanKind) MarshalJSON

func (k SpanKind) MarshalJSON() ([]byte, error)

func (SpanKind) String

func (k SpanKind) String() string

func (*SpanKind) UnmarshalJSON

func (k *SpanKind) UnmarshalJSON(data []byte) error

type SpanStatus

type SpanStatus int
const (
	StatusOK SpanStatus = iota
	StatusError
)

func (SpanStatus) MarshalJSON

func (s SpanStatus) MarshalJSON() ([]byte, error)

func (SpanStatus) String

func (s SpanStatus) String() string

func (*SpanStatus) UnmarshalJSON

func (s *SpanStatus) UnmarshalJSON(data []byte) error

type Store

type Store interface {
	Add(span *Span)
	GetTrace(traceID string) *Trace
	ListTraces(offset, limit int) []*Trace
	Subscribe() <-chan *Span
	Unsubscribe(ch <-chan *Span)
}

type Trace

type Trace struct {
	TraceID  string    `json:"trace_id"`
	Spans    []*Span   `json:"spans"`
	Start    time.Time `json:"start"`
	Duration float64   `json:"duration_ms"`
}

func (*Trace) RootSpan

func (t *Trace) RootSpan() *Span

type TraceparentContext

type TraceparentContext struct {
	TraceID string
	SpanID  string
}

TraceparentContext holds the trace and parent span IDs extracted from a W3C traceparent header.

func ParseTraceparent

func ParseTraceparent(header string) (TraceparentContext, bool)

ParseTraceparent extracts trace and span IDs from a W3C traceparent header. Format: version-traceID-spanID-flags (e.g. "00-abc...def-012...345-01")

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL