> ## Documentation Index
> Fetch the complete documentation index at: https://otel.fyi/llms.txt
> Use this file to discover all available pages before exploring further.

# Rabbitmq

> OpenTelemetry receiver for Rabbitmq

# Rabbitmq Receiver

![Status](https://img.shields.io/badge/status-beta-yellow)

**Available in:** `contrib`

**Maintainers:** [@VenuEmmadi](https://github.com/VenuEmmadi)

**Source:** [opentelemetry-collector-contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/rabbitmqreceiver)

## Supported Telemetry

![Metrics](https://img.shields.io/badge/metrics-beta-green)

## Overview

## Prerequisites

This receiver supports RabbitMQ versions `3.8` and `3.9`.

The RabbitMQ Management Plugin must be enabled by following the [official instructions](https://www.rabbitmq.com/management.html#getting-started).

Also, a user with at least [monitoring](https://www.rabbitmq.com/management.html#permissions) level permissions must be used for monitoring.

## Configuration

The following settings are required:

* `username`
* `password`

The following settings are optional:

* `endpoint` (default: `http://localhost:15672`): The URL of the node to be monitored.
* `collection_interval` (default = `10s`): This receiver collects metrics on an interval. Valid time units are `ns`, `us` (or `µs`), `ms`, `s`, `m`, `h`.
* `tls`: TLS control. [By default, insecure settings are rejected and certificate verification is on](https://github.com/open-telemetry/opentelemetry-collector/blob/main/config/configtls/README.md).

### Example Configuration

```yaml theme={null}
receivers:
  rabbitmq:
    endpoint: http://localhost:15672
    username: otelu
    password: ${env:RABBITMQ_PASSWORD}
    collection_interval: 10s
    metrics:  # Enable node metrics by explicitly setting them to true
      rabbitmq.node.disk_free:
        enabled: true
      rabbitmq.node.disk_free_limit:
        enabled: true
      rabbitmq.node.disk_free_alarm:
        enabled: true
      rabbitmq.node.mem_used:
        enabled: true
      rabbitmq.node.mem_limit:
        enabled: true
      rabbitmq.node.mem_alarm:
        enabled: true
      rabbitmq.node.fd_used:
        enabled: true
      rabbitmq.node.fd_total:
        enabled: true
      rabbitmq.node.sockets_used:
        enabled: true
      rabbitmq.node.sockets_total:
        enabled: true
      rabbitmq.node.proc_used:
        enabled: true
      rabbitmq.node.proc_total:
        enabled: true
      rabbitmq.node.disk_free_details.rate:
        enabled: true
      rabbitmq.node.fd_used_details.rate:
        enabled: true
      rabbitmq.node.mem_used_details.rate:
        enabled: true
      rabbitmq.node.proc_used_details.rate:
        enabled: true
      rabbitmq.node.sockets_used_details.rate:
        enabled: true
      # Enable exchange metrics by explicitly setting them to true
      rabbitmq.exchange.messages.published_in:
        enabled: true
      rabbitmq.exchange.messages.published_out:
        enabled: true
```

The full list of settings exposed for this receiver are documented in [config.go](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/rabbitmqreceiver/config.go) with detailed sample configurations in [testdata/config.yaml](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/rabbitmqreceiver/testdata/config.yaml). TLS config is documented further under the [opentelemetry collector's configtls package](https://github.com/open-telemetry/opentelemetry-collector/blob/main/config/configtls/README.md).

## Metrics

This receiver collects RabbitMQ queue-level metrics from the `/api/queues` endpoint (enabled by default), and node-level and exchange-level metrics from the `/api/nodes` and `/api/exchanges` endpoints (disabled by default). Metrics are categorized into the following groups:

* **Memory usage**: `rabbitmq.node.mem_used`, `rabbitmq.node.mem_limit`, `rabbitmq.node.mem_alarm`
* **Disk space**: `rabbitmq.node.disk_free`, `rabbitmq.node.disk_free_limit`, `rabbitmq.node.disk_free_alarm`
* **File descriptors & sockets**: `rabbitmq.node.fd_used`, `rabbitmq.node.sockets_used`, etc.
* **Process & scheduling**: `rabbitmq.node.proc_used`, `rabbitmq.node.run_queue`, `rabbitmq.node.context_switches`
* **Garbage collection & I/O**: `rabbitmq.node.gc.num`, `rabbitmq.node.io_read_avg_time`, etc.
* **Cluster & node metadata**: `rabbitmq.node.uptime`, `rabbitmq.node.processors`, etc.
* **Exchange throughput**: `rabbitmq.exchange.messages.published_in`, `rabbitmq.exchange.messages.published_out`

Details about the metrics produced by this receiver and full list of supported metrics can be found in [metadata.yaml](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/rabbitmqreceiver/metadata.yaml)

## Metrics

| Metric Name | Description | Unit | Type | Attributes |
| - | - | - | - | - |
| ✅ `rabbitmq.consumer.count` | The number of consumers currently reading from the queue. | \{consumers} | UpDownCounter | |
| ❌ `rabbitmq.exchange.messages.published_in` | The total number of messages published into an exchange from channels. | \{messages} | Counter | |
| ❌ `rabbitmq.exchange.messages.published_out` | The total number of messages published out of an exchange to bound queues. | \{messages} | Counter | |
| ✅ `rabbitmq.message.acknowledged` | The number of messages acknowledged by consumers. | \{messages} | Counter | |
| ✅ `rabbitmq.message.current` | The total number of messages currently in the queue. | \{messages} | UpDownCounter | message.state |
| ✅ `rabbitmq.message.delivered` | The number of messages delivered to consumers. | \{messages} | Counter | |
| ✅ `rabbitmq.message.dropped` | The number of messages dropped as unroutable. | \{messages} | Counter | |
| ✅ `rabbitmq.message.published` | The number of messages published to a queue. | \{messages} | Counter | |
| ❌ `rabbitmq.node.channel_closed` | Number of channels closed. | \{channels} | UpDownCounter | |
| ❌ `rabbitmq.node.channel_closed_details.rate` | Rate of channels closed. | \{channels}/s | UpDownCounter | |
| ❌ `rabbitmq.node.channel_created` | Number of channels created. | \{channels} | UpDownCounter | |
| ❌ `rabbitmq.node.channel_created_details.rate` | Rate of channels created. | \{channels}/s | UpDownCounter | |
| ❌ `rabbitmq.node.connection_closed` | Number of connections closed. | \{connections} | UpDownCounter | |
| ❌ `rabbitmq.node.connection_closed_details.rate` | Rate of connections closed. | \{connections}/s | UpDownCounter | |
| ❌ `rabbitmq.node.connection_created` | Number of connections created. | \{connections} | UpDownCounter | |
| ❌ `rabbitmq.node.connection_created_details.rate` | Rate of connections created. | \{connections}/s | UpDownCounter | |
| ❌ `rabbitmq.node.context_switches` | Total number of context switches. | \{switches} | UpDownCounter | |
| ❌ `rabbitmq.node.context_switches_details.rate` | Rate of context switches. | \{switches}/s | UpDownCounter | |
| ❌ `rabbitmq.node.disk_free` | Free disk space on the node. | \{bytes} | UpDownCounter | |
| ❌ `rabbitmq.node.disk_free_alarm` | Whether disk usage has triggered an alarm. | \{status} | UpDownCounter | |
| ❌ `rabbitmq.node.disk_free_details.rate` | Rate of disk usage change. | \{bytes}/s | UpDownCounter | |
| ❌ `rabbitmq.node.disk_free_limit` | Minimum required free disk space before alarm. | \{bytes} | UpDownCounter | |
| ❌ `rabbitmq.node.fd_total` | Maximum number of file descriptors available. | \{fd} | UpDownCounter | |
| ❌ `rabbitmq.node.fd_used` | Number of file descriptors used. | \{fd} | UpDownCounter | |
| ❌ `rabbitmq.node.fd_used_details.rate` | Rate of file descriptor usage. | \{fd}/s | UpDownCounter | |
| ❌ `rabbitmq.node.gc_bytes_reclaimed` | Bytes reclaimed by garbage collection. | \{bytes} | UpDownCounter | |
| ❌ `rabbitmq.node.gc_bytes_reclaimed_details.rate` | Rate of bytes reclaimed by GC. | \{bytes}/s | UpDownCounter | |
| ❌ `rabbitmq.node.gc_num` | Number of garbage collections. | \{collections} | UpDownCounter | |
| ❌ `rabbitmq.node.gc_num_details.rate` | Rate of garbage collections. | \{collections}/s | UpDownCounter | |
| ❌ `rabbitmq.node.io_read_avg_time` | Average read time in microseconds. | \{microseconds} | UpDownCounter | |
| ❌ `rabbitmq.node.io_read_avg_time_details.rate` | Rate of change of average read time. | \{microseconds}/s | UpDownCounter | |
| ❌ `rabbitmq.node.io_read_bytes` | Total bytes read. | \{bytes} | UpDownCounter | |
| ❌ `rabbitmq.node.io_read_bytes_details.rate` | Rate of bytes read. | \{bytes}/s | UpDownCounter | |
| ❌ `rabbitmq.node.io_read_count` | Number of read operations. | \{ops} | UpDownCounter | |
| ❌ `rabbitmq.node.io_read_count_details.rate` | Rate of read operations. | \{ops}/s | UpDownCounter | |
| ❌ `rabbitmq.node.io_reopen_count` | Number of file reopen operations. | \{ops} | UpDownCounter | |
| ❌ `rabbitmq.node.io_reopen_count_details.rate` | Rate of file reopen operations. | \{ops}/s | UpDownCounter | |
| ❌ `rabbitmq.node.io_seek_avg_time` | Average seek time in microseconds. | \{microseconds} | UpDownCounter | |
| ❌ `rabbitmq.node.io_seek_avg_time_details.rate` | Rate of change of average seek time. | \{microseconds}/s | UpDownCounter | |
| ❌ `rabbitmq.node.io_seek_count` | Number of seek operations. | \{ops} | UpDownCounter | |
| ❌ `rabbitmq.node.io_seek_count_details.rate` | Rate of seek operations. | \{ops}/s | UpDownCounter | |
| ❌ `rabbitmq.node.io_sync_avg_time` | Average sync time in microseconds. | \{microseconds} | UpDownCounter | |
| ❌ `rabbitmq.node.io_sync_avg_time_details.rate` | Rate of change of average sync time. | \{microseconds}/s | UpDownCounter | |
| ❌ `rabbitmq.node.io_sync_count` | Number of sync operations. | \{ops} | UpDownCounter | |
| ❌ `rabbitmq.node.io_sync_count_details.rate` | Rate of sync operations. | \{ops}/s | UpDownCounter | |
| ❌ `rabbitmq.node.io_write_avg_time` | Average write time in microseconds. | \{microseconds} | UpDownCounter | |
| ❌ `rabbitmq.node.io_write_avg_time_details.rate` | Rate of change of average write time. | \{microseconds}/s | UpDownCounter | |
| ❌ `rabbitmq.node.io_write_bytes` | Total bytes written. | \{bytes} | UpDownCounter | |
| ❌ `rabbitmq.node.io_write_bytes_details.rate` | Rate of bytes written. | \{bytes}/s | UpDownCounter | |
| ❌ `rabbitmq.node.io_write_count` | Number of write operations. | \{ops} | UpDownCounter | |
| ❌ `rabbitmq.node.io_write_count_details.rate` | Rate of write operations. | \{ops}/s | UpDownCounter | |
| ❌ `rabbitmq.node.mem_alarm` | Whether memory alarm is triggered. | \{status} | UpDownCounter | |
| ❌ `rabbitmq.node.mem_limit` | The memory limit on the node. | \{bytes} | UpDownCounter | |
| ❌ `rabbitmq.node.mem_used` | The memory used on the node. | \{bytes} | UpDownCounter | |
| ❌ `rabbitmq.node.mem_used_details.rate` | Rate of memory usage change. | \{bytes}/s | UpDownCounter | |
| ❌ `rabbitmq.node.mnesia_disk_tx_count` | Number of disk transactions in Mnesia. | \{tx} | UpDownCounter | |
| ❌ `rabbitmq.node.mnesia_disk_tx_count_details.rate` | Rate of disk transactions in Mnesia. | \{tx}/s | UpDownCounter | |
| ❌ `rabbitmq.node.mnesia_ram_tx_count` | Number of RAM transactions in Mnesia. | \{tx} | UpDownCounter | |
| ❌ `rabbitmq.node.mnesia_ram_tx_count_details.rate` | Rate of RAM transactions in Mnesia. | \{tx}/s | UpDownCounter | |
| ❌ `rabbitmq.node.msg_store_read_count` | Number of message store reads. | \{ops} | UpDownCounter | |
| ❌ `rabbitmq.node.msg_store_read_count_details.rate` | Rate of message store reads. | \{ops}/s | UpDownCounter | |
| ❌ `rabbitmq.node.msg_store_write_count` | Number of message store writes. | \{ops} | UpDownCounter | |
| ❌ `rabbitmq.node.msg_store_write_count_details.rate` | Rate of message store writes. | \{ops}/s | UpDownCounter | |
| ❌ `rabbitmq.node.proc_total` | Maximum allowed Erlang processes. | \{processes} | UpDownCounter | |
| ❌ `rabbitmq.node.proc_used` | Number of Erlang processes in use. | \{processes} | UpDownCounter | |
| ❌ `rabbitmq.node.proc_used_details.rate` | Rate of process usage. | \{processes}/s | UpDownCounter | |
| ❌ `rabbitmq.node.processors` | Number of processors available to the node. | \{processors} | UpDownCounter | |
| ❌ `rabbitmq.node.queue_created` | Number of queues created. | \{queues} | UpDownCounter | |
| ❌ `rabbitmq.node.queue_created_details.rate` | Rate of queues created. | \{queues}/s | UpDownCounter | |
| ❌ `rabbitmq.node.queue_declared` | Number of queues declared. | \{queues} | UpDownCounter | |
| ❌ `rabbitmq.node.queue_declared_details.rate` | Rate of queues declared. | \{queues}/s | UpDownCounter | |
| ❌ `rabbitmq.node.queue_deleted` | Number of queues deleted. | \{queues} | UpDownCounter | |
| ❌ `rabbitmq.node.queue_deleted_details.rate` | Rate of queues deleted. | \{queues}/s | UpDownCounter | |
| ❌ `rabbitmq.node.queue_index_read_count` | Number of queue index reads. | \{ops} | UpDownCounter | |
| ❌ `rabbitmq.node.queue_index_read_count_details.rate` | Rate of queue index reads. | \{ops}/s | UpDownCounter | |
| ❌ `rabbitmq.node.queue_index_write_count` | Number of queue index writes. | \{ops} | UpDownCounter | |
| ❌ `rabbitmq.node.queue_index_write_count_details.rate` | Rate of queue index writes. | \{ops}/s | UpDownCounter | |
| ❌ `rabbitmq.node.run_queue` | Run queue length of the Erlang scheduler. | \{threads} | UpDownCounter | |
| ❌ `rabbitmq.node.sockets_total` | Maximum allowed sockets. | \{sockets} | UpDownCounter | |
| ❌ `rabbitmq.node.sockets_used` | Number of sockets in use. | \{sockets} | UpDownCounter | |
| ❌ `rabbitmq.node.sockets_used_details.rate` | Rate of socket usage. | \{sockets}/s | UpDownCounter | |
| ❌ `rabbitmq.node.uptime` | Uptime of the node. | ms | UpDownCounter | |

## Attributes

| Attribute Name | Description | Type | Values |
| - | - | - | - |
| `state` | The state of messages in a queue. | string | `ready`, `unacknowledged` |

## Resource Attributes

| Attribute Name | Description | Type | Enabled |
| - | - | - | - |
| `rabbitmq.cluster.name` | The name of the RabbitMQ cluster. | string | ❌ |
| `rabbitmq.exchange.name` | The name of the RabbitMQ exchange. | string | ✅ |
| `rabbitmq.exchange.type` | The type of the RabbitMQ exchange (direct, fanout, topic, or headers). | string | ✅ |
| `rabbitmq.node.name` | The name of the RabbitMQ node. | string | ✅ |
| `rabbitmq.queue.name` | The name of the RabbitMQ queue. | string | ✅ |
| `rabbitmq.vhost.name` | The name of the RabbitMQ vHost. | string | ✅ |

## Configuration

### Example Configuration

```yaml theme={null}
rabbitmq:
  endpoint: http://localhost:15672
  username: otelu
  password: ${env:RABBITMQ_PASSWORD}
  collection_interval: 10s
```

***

*Last generated: 2026-10-05*
