Documentation
¶
Overview ¶
Package otel provides OpenTelemetry integration for the go-rabbitmq library. It implements the MetricsCollector and Tracer interfaces using OpenTelemetry semantic conventions for messaging systems.
Usage:
import (
"github.com/cloudresty/go-rabbitmq"
"github.com/cloudresty/go-rabbitmq/otel"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/metric"
)
// Create OpenTelemetry metrics collector
meter := otel.Meter("rabbitmq-client")
metrics, err := otel.NewMetricsCollector(meter)
if err != nil {
log.Fatal(err)
}
// Create OpenTelemetry tracer
tracer := otel.NewTracer(otel.Tracer("rabbitmq-client"))
// Use with client
client, err := rabbitmq.NewClient(
rabbitmq.WithMetrics(metrics),
rabbitmq.WithTracer(tracer),
)
Index ¶
- Constants
- type MetricsCollector
- func (m *MetricsCollector) RecordConnection(connectionName string)
- func (m *MetricsCollector) RecordConnectionAttempt(success bool, duration time.Duration)
- func (m *MetricsCollector) RecordConsume(queue string, messageSize int, duration time.Duration)
- func (m *MetricsCollector) RecordDeliveryOutcome(outcome rabbitmq.DeliveryOutcome, duration time.Duration)
- func (m *MetricsCollector) RecordDeliveryTimeout(messageID string)
- func (m *MetricsCollector) RecordError(operation string, err error)
- func (m *MetricsCollector) RecordHealthCheck(success bool, duration time.Duration)
- func (m *MetricsCollector) RecordMessageProcessed(queue string, success bool, duration time.Duration)
- func (m *MetricsCollector) RecordMessageReceived(queue string)
- func (m *MetricsCollector) RecordMessageRequeued(queue string)
- func (m *MetricsCollector) RecordPublish(exchange, routingKey string, messageSize int, duration time.Duration)
- func (m *MetricsCollector) RecordPublishConfirmation(success bool, duration time.Duration)
- func (m *MetricsCollector) RecordReconnection(attempt int)
- type Span
- type Tracer
Constants ¶
const ( // Messaging system attributes MessagingSystem = "messaging.system" MessagingOperation = "messaging.operation" // RabbitMQ specific attributes MessagingRabbitMQRoutingKey = "messaging.rabbitmq.routing_key" MessagingDestinationName = "messaging.destination.name" // Message attributes MessagingMessageID = "messaging.message.id" MessagingMessageBodySize = "messaging.message.body.size" MessagingMessageConversationID = "messaging.message.conversation_id" // Consumer attributes MessagingConsumerID = "messaging.consumer.id" // Operation types OperationPublish = "publish" OperationReceive = "receive" OperationProcess = "process" )
Semantic convention attribute keys for messaging Based on OpenTelemetry Semantic Conventions for Messaging https://opentelemetry.io/docs/specs/semconv/messaging/
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type MetricsCollector ¶
type MetricsCollector struct {
// contains filtered or unexported fields
}
MetricsCollector implements rabbitmq.MetricsCollector using OpenTelemetry metrics.
func NewMetricsCollector ¶
func NewMetricsCollector(meter metric.Meter) (*MetricsCollector, error)
NewMetricsCollector creates a new OpenTelemetry metrics collector. The meter should be obtained from an OpenTelemetry MeterProvider.
func (*MetricsCollector) RecordConnection ¶
func (m *MetricsCollector) RecordConnection(connectionName string)
RecordConnection records a new connection
func (*MetricsCollector) RecordConnectionAttempt ¶
func (m *MetricsCollector) RecordConnectionAttempt(success bool, duration time.Duration)
RecordConnectionAttempt records a connection attempt
func (*MetricsCollector) RecordConsume ¶
func (m *MetricsCollector) RecordConsume(queue string, messageSize int, duration time.Duration)
RecordConsume records a consume operation
func (*MetricsCollector) RecordDeliveryOutcome ¶
func (m *MetricsCollector) RecordDeliveryOutcome(outcome rabbitmq.DeliveryOutcome, duration time.Duration)
RecordDeliveryOutcome records a delivery assurance outcome
func (*MetricsCollector) RecordDeliveryTimeout ¶
func (m *MetricsCollector) RecordDeliveryTimeout(messageID string)
RecordDeliveryTimeout records a delivery timeout
func (*MetricsCollector) RecordError ¶
func (m *MetricsCollector) RecordError(operation string, err error)
RecordError records an error
func (*MetricsCollector) RecordHealthCheck ¶
func (m *MetricsCollector) RecordHealthCheck(success bool, duration time.Duration)
RecordHealthCheck records a health check
func (*MetricsCollector) RecordMessageProcessed ¶
func (m *MetricsCollector) RecordMessageProcessed(queue string, success bool, duration time.Duration)
RecordMessageProcessed records a message processed event
func (*MetricsCollector) RecordMessageReceived ¶
func (m *MetricsCollector) RecordMessageReceived(queue string)
RecordMessageReceived records a message received event
func (*MetricsCollector) RecordMessageRequeued ¶
func (m *MetricsCollector) RecordMessageRequeued(queue string)
RecordMessageRequeued records a message requeue event
func (*MetricsCollector) RecordPublish ¶
func (m *MetricsCollector) RecordPublish(exchange, routingKey string, messageSize int, duration time.Duration)
RecordPublish records a publish operation
func (*MetricsCollector) RecordPublishConfirmation ¶
func (m *MetricsCollector) RecordPublishConfirmation(success bool, duration time.Duration)
RecordPublishConfirmation records a publish confirmation
func (*MetricsCollector) RecordReconnection ¶
func (m *MetricsCollector) RecordReconnection(attempt int)
RecordReconnection records a reconnection attempt
type Span ¶
type Span struct {
// contains filtered or unexported fields
}
Span wraps an OpenTelemetry span to implement rabbitmq.Span
func (*Span) SetAttribute ¶
SetAttribute sets an attribute on the span