> For the complete documentation index, see [llms.txt](https://docs.bindplane.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bindplane.com/integrations/sources/rabbitmq.md).

# RabbitMQ

The RabbitMQ source collects metrics and logs from a RabbitMQ broker. Metrics are scraped from the RabbitMQ Management plugin HTTP API using a monitoring user (consumer counts and message delivery, publish, acknowledge, drop, and current-message rates). Logs are read from the RabbitMQ log files on the collector host and optionally parsed into structured fields.

### Supported Telemetry

| Platform | Metrics | Logs | Traces |
| -------- | ------- | ---- | ------ |
| macOS    | ✓       | ✓    |        |
| Linux    | ✓       | ✓    |        |
| Windows  | ✓       | ✓    |        |

### Prerequisites

**Metrics**

* A reachable RabbitMQ node with the RabbitMQ Management plugin enabled. The plugin exposes the HTTP API the receiver scrapes (default port `15672`). Enable it with `rabbitmq-plugins enable rabbitmq_management`. See [Management Plugin](https://www.rabbitmq.com/docs/management).
* A monitoring user. Create a dedicated RabbitMQ user and grant it the `monitoring` tag so it can read broker statistics without administrative rights. See [Authentication, Authorisation, Access Control](https://www.rabbitmq.com/docs/access-control).
* Network reachability from the collector to the Management API endpoint (host and port).
* If the Management API is served over HTTPS, the TLS material to validate it (a CA certificate file, and a client certificate and key if mutual TLS is required).

**Logs**

* RabbitMQ writing its log files on the host where the collector runs. The default path is `/var/log/rabbitmq/rabbit@*.log`.
* Read access for the collector to those log file paths.

### Configuration

<figure><img src="/files/vG9PsuTMxpPMN7krGsBe" alt="Bindplane docs - RabbitMQ - image 1"><figcaption></figcaption></figure>

**Telemetry Type**

| Parameter             | Type               | Required | Default               | Description                                                 |
| --------------------- | ------------------ | -------- | --------------------- | ----------------------------------------------------------- |
| Choose Telemetry Type | Telemetry Selector | No       | `["Logs", "Metrics"]` | Which signals this source collects: Logs, Metrics, or both. |

**Logs**

| Parameter | Type                 | Required | Default                          | Description                                                                                   |
| --------- | -------------------- | -------- | -------------------------------- | --------------------------------------------------------------------------------------------- |
| Log Paths | Strings              | No       | `/var/log/rabbitmq/rabbit@*.log` | Path to RabbitMQ log file(s). Glob patterns are supported. Relevant when Logs is selected.    |
| Start At  | Enum: beginning, end | No       | `end`                            | Start reading logs from the `beginning` or `end` of the file. Relevant when Logs is selected. |
| Parse     | Boolean              | No       | `true`                           | Parses the log fields into structured data. Relevant when Logs is selected.                   |

**Metrics**

| Parameter           | Type    | Required | Default                  | Description                                                                             |
| ------------------- | ------- | -------- | ------------------------ | --------------------------------------------------------------------------------------- |
| Endpoint            | String  | No       | `http://localhost:15672` | The endpoint of the RabbitMQ Management API. Relevant when Metrics is selected.         |
| Username            | String  | Yes      | *(empty)*                | Username used to authenticate to the Management API. Relevant when Metrics is selected. |
| Password            | String  | Yes      | *(empty)*                | Password used to authenticate to the Management API. Relevant when Metrics is selected. |
| Collection Interval | Integer | No       | `60`                     | How often (seconds) to scrape for metrics. Relevant when Metrics is selected.           |

**Advanced**

| Parameter                         | Type    | Required | Default   | Description                                                                                                                             |
| --------------------------------- | ------- | -------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| Enable TLS                        | Boolean | No       | `false`   | Whether or not to use TLS when connecting to the Management API. Relevant when Metrics is selected.                                     |
| Skip TLS Certificate Verification | Boolean | No       | `false`   | Skip verification of the server's TLS certificate. Relevant when Metrics is selected and Enable TLS is `true`.                          |
| TLS Certificate Authority File    | String  | No       | *(empty)* | Certificate authority used to validate TLS certificates. Relevant when Metrics is selected and Enable TLS is `true`.                    |
| TLS Client Certificate File       | String  | No       | *(empty)* | A TLS certificate used for client authentication, if mutual TLS is enabled. Relevant when Metrics is selected and Enable TLS is `true`. |
| TLS Client Private Key File       | String  | No       | *(empty)* | A TLS private key used for client authentication, if mutual TLS is enabled. Relevant when Metrics is selected and Enable TLS is `true`. |
| Metrics                           | Metrics | No       | `[]`      | Toggle individual metrics on and off. Relevant when Metrics is selected.                                                                |

### Examples

#### Collect metrics and logs from a local RabbitMQ broker

This source scrapes the Management API at the default endpoint with a dedicated monitoring user every 30 seconds, and tails the default RabbitMQ log path.

```yaml
apiVersion: bindplane.observiq.com/v1
kind: Source
metadata:
  name: rabbitmq
spec:
  type: rabbitmq
  parameters:
    - name: telemetry_types
      value: ["Logs", "Metrics"]
    - name: endpoint
      value: http://localhost:15672
    - name: username
      value: bindplane-monitor
    - name: password
      value: "<password>"
    - name: collection_interval
      value: 30
    - name: daemon_log_paths
      value:
        - "/var/log/rabbitmq/rabbit@*.log"
    - name: start_at
      value: end
```

### Configuration Tips

* The Endpoint is the RabbitMQ Management API (default port `15672`), not the AMQP port `5672`. Use the URL where the Management plugin is served.
* Use a dedicated user with only the `monitoring` tag rather than an administrator account, so the collector has the access it needs and nothing more.
* When the Management API is served over HTTPS, set Enable TLS and provide a CA file. Only enable Skip TLS Certificate Verification for testing, never in production.

### Troubleshooting

#### Connection refused or no metrics

Symptoms: the receiver cannot reach the endpoint, or no RabbitMQ metrics appear.

Solutions:

1. Confirm the Management plugin is enabled (`rabbitmq-plugins list` shows `rabbitmq_management`).
2. Verify the Endpoint host and port (default `15672`) and that a firewall is not blocking the collector.

#### Authentication failed

Symptoms: the Management API returns 401 or 403 and no metrics are collected.

Solutions:

1. Verify the Username and Password are correct.
2. Confirm the user has the `monitoring` tag so it can read broker statistics.

#### TLS handshake errors

Symptoms: the connection fails with a certificate or TLS error when Enable TLS is on.

Solutions:

1. Provide a CA file that signs the Management API server certificate.
2. For mutual TLS, supply both the client certificate and private key files.

#### No logs collected

Symptoms: logs are enabled but none arrive.

Solutions:

1. Confirm the Log Paths match the broker's actual log files (default `/var/log/rabbitmq/rabbit@*.log`).
2. Verify the collector user has read access to those files.

### Standalone Source

```yaml
apiVersion: bindplane.observiq.com/v1
kind: Source
metadata:
  name: rabbitmq
spec:
  type: rabbitmq
  parameters:
    - name: telemetry_types
      value: ["Logs", "Metrics"]
    - name: endpoint
      value: http://localhost:15672
    - name: username
      value: bindplane-monitor
    - name: password
      value: "<password>"
    - name: collection_interval
      value: 60
    - name: enable_tls
      value: false
    - name: daemon_log_paths
      value:
        - "/var/log/rabbitmq/rabbit@*.log"
    - name: start_at
      value: end
    - name: parse
      value: true
```

### Related Resources

* [RabbitMQ Management Plugin](https://www.rabbitmq.com/docs/management)
* [RabbitMQ Monitoring](https://www.rabbitmq.com/docs/monitoring)
* [rabbitmqreceiver — OpenTelemetry Collector Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/rabbitmqreceiver)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.bindplane.com/integrations/sources/rabbitmq.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
