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

# RabbitMQ

> 큐 깊이, 컨슈머 지연, DLQ 분석, 클러스터 및 노드 상태, 알람 모니터링을 위해 Management HTTP API를 통해 RabbitMQ를 CloudThinker에 연결하세요

RabbitMQ 브로커를 연결하여 [Tony](/ko/guide/agents/tony)(데이터베이스 엔지니어)가 큐 깊이를 모니터링하고, 컨슈머 지연을 분석하며, 데드 레터 큐를 검사하고, 클러스터 및 노드 상태를 추적할 수 있도록 합니다.

RabbitMQ는 Management HTTP API(기본 포트 `15672`)를 통해 **사용자 이름과 비밀번호**로 인증합니다 — RabbitMQ 관리 UI와 동일한 API를 사용하므로 별도의 AMQP 클라이언트 설정이 필요하지 않습니다.

***

## 지원 플랫폼

| 플랫폼                 | 지원                                           |
| ------------------- | -------------------------------------------- |
| **자체 호스팅 RabbitMQ** | management 플러그인이 활성화된 3.8 이상                 |
| **매니지드 RabbitMQ**   | CloudAMQP 및 Management HTTP API를 제공하는 기타 공급자 |

***

## 사전 요구 사항

* CloudThinker에서 management 포트(기본값 `15672`, HTTPS의 경우 `15671`)로 접근 가능한 **RabbitMQ 브로커**.
* **management 플러그인 활성화**. 자체 호스팅 브로커의 경우:
  ```bash theme={null}
  rabbitmq-plugins enable rabbitmq_management
  ```
* Management HTTP API에서 큐, 노드, 클러스터 데이터를 반환하도록 `monitoring` 또는 `administrator` 태그가 지정된 **브로커 사용자**.

