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
- Variables
- func Register(registerer prometheus.Registerer) error
- func RegisterRuntime() uint64
- func RegisterWriter() uint64
- func SetDatabaseListenerHealth(id uint64, healthy bool)
- func SetDeliveryReaperHealth(id uint64, healthy bool)
- func SetPersistenceLag(id uint64, seconds float64)
- func SetSchedulerDueLag(id uint64, seconds float64)
- func SetSchedulerHealth(id uint64, healthy bool)
- func SetWriterHealth(id uint64, healthy bool)
- func UnregisterRuntime(id uint64)
- func UnregisterWriter(id uint64)
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 SetDeliveryReaperHealth ¶ added in v0.3.0
func SetPersistenceLag ¶ added in v0.3.0
func SetSchedulerDueLag ¶ added in v0.3.0
func SetSchedulerHealth ¶ added in v0.3.0
func SetWriterHealth ¶ added in v0.3.0
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.
Click to show internal directories.
Click to hide internal directories.