metric

package
v0.3.0-rc.1 Latest Latest
Warning

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

Go to latest
Published: Jul 22, 2026 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Overview

Package metric contains the Prometheus collectors used by BlockQueue's queue and worker runtimes. Most applications should configure metrics through blockqueue.Options and worker.Options instead of registering collectors directly.

Index

Constants

View Source
const (
	OutcomeSuccess    = "success"
	OutcomeFailed     = "failed"
	OutcomeLeaseLost  = "lease_lost"
	OutcomeDeadLetter = "dead_letter"
	OutcomeBusy       = "busy"
	OutcomeRetry      = "retry"
	OutcomeYielded    = "yielded"
)

Common outcomes are part of BlockQueue's stable Prometheus label schema.

View Source
const (
	MaintenanceOperationDeliveryReaper = "delivery_reaper"
	MaintenanceOperationScheduler      = "scheduler"
	MaintenanceOperationTopology       = "topology_cleanup"
)
View Source
const (
	PublishResultAdmitted  = "admitted"
	PublishResultPersisted = "persisted"
	PublishResultDuplicate = "duplicate"
)
View Source
const (
	DeliveryOperationClaim     = "claim"
	DeliveryOperationAck       = "ack"
	DeliveryOperationNack      = "nack"
	DeliveryOperationLease     = "lease"
	DeliveryOperationBatchAck  = "batch_ack"
	DeliveryOperationBatchNack = "batch_nack"
)
View Source
const (
	SchedulerOperationClaimed   = "claimed"
	SchedulerOperationPublished = "published"
)
View Source
const (
	WorkerOutcomeProcessed        = "processed"
	WorkerOutcomeNacked           = "nacked"
	WorkerOutcomeCancelled        = "cancelled"
	WorkerOutcomeLeaseLost        = OutcomeLeaseLost
	WorkerOutcomeCompletionFailed = "completion_failed"
)
View Source
const (
	WorkerHandlerResultOK              = "ok"
	WorkerHandlerResultError           = "error"
	WorkerHandlerResultCancelRequested = "cancel_requested"
	WorkerHandlerResultPanic           = "panic"
)

Variables