<Info>
  `monitoring` 태그는 모든 읽기 및 상태 확인 기능에 충분합니다. 에이전트가 게이트된 쓰기 작업(큐/익스체인지 삭제, 정의 업데이트)을 실행하도록 하려는 경우에만 `administrator`를 부여하세요 — 이러한 작업은 항상 앱 내 승인이 필요합니다. [필요 권한](#필요-권한)을 참고하세요.
</Info>

***

## 설정

<Steps>
  <Step title="management 플러그인 활성화">
    자체 호스팅 브로커에서 management 플러그인을 활성화하고 수신 중임을 확인합니다:

    ```bash theme={null}
    rabbitmq-plugins enable rabbitmq_management
    curl -u <user>:<password> http://localhost:15672/api/overview
    ```

    CloudAMQP와 같은 매니지드 공급자는 Management HTTP API를 기본으로 제공합니다 — 다음 단계로 건너뛰세요.
  </Step>

  <Step title="모니터링 사용자 생성">
    CloudThinker 전용 사용자를 생성하고 `monitoring` 태그를 지정합니다:

    ```bash theme={null}
    rabbitmqctl add_user cloudthinker <strong-password>
    rabbitmqctl set_user_tags cloudthinker monitoring
    rabbitmqctl set_permissions -p / cloudthinker "" "" ".*"
    ```

    `monitoring` 태그는 모든 가상 호스트의 큐, 익스체인지, 노드, 클러스터 상태에 대한 읽기 접근 권한을 부여합니다.
  </Step>

  <Step title="네트워크 접근 확인">
    CloudThinker가 `<host>:15672`(또는 TLS의 경우 `<host>:15671`)에서 브로커에 접근할 수 있는지 확인합니다. CloudThinker의 이그레스를 위해 방화벽 또는 보안 그룹에서 management 포트를 엽니다.
  </Step>

  <Step title="CloudThinker에 연결 추가">
    **Connections → RabbitMQ**로 이동하여 다음을 입력합니다:

    * **Username**: 브로커 사용자 (예: `cloudthinker`)
    * **Password**: 사용자 비밀번호
    * **Host**: 브로커 호스트명 또는 IP (스킴 및 포트 제외)
    * **Management Port**: management API 포트 (기본값 `15672`)
    * **Use TLS**: HTTPS management API 및 AMQPS 사용 시 활성화
    * **Log Level**: 커넥터 로그 상세도 (기본값 `info`)

    **Connect**를 클릭합니다. CloudThinker가 Management HTTP API에 대해 자격 증명을 확인하고 **Connected** 상태를 표시합니다.
  </Step>
</Steps>

<Warning>
  **Host**에는 호스트명만 입력하세요 — `http://`, `https://`, 또는 포트를 포함하지 마세요. HTTP와 HTTPS 선택에는 **Use TLS** 토글을, 포트 설정에는 **Management Port**를 사용하세요.
</Warning>

***

## 연결 세부 정보

| 필드                             | 설명                                                | 기본값        |
| ------------------------------ | ------------------------------------------------- | ---------- |
| **RABBITMQ\_USERNAME**         | `monitoring` 또는 `administrator` 태그가 있는 브로커 사용자    | —          |
| **RABBITMQ\_PASSWORD**         | 브로커 사용자 비밀번호                                      | —          |
| **RABBITMQ\_HOST**             | 브로커 호스트명 또는 IP (스킴 및 포트 제외)                       | —          |
| **RABBITMQ\_MANAGEMENT\_PORT** | Management HTTP API 포트                            | `15672`    |
| **RABBITMQ\_USE\_TLS**         | HTTP + AMQP는 `Disabled`, HTTPS + AMQPS는 `Enabled` | `Disabled` |
| **LOG\_LEVEL**                 | 커넥터 로그 상세도: `debug`, `info`, `warn`, `error`      | `info`     |

<Note>
  management API는 HTTP의 경우 `15672`, HTTPS의 경우 `15671`에서 수신합니다. **Use TLS**를 활성화할 때는 **Management Port**를 TLS management 포트로 설정하세요.
</Note>

***

## 필요 권한

연결 사용자는 HTTP API가 브로커 데이터를 반환하도록 management 태그가 필요합니다:

| 태그              | 활성화 기능                                                                 |
| --------------- | ---------------------------------------------------------------------- |
| `monitoring`    | 큐, 익스체인지, 바인딩, 연결, 채널, 노드, 클러스터, 상태 확인에 대한 읽기 접근 — 모든 모니터링 및 진단 기능 포함. |
| `administrator` | `monitoring`의 모든 기능에 더해 게이트된 쓰기 작업(큐 삭제/비우기, 익스체인지 삭제, 정의 업데이트).       |

<Tip>
  최소 권한 원칙을 따르세요: `monitoring` 태그는 큐, 컨슈머 지연, DLQ, 클러스터 상태 조사에 충분합니다. 아래 설명된 게이트된 쓰기 작업을 실행하려는 경우에만 `administrator`를 사용하세요.
</Tip>

### 쓰기 작업은 승인 필요

이 연결에는 네 가지 변경 도구가 활성화되어 있습니다. 이 도구들은 항상 **앱 내 승인**을 통해 게이트됩니다 — 에이전트가 실행하기 전에 확인을 요청해야 합니다:

* `delete_queue` — 큐 삭제
* `purge_queue` — 큐의 모든 메시지 삭제
* `delete_exchange` — 익스체인지 삭제
* `update_definition` — 브로커 정의 수정

기타 모든 기능은 읽기 전용입니다. 파괴적인 작업에는 브로커 사용자가 대상 가상 호스트에 대한 쓰기 권한과 함께 `administrator` 태그를 갖고 있어야 합니다.

***

## 에이전트 기능

연결 후 [Tony](/ko/guide/agents/tony)는 다음을 수행할 수 있습니다:

| 기능                | 설명                                               |
| ----------------- | ------------------------------------------------ |
| **큐 깊이 및 메시지 속도** | 큐 깊이, 준비/미확인 메시지, 게시/전달 속도 스냅샷                   |
| **컨슈머 지연**        | 높은 컨슈머 지연 또는 컨슈머가 없는 큐 식별                        |
| **데드 레터 분석**      | 포이즌 메시지 및 오류 패턴에 대한 데드 레터 큐 검사                   |
| **클러스터 및 노드 상태**  | 노드 상태, 로컬 및 글로벌 알람, 쿼럼 크리티컬 큐 확인                 |
| **알람 및 인증서 확인**   | 알람 상태의 브로커 및 만료 임박한 인증서 감지                       |
| **게이트된 쓰기 작업**    | 큐 비우기 또는 삭제, 익스체인지 삭제, 정의 업데이트 — 각 작업은 앱 내 승인 필요 |

### 연결 확인

```text theme={null}
@tony show RabbitMQ cluster status and list all queues with their current depths
```

### 예시 프롬프트

```text theme={null}
@tony check all queues for abnormal depth or zero-consumer conditions and #alert on any queue growing faster than 500 msg/s
@tony identify queues with high consumer lag and inspect their dead-letter queues for poison messages, then #recommend remediation steps
@tony check cluster node status, alarms, quorum-critical queues, and certificate expiration; #alert on any node down or in alarm
```

***

## 문제 해결

<Accordion title="연결 거부 또는 타임아웃">
  * `<host>:15672`(또는 TLS management 포트)에서 CloudThinker가 브로커에 접근할 수 있는지 확인합니다.
  * 방화벽 또는 보안 그룹에서 AMQP 포트 `5672`가 아닌 management 포트가 열려 있는지 확인합니다.
  * 자체 호스팅 브로커의 경우, RabbitMQ가 `127.0.0.1`이 아닌 접근 가능한 인터페이스에 바인딩되어 있는지 확인합니다.
</Accordion>

<Accordion title="management API에서 404 Not Found">
  management 플러그인이 활성화되지 않았습니다. `rabbitmq-plugins enable rabbitmq_management`를 실행하고 다시 시도하세요. 매니지드 공급자의 경우, 해당 인스턴스에 Management HTTP API가 제공되는지 확인하세요.
</Accordion>

<Accordion title="401 Unauthorized">
  * 사용자 이름과 비밀번호를 확인합니다.
  * 사용자에게 `monitoring` 또는 `administrator` 태그가 있는지 확인합니다: `rabbitmqctl set_user_tags <user> monitoring`.
  * management 태그가 없는 사용자는 AMQP 인증은 가능하지만 Management HTTP API에서는 거부됩니다.
</Accordion>

<Accordion title="TLS 핸드셰이크 또는 인증서 오류">
  * **Use TLS**가 브로커 설정과 일치하는지 확인합니다: management API가 HTTPS를 제공할 때(일반적으로 포트 `15671`)만 활성화합니다.
  * **Use TLS**가 활성화되어 있지만 포트가 일반 HTTP를 제공하는 경우(또는 그 반대), 연결이 실패합니다 — 토글과 **Management Port**를 맞추세요.
</Accordion>

<Accordion title="빈 결과 또는 부분 결과">
  * `monitoring` 사용자가 일부 가상 호스트에 권한이 없을 수 있습니다. 조회할 vhost에 대해 읽기 권한을 부여하세요: `rabbitmqctl set_permissions -p <vhost> <user> "" "" ".*"`.
</Accordion>

***

## 보안

* **최소 권한** — 에이전트가 사용 사례에 필요한 권한만 부여하세요. 읽기 전용으로 시작한 후 필요에 따라 확장하세요.
* **기본 읽기 전용** — 에이전트가 이 연결을 통해 변경 작업을 수행하게 할 것이 아니라면 읽기 전용 자격증명을 사용하세요.
* **자격증명 교체** — 정기 일정에 따라 키와 토큰을 교체하세요. 연결을 업데이트하면 CloudThinker가 새 값을 자동으로 반영합니다.
* **오프보딩 시 취소** — 연결을 삭제하거나 팀원이 퇴사할 때 프로바이더에서 자격증명을 제거하세요.

- **전용 사용자** — 별도의 `cloudthinker` 브로커 사용자를 생성하고, `guest` 또는 관리자 계정을 재사용하지 마세요.
- **전송 중 TLS** — **Use TLS**를 활성화하여 CloudThinker와 브로커 간의 management API 트래픽을 암호화합니다.

***

## 관련 항목

<CardGroup cols={2}>
  <Card title="Tony 에이전트" icon="database" href="/ko/guide/agents/tony">
    데이터베이스 중심 모니터링 및 최적화 에이전트
  </Card>

  <Card title="Kafka 연결" icon="https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/kafka.svg?fit=max&auto=format&n=aLd-ttc-SCW-aFky&q=85&s=f977ba21911cea4b67d99e55c7565058" href="/ko/guide/connections/kafka" width="24" height="24" data-path="images/icons/kafka.svg">
    Apache Kafka 스트리밍 설정 가이드
  </Card>
</CardGroup>
