Documentation
¶
Index ¶
- Constants
- func MetricsHandler(gatherer prometheus.Gatherer) http.Handler
- func ReadSampleLimit(limit int, sample ReadSampleConfig) int
- func RedisTopKKey(prefix string, metric string, date time.Time) string
- func RegisterMetricsHandler(router *gin.Engine, gatherer prometheus.Gatherer)
- func RegisterMetricsMux(mux *http.ServeMux, gatherer prometheus.Gatherer)
- type BoundedAsyncQueue
- type Counter
- type CounterSpec
- type CounterVec
- type Gauge
- type GaugeSpec
- type GaugeVec
- type Histogram
- type HistogramSpec
- type HistogramVec
- type MetricsFactory
- type ReadSampleConfig
- type RedisTopKConfig
- type RedisTopKStore
- type Runtime
- type RuntimeConfig
- type SortedSetClient
- type SortedSetMember
- type TopKDelta
- type TopKListRequest
- type TopKMember
Constants ¶
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 ¶
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 ¶
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 GaugeVec ¶
type GaugeVec struct {
// contains filtered or unexported fields
}
GaugeVec is a registered gauge vector.
func (*GaugeVec) DeletePartialMatch ¶
DeletePartialMatch deletes gauge series matching labels.
func (*GaugeVec) WithLabelValues ¶
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 ¶
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 ¶
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 ¶
func (s *RedisTopKStore) List(ctx context.Context, req TopKListRequest) ([]TopKMember, error)
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 ¶
MetricsHandler returns this runtime's Prometheus HTTP handler.
func (*Runtime) RegisterMetricsHandler ¶
RegisterMetricsHandler exposes this runtime's Prometheus gatherer at GET /metrics.
func (*Runtime) RegisterMetricsMux ¶
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 ¶
SortedSetMember is a generic member/score pair returned by a sorted set.
type TopKListRequest ¶
TopKListRequest selects known daily keys to aggregate.
type TopKMember ¶
TopKMember contains aggregated scores for one member.