Documentation
¶
Overview ¶
Package graphql exposes otelop's in-memory telemetry store to callers via a GraphQL schema. It is the integration surface for AI-driven investigation — field selection lets callers take exactly the data they want (and nothing more), and the Trace.logs field implements the standard trace↔log correlation join in one round-trip.
graph-gophers/graphql-go matches GraphQL field names to Go method names case-insensitively (ignoring underscores), so idiomatic Go identifiers like TraceID/SpanID resolve the `traceId`/`spanId` schema fields directly — no rename is needed on the Go side when the schema uses camelCase with a lowercase "d".
Index ¶
- func MustNewSchema(s *store.Store, runtime RuntimeInfo) *gql.Schema
- func Source() string
- type ConfigResolver
- func (c *ConfigResolver) LogCap() int32
- func (c *ConfigResolver) LogCount() int32
- func (c *ConfigResolver) MaxDataPoints() int32
- func (c *ConfigResolver) MetricCap() int32
- func (c *ConfigResolver) MetricCount() int32
- func (c *ConfigResolver) TraceCap() int32
- func (c *ConfigResolver) TraceCount() int32
- type ConnectionResolver
- type DataPointResolver
- func (r *DataPointResolver) Attributes() JSONMap
- func (r *DataPointResolver) Count() *float64
- func (r *DataPointResolver) Max() *float64
- func (r *DataPointResolver) Min() *float64
- func (r *DataPointResolver) Sum() *float64
- func (r *DataPointResolver) Timestamp() gql.Time
- func (r *DataPointResolver) Value() float64
- type JSONMap
- type LogResolver
- func (r *LogResolver) Attributes() JSONMap
- func (r *LogResolver) Body() string
- func (r *LogResolver) ObservedTimestamp() gql.Time
- func (r *LogResolver) Resource() JSONMap
- func (r *LogResolver) ServiceName() string
- func (r *LogResolver) SeverityNumber() int32
- func (r *LogResolver) SeverityText() string
- func (r *LogResolver) Span() *SpanResolver
- func (r *LogResolver) SpanID() string
- func (r *LogResolver) Timestamp() gql.Time
- func (r *LogResolver) Trace() *TraceResolver
- func (r *LogResolver) TraceID() string
- type LogsArgs
- type MetricResolver
- func (r *MetricResolver) DataPoints() []*DataPointResolver
- func (r *MetricResolver) Description() string
- func (r *MetricResolver) Name() string
- func (r *MetricResolver) PointCount() int32
- func (r *MetricResolver) ReceivedAt() gql.Time
- func (r *MetricResolver) Resource() JSONMap
- func (r *MetricResolver) ServiceName() string
- func (r *MetricResolver) Type() string
- func (r *MetricResolver) Unit() string
- type MetricsArgs
- type Resolver
- func (r *Resolver) ClearSignals() bool
- func (r *Resolver) Config() *ConfigResolver
- func (r *Resolver) Logs(args LogsArgs) *ConnectionResolver[*LogResolver]
- func (r *Resolver) Metrics(args MetricsArgs) *ConnectionResolver[*MetricResolver]
- func (r *Resolver) Status() *StatusResolver
- func (r *Resolver) Trace(args TraceArgs) *TraceResolver
- func (r *Resolver) Traces(args TracesArgs) *ConnectionResolver[*TraceResolver]
- type RuntimeInfo
- type SpanEventResolver
- type SpanResolver
- func (r *SpanResolver) Attributes() JSONMap
- func (r *SpanResolver) DurationMs() float64
- func (r *SpanResolver) EndTime() gql.Time
- func (r *SpanResolver) Events() []*SpanEventResolver
- func (r *SpanResolver) Kind() string
- func (r *SpanResolver) Name() string
- func (r *SpanResolver) Parent() *SpanResolver
- func (r *SpanResolver) ParentSpanID() string
- func (r *SpanResolver) Resource() JSONMap
- func (r *SpanResolver) ServiceName() string
- func (r *SpanResolver) SpanID() gql.ID
- func (r *SpanResolver) StartTime() gql.Time
- func (r *SpanResolver) StatusCode() string
- func (r *SpanResolver) StatusMessage() string
- func (r *SpanResolver) Trace() *TraceResolver
- func (r *SpanResolver) TraceID() gql.ID
- type StatusResolver
- func (s *StatusResolver) Config() *ConfigResolver
- func (s *StatusResolver) Debug() bool
- func (s *StatusResolver) HTTPAddr() string
- func (s *StatusResolver) OTLPGrpcAddr() string
- func (s *StatusResolver) OTLPHTTPAddr() string
- func (s *StatusResolver) ProxyProtocol() string
- func (s *StatusResolver) ProxyURL() string
- func (s *StatusResolver) StartedAt() gql.Time
- func (s *StatusResolver) UptimeMs() float64
- func (s *StatusResolver) Version() string
- type TraceArgs
- type TraceResolver
- func (r *TraceResolver) DurationMs() float64
- func (r *TraceResolver) HasError() bool
- func (r *TraceResolver) Logs() []*LogResolver
- func (r *TraceResolver) RootSpan() *SpanResolver
- func (r *TraceResolver) ServiceName() string
- func (r *TraceResolver) SpanCount() int32
- func (r *TraceResolver) Spans() []*SpanResolver
- func (r *TraceResolver) StartTime() gql.Time
- func (r *TraceResolver) TraceID() gql.ID
- type TracesArgs
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func MustNewSchema ¶
func MustNewSchema(s *store.Store, runtime RuntimeInfo) *gql.Schema
MustNewSchema parses the embedded schema and binds it to a resolver backed by the given store. It panics on schema errors so misconfigurations fail at startup, not at query time.
Types ¶
type ConfigResolver ¶
type ConfigResolver struct {
// contains filtered or unexported fields
}
ConfigResolver holds a snapshot of capacity and live counts. Values are captured once at resolve time so the fields don't re-lock the store on every field access.
func (*ConfigResolver) LogCap ¶
func (c *ConfigResolver) LogCap() int32
func (*ConfigResolver) LogCount ¶
func (c *ConfigResolver) LogCount() int32
func (*ConfigResolver) MaxDataPoints ¶
func (c *ConfigResolver) MaxDataPoints() int32
func (*ConfigResolver) MetricCap ¶
func (c *ConfigResolver) MetricCap() int32
func (*ConfigResolver) MetricCount ¶
func (c *ConfigResolver) MetricCount() int32
func (*ConfigResolver) TraceCap ¶
func (c *ConfigResolver) TraceCap() int32
func (*ConfigResolver) TraceCount ¶
func (c *ConfigResolver) TraceCount() int32
type ConnectionResolver ¶ added in v0.6.0
type ConnectionResolver[T any] struct { // contains filtered or unexported fields }
ConnectionResolver is the generic paginated-list response shared by traces/metrics/logs. Instantiated per element type via newConnection.
func (*ConnectionResolver[T]) Items ¶ added in v0.6.0
func (c *ConnectionResolver[T]) Items() []T
func (*ConnectionResolver[T]) Limit ¶ added in v0.6.0
func (c *ConnectionResolver[T]) Limit() int32
func (*ConnectionResolver[T]) Offset ¶ added in v0.6.0
func (c *ConnectionResolver[T]) Offset() int32
func (*ConnectionResolver[T]) Total ¶ added in v0.6.0
func (c *ConnectionResolver[T]) Total() int32
type DataPointResolver ¶
type DataPointResolver struct {
// contains filtered or unexported fields
}
func (*DataPointResolver) Attributes ¶
func (r *DataPointResolver) Attributes() JSONMap
func (*DataPointResolver) Count ¶ added in v0.3.0
func (r *DataPointResolver) Count() *float64
func (*DataPointResolver) Max ¶ added in v0.3.0
func (r *DataPointResolver) Max() *float64
func (*DataPointResolver) Min ¶ added in v0.3.0
func (r *DataPointResolver) Min() *float64
func (*DataPointResolver) Sum ¶ added in v0.3.0
func (r *DataPointResolver) Sum() *float64
func (*DataPointResolver) Timestamp ¶
func (r *DataPointResolver) Timestamp() gql.Time
func (*DataPointResolver) Value ¶
func (r *DataPointResolver) Value() float64
type JSONMap ¶
JSONMap is the Go representation of the schema's `JSON` scalar. It carries arbitrary key/value data — used for span/log attributes and resource maps — and relies on encoding/json to marshal the underlying map as-is.
func (JSONMap) ImplementsGraphQLType ¶
ImplementsGraphQLType satisfies the graph-gophers/graphql-go custom-scalar contract by claiming the `JSON` scalar name.
func (*JSONMap) UnmarshalGraphQL ¶
UnmarshalGraphQL accepts JSON object literals passed as variables.
type LogResolver ¶
type LogResolver struct {
// contains filtered or unexported fields
}
func (*LogResolver) Attributes ¶
func (r *LogResolver) Attributes() JSONMap
func (*LogResolver) Body ¶
func (r *LogResolver) Body() string
func (*LogResolver) ObservedTimestamp ¶
func (r *LogResolver) ObservedTimestamp() gql.Time
func (*LogResolver) Resource ¶
func (r *LogResolver) Resource() JSONMap
func (*LogResolver) ServiceName ¶
func (r *LogResolver) ServiceName() string
func (*LogResolver) SeverityNumber ¶
func (r *LogResolver) SeverityNumber() int32
func (*LogResolver) SeverityText ¶
func (r *LogResolver) SeverityText() string
func (*LogResolver) Span ¶
func (r *LogResolver) Span() *SpanResolver
func (*LogResolver) SpanID ¶
func (r *LogResolver) SpanID() string
func (*LogResolver) Timestamp ¶
func (r *LogResolver) Timestamp() gql.Time
func (*LogResolver) Trace ¶
func (r *LogResolver) Trace() *TraceResolver
func (*LogResolver) TraceID ¶
func (r *LogResolver) TraceID() string
type MetricResolver ¶
type MetricResolver struct {
// contains filtered or unexported fields
}
func (*MetricResolver) DataPoints ¶
func (r *MetricResolver) DataPoints() []*DataPointResolver
func (*MetricResolver) Description ¶
func (r *MetricResolver) Description() string
func (*MetricResolver) Name ¶
func (r *MetricResolver) Name() string
func (*MetricResolver) PointCount ¶
func (r *MetricResolver) PointCount() int32
func (*MetricResolver) ReceivedAt ¶
func (r *MetricResolver) ReceivedAt() gql.Time
func (*MetricResolver) Resource ¶
func (r *MetricResolver) Resource() JSONMap
func (*MetricResolver) ServiceName ¶
func (r *MetricResolver) ServiceName() string
func (*MetricResolver) Type ¶
func (r *MetricResolver) Type() string
func (*MetricResolver) Unit ¶
func (r *MetricResolver) Unit() string
type MetricsArgs ¶
type Resolver ¶
type Resolver struct {
// contains filtered or unexported fields
}
Resolver is the root resolver for the GraphQL schema. It holds the store reference shared with every sub-resolver so nested fields (e.g. Trace.logs) can reach back for correlated data without threading extra state through.
func (*Resolver) ClearSignals ¶
func (*Resolver) Config ¶
func (r *Resolver) Config() *ConfigResolver
func (*Resolver) Logs ¶
func (r *Resolver) Logs(args LogsArgs) *ConnectionResolver[*LogResolver]
func (*Resolver) Metrics ¶
func (r *Resolver) Metrics(args MetricsArgs) *ConnectionResolver[*MetricResolver]
func (*Resolver) Status ¶ added in v0.4.0
func (r *Resolver) Status() *StatusResolver
func (*Resolver) Trace ¶
func (r *Resolver) Trace(args TraceArgs) *TraceResolver
func (*Resolver) Traces ¶
func (r *Resolver) Traces(args TracesArgs) *ConnectionResolver[*TraceResolver]
type RuntimeInfo ¶ added in v0.4.0
type RuntimeInfo struct {
Version string
StartedAt time.Time
HTTPAddr string
OTLPGRPCAddr string
OTLPHTTPAddr string
ProxyURL string
ProxyProtocol string
Debug bool
}
RuntimeInfo is captured once at startup and passed to the resolver so the `status` query can report process-level state without reaching into package globals.
type SpanEventResolver ¶
type SpanEventResolver struct {
// contains filtered or unexported fields
}
func (*SpanEventResolver) Attributes ¶
func (r *SpanEventResolver) Attributes() JSONMap
func (*SpanEventResolver) Name ¶
func (r *SpanEventResolver) Name() string
func (*SpanEventResolver) Timestamp ¶
func (r *SpanEventResolver) Timestamp() gql.Time
type SpanResolver ¶
type SpanResolver struct {
// contains filtered or unexported fields
}
SpanResolver carries a back-pointer to the owning TraceData so span.trace and span.parent resolve without re-querying the store.
func (*SpanResolver) Attributes ¶
func (r *SpanResolver) Attributes() JSONMap
func (*SpanResolver) DurationMs ¶
func (r *SpanResolver) DurationMs() float64
func (*SpanResolver) EndTime ¶
func (r *SpanResolver) EndTime() gql.Time
func (*SpanResolver) Events ¶
func (r *SpanResolver) Events() []*SpanEventResolver
func (*SpanResolver) Kind ¶
func (r *SpanResolver) Kind() string
func (*SpanResolver) Name ¶
func (r *SpanResolver) Name() string
func (*SpanResolver) Parent ¶
func (r *SpanResolver) Parent() *SpanResolver
Parent is the edge to the parent span within the same trace. Returns nil for root spans (ParentSpanID empty) or when the parent has not been buffered under the same trace.
func (*SpanResolver) ParentSpanID ¶
func (r *SpanResolver) ParentSpanID() string
func (*SpanResolver) Resource ¶
func (r *SpanResolver) Resource() JSONMap
func (*SpanResolver) ServiceName ¶
func (r *SpanResolver) ServiceName() string
func (*SpanResolver) SpanID ¶
func (r *SpanResolver) SpanID() gql.ID
func (*SpanResolver) StartTime ¶
func (r *SpanResolver) StartTime() gql.Time
func (*SpanResolver) StatusCode ¶
func (r *SpanResolver) StatusCode() string
func (*SpanResolver) StatusMessage ¶
func (r *SpanResolver) StatusMessage() string
func (*SpanResolver) Trace ¶
func (r *SpanResolver) Trace() *TraceResolver
Trace is the edge back to the owning trace — always present because spans are only ever returned via a Trace in the schema.
func (*SpanResolver) TraceID ¶
func (r *SpanResolver) TraceID() gql.ID
type StatusResolver ¶ added in v0.4.0
type StatusResolver struct {
// contains filtered or unexported fields
}
func (*StatusResolver) Config ¶ added in v0.4.0
func (s *StatusResolver) Config() *ConfigResolver
func (*StatusResolver) Debug ¶ added in v0.4.0
func (s *StatusResolver) Debug() bool
func (*StatusResolver) HTTPAddr ¶ added in v0.4.0
func (s *StatusResolver) HTTPAddr() string
func (*StatusResolver) OTLPGrpcAddr ¶ added in v0.4.0
func (s *StatusResolver) OTLPGrpcAddr() string
func (*StatusResolver) OTLPHTTPAddr ¶ added in v0.4.0
func (s *StatusResolver) OTLPHTTPAddr() string
func (*StatusResolver) ProxyProtocol ¶ added in v0.5.0
func (s *StatusResolver) ProxyProtocol() string
func (*StatusResolver) ProxyURL ¶ added in v0.5.0
func (s *StatusResolver) ProxyURL() string
func (*StatusResolver) StartedAt ¶ added in v0.4.0
func (s *StatusResolver) StartedAt() gql.Time
func (*StatusResolver) UptimeMs ¶ added in v0.4.0
func (s *StatusResolver) UptimeMs() float64
func (*StatusResolver) Version ¶ added in v0.4.0
func (s *StatusResolver) Version() string
type TraceResolver ¶
type TraceResolver struct {
// contains filtered or unexported fields
}
TraceResolver carries a store handle so Trace.logs can issue the correlation query without plumbing extra state through.
func (*TraceResolver) DurationMs ¶
func (r *TraceResolver) DurationMs() float64
func (*TraceResolver) HasError ¶
func (r *TraceResolver) HasError() bool
func (*TraceResolver) Logs ¶
func (r *TraceResolver) Logs() []*LogResolver
func (*TraceResolver) RootSpan ¶
func (r *TraceResolver) RootSpan() *SpanResolver
func (*TraceResolver) ServiceName ¶
func (r *TraceResolver) ServiceName() string
func (*TraceResolver) SpanCount ¶
func (r *TraceResolver) SpanCount() int32
func (*TraceResolver) Spans ¶
func (r *TraceResolver) Spans() []*SpanResolver
func (*TraceResolver) StartTime ¶
func (r *TraceResolver) StartTime() gql.Time
func (*TraceResolver) TraceID ¶
func (r *TraceResolver) TraceID() gql.ID