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 ¶
- type Collector
- func (c *Collector) GetSnapshot() *Snapshot
- func (c *Collector) RecordCompaction(segmentsRemoved int, bytesFreed int64, duration time.Duration)
- func (c *Collector) RecordCompactionError()
- func (c *Collector) RecordDequeue(payloadSize int, duration time.Duration)
- func (c *Collector) RecordDequeueBatch(count int, totalPayloadSize int, duration time.Duration)
- func (c *Collector) RecordDequeueError()
- func (c *Collector) RecordEnqueue(payloadSize int, duration time.Duration)
- func (c *Collector) RecordEnqueueBatch(count int, totalPayloadSize int, duration time.Duration)
- func (c *Collector) RecordEnqueueError()
- func (c *Collector) RecordSeek()
- func (c *Collector) Reset()
- func (c *Collector) UpdateQueueState(pending, segments, nextMsgID, readMsgID uint64)
- type NoopCollector
- func (n NoopCollector) GetSnapshot() *Snapshot
- func (n NoopCollector) RecordCompaction(segmentsRemoved int, bytesFreed int64, duration time.Duration)
- func (n NoopCollector) RecordCompactionError()
- func (n NoopCollector) RecordDequeue(payloadSize int, duration time.Duration)
- func (n NoopCollector) RecordDequeueBatch(count, totalPayloadSize int, duration time.Duration)
- func (n NoopCollector) RecordDequeueError()
- func (n NoopCollector) RecordEnqueue(payloadSize int, duration time.Duration)
- func (n NoopCollector) RecordEnqueueBatch(count, totalPayloadSize int, duration time.Duration)
- func (n NoopCollector) RecordEnqueueError()
- func (n NoopCollector) RecordSeek()
- func (n NoopCollector) Reset()
- func (n NoopCollector) UpdateQueueState(pending, segments, nextMsgID, readMsgID uint64)
- type Snapshot
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 ¶
NewCollector creates a new metrics collector for a queue.
func (*Collector) GetSnapshot ¶
GetSnapshot returns a snapshot of current metrics.
func (*Collector) RecordCompaction ¶
RecordCompaction records a compaction operation.
func (*Collector) RecordCompactionError ¶
func (c *Collector) RecordCompactionError()
RecordCompactionError records a compaction failure.
func (*Collector) RecordDequeue ¶
RecordDequeue records a successful dequeue operation.
func (*Collector) RecordDequeueBatch ¶
RecordDequeueBatch records a successful batch dequeue operation.
func (*Collector) RecordDequeueError ¶
func (c *Collector) RecordDequeueError()
RecordDequeueError records a dequeue failure.
func (*Collector) RecordEnqueue ¶
RecordEnqueue records a successful enqueue operation.
func (*Collector) RecordEnqueueBatch ¶
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 ¶
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.