This code example shows integration with OpenTelemetry and W3C trace context
It requires RabbitMQ and Zipkin (just use Docker for both) to run.
Values based on open-telemetry/opentelemetry-specification#418
Attribute name | Notes and examples | Required? | NServiceBus Value |
---|---|---|---|
messaging.system |
A string identifying the messaging system vendor such as kafka , rabbitmq or activemq . |
Yes | ReadOnlySettings.Get().GetType().Name.Replace("Transport", null).ToLowerInvariant() |
messaging.destination |
The message destination name, e.g. MyQueue or MyTopic . This might be equal to the span name but is required nevertheless. |
Yes | ReadOnlySettings.LogicalAddress().ToString() |
messaging.destination_kind |
The kind of message destination: Either queue or topic . |
Yes, if either of them applies. | Translated from the MessageIntentEnum in the message and OutboundRoutingType |
messaging.temp_destination |
A boolean that is true if the message destination is temporary. |
If temporary (assumed to be false if missing). |
|
messaging.protocol |
The name of the transport protocol such as AMQP or MQTT . |
No | |
messaging.protocol_version |
The version of the transport protocol such as 0.9.1 . |
No | |
messaging.url |
Connection string such as tibjmsnaming://localhost:7222 or https://queue.amazonaws.com/80398EXAMPLE/MyQueue . |
No | |
messaging.message_id |
A value used by the messaging system as an identifier for the message, represented as a string. | No | Message.MessageId |
messaging.conversation_id |
A value identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". | No | "NServiceBus.ConversationId" header |
avg(rate(messaging_client_server_duration_ms_count[5m]))
To integrate with Prometheus, in the root run a Prometheus instance with Docker:
docker run `
-p 9090:9090 `
-v ${PWD}/prometheus.yml:/etc/prometheus/prometheus.yml `
prom/prometheus