Prometheus Provider

The prometheus.Provider implements invoker.MetricProvider using Prometheus client libraries.

Setup

import eventprom "github.com/isaquesb/go-event-bus/prometheus"

provider := eventprom.NewProvider("myapp")

The namespace is prepended to all metric names: myapp_eventbus_invoker_calls_total.

Options

// Custom registerer (useful for testing)
provider := eventprom.NewProvider("myapp",
    eventprom.WithRegisterer(customRegistry),
)

How It Works

The provider dynamically creates and caches Prometheus metrics (counters, histograms, gauges) based on the metric names and labels provided by invokers. Metrics are created on first use and reused thereafter.

Metric Names

All invokers emit metrics with the eventbus_ prefix:

Core Metrics

Metric Type Labels Source
eventbus_invoker_calls_total Counter event, handler, result Metrics invoker
eventbus_invoker_latency_seconds Histogram event, handler, result Metrics invoker

Retry Metrics

Metric Type Labels Source
eventbus_retry_attempt_total Counter handler Retry invoker
eventbus_retry_success_total Counter handler Retry invoker
eventbus_retry_terminal_total Counter handler Retry invoker
eventbus_retry_exhausted_total Counter handler Retry invoker
eventbus_retry_backoff_ms Histogram handler Retry invoker

Circuit Breaker Metrics

Metric Type Labels Source
eventbus_circuit_state Gauge handler Circuit breaker
eventbus_circuit_open_total Counter handler Circuit breaker
eventbus_circuit_half_open_total Counter handler Circuit breaker
eventbus_circuit_blocked_total Counter handler Circuit breaker

Rate Limit Metrics

Metric Type Labels Source
eventbus_ratelimit_allowed_total Counter handler Rate limiter
eventbus_ratelimit_blocked_total Counter handler Rate limiter
eventbus_ratelimit_error_total Counter handler Rate limiter

Idempotency Metrics

Metric Type Labels Source
eventbus_idempotency_duplicate_total Counter handler, reason Idempotency
eventbus_idempotency_lock_acquired_total Counter handler Idempotency
eventbus_idempotency_executed_total Counter handler Idempotency
eventbus_idempotency_processing_stale_total Counter handler Idempotency
eventbus_idempotency_error_total Counter handler, stage Idempotency

DLQ Metrics

Metric Type Labels Source
eventbus_dlq_published_total Counter handler DLQ invoker
eventbus_dlq_publish_error_total Counter handler DLQ invoker

Histogram Buckets

The eventbus_invoker_latency_seconds histogram uses custom buckets optimized for event processing:

0.001, 0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10

All other histograms use Prometheus default buckets.


Back to top

Copyright © 2025 Isaque de Souza Barbosa. Distributed under the MIT License.