metrics

package
v1.4.2 Latest Latest
Warning

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

Go to latest
Published: Feb 15, 2026 License: Apache-2.0 Imports: 2 Imported by: 0

Documentation

Overview

Package metrics provides Prometheus metrics integration for LedgerQ.

This package offers optional Prometheus metrics collection without requiring Prometheus as a dependency. Metrics are exposed via the standard Prometheus client library pattern, but can be disabled entirely by not registering them.

Usage:

import (
    "github.com/prometheus/client_golang/prometheus"
    "github.com/1mb-dev/ledgerq/internal/metrics"
)

// Create metrics collector
collector := metrics.NewCollector("my_queue")

// Register with Prometheus (optional)
prometheus.MustRegister(collector)

// Record operations
collector.RecordEnqueue(payloadSize, duration)
collector.RecordDequeue(payloadSize, duration)

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Collector

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

Collector tracks queue metrics. Can be used standalone or integrated with Prometheus.

func NewCollector

func NewCollector(queueName string) *Collector

NewCollector creates a new metrics collector for a queue.

func (*Collector) GetSnapshot

func (c *Collector) GetSnapshot() *Snapshot

GetSnapshot returns a snapshot of current metrics.

func (*Collector) RecordCompaction

func (c *Collector) RecordCompaction(segmentsRemoved int, bytesFreed int64, duration time.Duration)

RecordCompaction records a compaction operation.

func (*Collector) RecordCompactionError

func (c *Collector) RecordCompactionError()

RecordCompactionError records a compaction failure.

func (*Collector) RecordDequeue

func (c *Collector) RecordDequeue(payloadSize int, duration time.Duration)

RecordDequeue records a successful dequeue operation.

func (*Collector) RecordDequeueBatch

func (c *Collector) RecordDequeueBatch(count int, totalPayloadSize int, duration time.Duration)

RecordDequeueBatch records a successful batch dequeue operation.

func (*Collector) RecordDequeueError

func (c *Collector) RecordDequeueError()

RecordDequeueError records a dequeue failure.

func (*Collector) RecordEnqueue

func (c *Collector) RecordEnqueue(payloadSize int, duration time.Duration)

RecordEnqueue records a successful enqueue operation.

func (*Collector) RecordEnqueueBatch

func (c *Collector) RecordEnqueueBatch(count int, totalPayloadSize int, duration time.Duration)

RecordEnqueueBatch records a successful batch enqueue operation.

func (*Collector) RecordEnqueueError

func (c *Collector) RecordEnqueueError()

RecordEnqueueError records an enqueue failure.

func (*Collector) RecordSeek

func (c *Collector) RecordSeek()

RecordSeek records a seek operation.

func (*Collector) Reset

func (c *Collector) Reset()

Reset resets all metrics (useful for testing).

func (*Collector) UpdateQueueState

func (c *Collector) UpdateQueueState(pending, segments, nextMsgID, readMsgID uint64)

UpdateQueueState updates queue state metrics (call periodically).

type NoopCollector

type NoopCollector struct{}

NoopCollector is a metrics collector that does nothing. Useful when metrics are disabled.

func (NoopCollector) GetSnapshot

func (n NoopCollector) GetSnapshot() *Snapshot

func (NoopCollector) RecordCompaction

func (n NoopCollector) RecordCompaction(segmentsRemoved int, bytesFreed int64, duration time.Duration)

func (NoopCollector) RecordCompactionError

func (n NoopCollector) RecordCompactionError()

func (NoopCollector) RecordDequeue

func (n NoopCollector) RecordDequeue(payloadSize int, duration time.Duration)

func (NoopCollector) RecordDequeueBatch

func (n NoopCollector) RecordDequeueBatch(count, totalPayloadSize int, duration time.Duration)

func (NoopCollector) RecordDequeueError

func (n NoopCollector) RecordDequeueError()

func (NoopCollector) RecordEnqueue

func (n NoopCollector) RecordEnqueue(payloadSize int, duration time.Duration)

func (NoopCollector) RecordEnqueueBatch

func (n NoopCollector) RecordEnqueueBatch(count, totalPayloadSize int, duration time.Duration)

func (NoopCollector) RecordEnqueueError

func (n NoopCollector) RecordEnqueueError()

func (NoopCollector) RecordSeek

func (n NoopCollector) RecordSeek()

func (NoopCollector) Reset

func (n NoopCollector) Reset()

func (NoopCollector) UpdateQueueState

func (n NoopCollector) UpdateQueueState(pending, segments, nextMsgID, readMsgID uint64)

type Snapshot

type Snapshot struct {
	QueueName string

	// Operation counters
	EnqueueTotal   uint64
	DequeueTotal   uint64
	EnqueueBatch   uint64
	DequeueBatch   uint64
	EnqueueErrors  uint64
	DequeueErrors  uint64
	SeekOperations uint64

	// Payload metrics
	EnqueueBytes uint64
	DequeueBytes uint64

	// Duration percentiles (in nanoseconds)
	EnqueueDurationP50 time.Duration
	EnqueueDurationP95 time.Duration
	EnqueueDurationP99 time.Duration
	DequeueDurationP50 time.Duration
	DequeueDurationP95 time.Duration
	DequeueDurationP99 time.Duration

	// Queue state
	PendingMessages uint64
	SegmentCount    uint64
	NextMessageID   uint64
	ReadMessageID   uint64

	// Compaction metrics
	CompactionsTotal      uint64
	SegmentsRemoved       uint64
	BytesFreed            uint64
	CompactionErrors      uint64
	LastCompactionUnixSec int64
}

Snapshot is a point-in-time view of metrics.

Jump to

Keyboard shortcuts

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