View Source
var (
	PublishResults = prometheus.NewCounterVec(prometheus.CounterOpts{
		Namespace: "blockqueue", Name: "persistence_total", Help: "Persistence outcomes.",
	}, []string{"result"})
	PendingMessages = prometheus.NewGauge(prometheus.GaugeOpts{
		Namespace: "blockqueue", Name: "pending_messages", Help: "Admitted messages waiting for commit.",
	})
	PendingBytes = prometheus.NewGauge(prometheus.GaugeOpts{
		Namespace: "blockqueue", Name: "pending_bytes", Help: "Admitted bytes waiting for commit.",
	})
	WriterHealthy = prometheus.NewGauge(prometheus.GaugeOpts{
		Namespace: "blockqueue", Name: "writer_healthy", Help: "Whether the last writer flush succeeded.",
	})
	PersistenceLag = prometheus.NewGauge(prometheus.GaugeOpts{
		Namespace: "blockqueue", Name: "persistence_lag_seconds", Help: "Age of the oldest message in the current flush.",
	})
	FlushTotal = prometheus.NewCounterVec(prometheus.CounterOpts{
		Namespace: "blockqueue", Name: "flush_total", Help: "Writer flush outcomes.",
	}, []string{"result"})
	FlushSize = prometheus.NewHistogram(prometheus.HistogramOpts{
		Namespace: "blockqueue", Name: "flush_size", Help: "Messages per database flush.", Buckets: prometheus.ExponentialBuckets(1, 2, 11),
	})
	FlushDuration = prometheus.NewHistogram(prometheus.HistogramOpts{
		Namespace: "blockqueue", Name: "flush_duration_seconds", Help: "Database flush duration.",
	})
	DeliveryOperations = prometheus.NewCounterVec(prometheus.CounterOpts{
		Namespace: "blockqueue", Name: "delivery_operation_total", Help: "Delivery ACK/NACK/lease outcomes.",
	}, []string{"operation", "result"})
	DeliveryDuration = prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Namespace: "blockqueue", Name: "delivery_operation_duration_seconds", Help: "Delivery operation latency.",
	}, []string{"operation"})
	CheckpointDuration = prometheus.NewHistogram(prometheus.HistogramOpts{
		Namespace: "blockqueue", Name: "checkpoint_duration_seconds", Help: "SQLite checkpoint duration.",
	})
	CheckpointResults = prometheus.NewCounterVec(prometheus.CounterOpts{
		Namespace: "blockqueue", Name: "checkpoint_total", Help: "SQLite checkpoint outcomes.",
	}, []string{"result"})
	SchedulerOperations = prometheus.NewCounterVec(prometheus.CounterOpts{
		Namespace: "blockqueue", Name: "scheduler_operation_total", Help: "Scheduler outcomes.",
	}, []string{"operation", "result"})
	SchedulerHealthy = prometheus.NewGauge(prometheus.GaugeOpts{
		Namespace: "blockqueue", Name: "scheduler_healthy", Help: "Whether every active scheduler can query and claim work.",
	})
	SchedulerDueLag = prometheus.NewGauge(prometheus.GaugeOpts{
		Namespace: "blockqueue", Name: "scheduler_due_lag_seconds", Help: "Maximum overdue age observed by active schedulers.",
	})
	DeliveryReaperHealthy = prometheus.NewGauge(prometheus.GaugeOpts{
		Namespace: "blockqueue", Name: "delivery_reaper_healthy", Help: "Whether every active lease reaper can query and update deliveries.",
	})
	DatabaseListenerHealthy = prometheus.NewGauge(prometheus.GaugeOpts{
		Namespace: "blockqueue", Name: "database_listener_healthy", Help: "Whether every active PostgreSQL queue has a notification listener.",
	})
	MaintenanceRows = prometheus.NewCounterVec(prometheus.CounterOpts{
		Namespace: "blockqueue", Name: "maintenance_rows_total", Help: "Rows processed by bounded maintenance operations.",
	}, []string{"operation"})
	MaintenancePasses = prometheus.NewCounterVec(prometheus.CounterOpts{
		Namespace: "blockqueue", Name: "maintenance_pass_total", Help: "Bounded maintenance pass outcomes.",
	}, []string{"operation", "result"})
	MaintenanceDuration = prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Namespace: "blockqueue", Name: "maintenance_duration_seconds", Help: "Duration of bounded maintenance passes.",
	}, []string{"operation"})
	WorkerJobs = prometheus.NewCounterVec(prometheus.CounterOpts{
		Namespace: "blockqueue", Name: "worker_jobs_total", Help: "Completed worker attempts by final disposition.",
	}, []string{"topic", "subscriber", "outcome"})
	WorkerHandlerDuration = prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Namespace: "blockqueue", Name: "worker_handler_duration_seconds", Help: "Worker handler execution duration by return semantics.",
		Buckets: []float64{0.001, 0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10, 30, 60, 300, 900, 3600},
	}, []string{"topic", "subscriber", "result"})
	WorkerActiveHandlers = prometheus.NewGaugeVec(prometheus.GaugeOpts{
		Namespace: "blockqueue", Name: "worker_active_handlers", Help: "Currently executing worker handlers.",
	}, []string{"topic", "subscriber"})
	WorkerHeartbeats = prometheus.NewCounterVec(prometheus.CounterOpts{
		Namespace: "blockqueue", Name: "worker_heartbeat_total", Help: "Worker lease heartbeat outcomes.",
	}, []string{"topic", "subscriber", "result"})
)

Functions

func Register added in v0.2.0

func Register(registerer prometheus.Registerer) error

func RegisterRuntime added in v0.3.0

func RegisterRuntime() uint64

func RegisterWriter added in v0.3.0

func RegisterWriter() uint64

func SetDatabaseListenerHealth added in v0.3.0

func SetDatabaseListenerHealth(id uint64, healthy bool)

func SetDeliveryReaperHealth added in v0.3.0

func SetDeliveryReaperHealth(id uint64, healthy bool)

func SetPersistenceLag added in v0.3.0

func SetPersistenceLag(id uint64, seconds float64)

func SetSchedulerDueLag added in v0.3.0

func SetSchedulerDueLag(id uint64, seconds float64)

func SetSchedulerHealth added in v0.3.0

func SetSchedulerHealth(id uint64, healthy bool)

func SetWriterHealth added in v0.3.0

func SetWriterHealth(id uint64, healthy bool)

func UnregisterRuntime added in v0.3.0

func UnregisterRuntime(id uint64)

func UnregisterWriter added in v0.3.0

func UnregisterWriter(id uint64)

Types

This section is empty.

Jump to

Keyboard shortcuts

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