observability

package
v0.0.0-...-5658057 Latest Latest
Warning

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

Go to latest
Published: Sep 24, 2026 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultAsyncBuffer = 1024

DefaultAsyncBuffer is the default queue size for best-effort observability work.

Variables

This section is empty.

Functions

func MetricsHandler

func MetricsHandler(gatherer prometheus.Gatherer) http.Handler

MetricsHandler returns the Prometheus HTTP handler for gatherer.

func ReadSampleLimit

func ReadSampleLimit(limit int, sample ReadSampleConfig) int

ReadSampleLimit returns the bounded per-day read limit for a response limit.

func RedisTopKKey

func RedisTopKKey(prefix string, metric string, date time.Time) string

RedisTopKKey builds the daily sorted-set key for prefix, metric and date.

func RegisterMetricsHandler

func RegisterMetricsHandler(router *gin.Engine, gatherer prometheus.Gatherer)

RegisterMetricsHandler exposes Prometheus metrics at GET /metrics on a Gin router.

func RegisterMetricsMux

func RegisterMetricsMux(mux *http.ServeMux, gatherer prometheus.Gatherer)

RegisterMetricsMux exposes Prometheus metrics at GET /metrics on mux.

Types

type BoundedAsyncQueue

type BoundedAsyncQueue[T any] struct {
	// contains filtered or unexported fields
}

BoundedAsyncQueue runs best-effort observability jobs outside the caller path. When the queue is full, TryEnqueue returns false and the caller decides how to account for the dropped job.

func NewBoundedAsyncQueue

func NewBoundedAsyncQueue[T any](buffer int, handle func(T)) *BoundedAsyncQueue[T]

NewBoundedAsyncQueue creates a queue with one background worker.

func (*BoundedAsyncQueue[T]) TryEnqueue

func (q *BoundedAsyncQueue[T]) TryEnqueue(job T) bool

TryEnqueue schedules job without blocking. It returns false when the queue is full.

type Counter

type Counter interface {
	Inc()
	Add(float64)
}

Counter is the subset of prometheus.Counter used by service code.

type CounterSpec

type CounterSpec struct {
	Name   string
	Help   string
	Labels []string
}

CounterSpec describes a counter vector.

type CounterVec

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

CounterVec is a registered counter vector.

func (*CounterVec) WithLabelValues

func (v *CounterVec) WithLabelValues(values ...string) Counter

WithLabelValues returns the counter for label values.

type Gauge

type Gauge interface {
	Set(float64)
}

Gauge is the subset of prometheus.Gauge used by service code.

type GaugeSpec

type GaugeSpec struct {
	Name   string
	Help   string
	Labels []string
}

GaugeSpec describes a gauge vector.

type GaugeVec

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

GaugeVec is a registered gauge vector.

func (*GaugeVec) DeletePartialMatch

func (v *GaugeVec) DeletePartialMatch(labels map[string]string) int

DeletePartialMatch deletes gauge series matching labels.

func (*GaugeVec) WithLabelValues

func (v *GaugeVec) WithLabelValues(values ...string) Gauge

WithLabelValues returns the gauge for label values.

type Histogram

type Histogram interface {
	Observe(float64)
}

Histogram is the subset of prometheus.Observer used by service code.

type HistogramSpec

type HistogramSpec struct {
	Name    string
	Help    string
	Labels  []string
	Buckets []float64
}

HistogramSpec describes a histogram vector.

type HistogramVec

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

HistogramVec is a registered histogram vector.

func (*HistogramVec) WithLabelValues

func (v *HistogramVec) WithLabelValues(values ...string) Histogram

WithLabelValues returns the histogram for label values.

type MetricsFactory

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

MetricsFactory creates and registers generic Prometheus instruments.

func NewMetricsFactory

func NewMetricsFactory(registerer prometheus.Registerer) *MetricsFactory

NewMetricsFactory creates a factory backed by registerer.

func (*MetricsFactory) CounterVec

func (f *MetricsFactory) CounterVec(spec CounterSpec) *CounterVec

CounterVec creates and registers a counter vector.

func (*MetricsFactory) GaugeVec

func (f *MetricsFactory) GaugeVec(spec GaugeSpec) *GaugeVec

GaugeVec creates and registers a gauge vector.

func (*MetricsFactory) HistogramVec

func (f *MetricsFactory) HistogramVec(spec HistogramSpec) *HistogramVec

HistogramVec creates and registers a histogram vector.

type ReadSampleConfig

type ReadSampleConfig struct {
	Min        int
	Max        int
	Multiplier int
}

ReadSampleConfig bounds how many items are read per day and metric.

type RedisTopKConfig

type RedisTopKConfig struct {
	Prefix           string
	DefaultTTL       time.Duration
	OperationTimeout time.Duration
	ReadSample       ReadSampleConfig
}

RedisTopKConfig configures a Redis-backed daily top-k accumulator.

type RedisTopKStore

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

RedisTopKStore accumulates daily Redis sorted sets and aggregates bounded top-k windows.

func NewRedisTopKStore

func NewRedisTopKStore(client SortedSetClient, config RedisTopKConfig) *RedisTopKStore

NewRedisTopKStore creates a Redis-backed top-k store. The client must use bounded sorted-set commands only; the store never discovers keys by scan.

func (*RedisTopKStore) Increment

func (s *RedisTopKStore) Increment(
	ctx context.Context,
	date time.Time,
	member string,
	deltas []TopKDelta,
	ttl time.Duration,
) error

Increment increments daily sorted sets for member. Zero deltas are skipped.

func (*RedisTopKStore) List

List aggregates top-k scores across known daily keys. It reads a bounded sample from each day and metric, then merges and sorts in memory.

type Runtime

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

Runtime owns generic observability infrastructure for a service.

func NewRuntime

func NewRuntime(config RuntimeConfig) *Runtime

NewRuntime creates a generic observability runtime. By default it uses an isolated Prometheus registry to avoid global registration side effects.

func (*Runtime) Metrics

func (r *Runtime) Metrics() *MetricsFactory

Metrics returns a factory for service-specific instruments.

func (*Runtime) MetricsHandler

func (r *Runtime) MetricsHandler() http.Handler

MetricsHandler returns this runtime's Prometheus HTTP handler.

func (*Runtime) RegisterMetricsHandler

func (r *Runtime) RegisterMetricsHandler(router *gin.Engine)

RegisterMetricsHandler exposes this runtime's Prometheus gatherer at GET /metrics.

func (*Runtime) RegisterMetricsMux

func (r *Runtime) RegisterMetricsMux(mux *http.ServeMux)

RegisterMetricsMux exposes this runtime's Prometheus gatherer at GET /metrics on mux.

type RuntimeConfig

type RuntimeConfig struct {
	Registerer prometheus.Registerer
	Gatherer   prometheus.Gatherer
}

RuntimeConfig configures the generic observability runtime.

type SortedSetClient

type SortedSetClient interface {
	ZIncrByWithExpire(ctx context.Context, key string, increment float64, member string, ttl time.Duration) (float64, error)
	ZRevRangeWithScores(ctx context.Context, key string, start, stop int64) ([]SortedSetMember, error)
}

SortedSetClient is the minimal Redis surface needed by RedisTopKStore.

type SortedSetMember

type SortedSetMember struct {
	Member string
	Score  float64
}

SortedSetMember is a generic member/score pair returned by a sorted set.

type TopKDelta

type TopKDelta struct {
	Metric string
	Value  float64
}

TopKDelta is one metric increment for one top-k member.

type TopKListRequest

type TopKListRequest struct {
	Now     time.Time
	Days    int
	Metrics []string
	Limit   int
}

TopKListRequest selects known daily keys to aggregate.

type TopKMember

type TopKMember struct {
	Member string
	Scores map[string]float64
}

TopKMember contains aggregated scores for one member.

Jump to

Keyboard shortcuts

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