728x90
데이터독 주요 메트릭
- RabbitMQ 관리 플러그인 (Management Plugin)
관리 플러그인 통합시 활성화되는 대시보드
- RabbitMQ Prometheus 플러그인 (Prometheus Plugin)
큐 기반 통계 추적:
- 큐 크기 (Queue size)
- 소비자 수 (Consumer count)
- 미확인 메시지 수 (Unacknowledged messages)
- 재전송된 메시지 수 (Redelivered messages)
노드 기반 통계 추적:
- 대기 중인 프로세스 수 (Waiting processes)
- 사용 중인 소켓 수 (Used sockets)
- 사용 중인 파일 디스크립터 수 (Used file descriptors)
큐 기반 지표는 메시지 처리 및 소비와 관련된 상태를 추적하고,
노드 기반 지표는 서버 리소스와 관련된 상태를 모니터링합니다.
데이터독에서 정의한 주요 메트릭은 교환기 메트릭 (Exchange metrics) / 노드 메트릭 (Node metrics) / 연결 메트릭 (Connection Metrics) / 대기열 메트릭 (Queue Metrics) 등이 있습니다.
대기열의 크기가 클 경우, 메트릭 수집이 거의 불가능하다고 알려져 있습니다. (https://engineering.loyaltylion.com/monitoring-thousands-of-rabbitmq-queues-with-datadog-d3168c088ea6 )
RabbitMQ 핵심 모니터링 메트릭
1. 교환기 메트릭 (Exchange Metrics)
- Messages Published In
- 교환기로 들어오는 메시지 수
- 메시지 처리량 모니터링의 기본 지표
- Messages Unroutable
- 라우팅 실패한 메시지 수
- 바인딩 설정 오류나 문제 진단에 중요
- Alternative Exchange 설정
- Unroutable 메시지 처리를 위한 대체 교환기 구성
- Dead Letter Exchange(DLX) 활용
NameDescriptionMetric typeAvailability
Messages published in | Messages published to an exchange | Work: Throughput | both plugins |
Messages unroutable | Count of messages not routed to a queue | Work: Errors | both plugins |
2. 노드 메트릭 (Node Metrics)
- 시스템 자원 사용
- File Descriptors Used
- Network Sockets
- Disk Space Used
- Memory Used
- 중요 임계값
- 디스크 여유 공간: 50MB 이하 시 연결 차단 (disk_free_limit)
- 메모리 사용량: 40% 초과 시 게시 제한 (vm_memory_high_watermark)
- CPU 사용률: 과도한 부하 모니터링
- Erlang VM 상태
- Process Count
- Runtime Statistics
NameDescriptionMetric typeAvailability
File descriptors used | Count of file descriptors used by RabbitMQ processes | Resource: Utilization | both plugins, rabbitmqctl |
Network sockets | Count of how many network sockets are open by RabbitMQ | Resource: Utilization | both plugins, rabbitmqctl |
Disk space used | Bytes of disk used by a RabbitMQ node | Resource: Utilization | both plugins, rabbitmqctl |
Memory used | Bytes in RAM used by a RabbitMQ node (categorized by use) | Resource: Utilization | both plugins, rabbitmqctl |
3. 연결 메트릭 (Connection Metrics)
- 성능 지표
- Data Rates (초당 전송량)
NameDescriptionMetric typeAvailability
Data rates | Number of octets (management) or bytes (Prometheus) sent/received within a TCP connection per second | Resource: Utilization | both plugins |
4. 큐 메트릭 (Queue Metrics)
기본 메트릭
- Queue Depth (큐 깊이)
- Messages Unacknowledged (미확인 메시지)
- Messages Ready (전달 대기 메시지)
저장소 관련
- Messages Persistent (디스크 저장)
- Message Bytes (RAM/Disk 사용량)
소비자 관련
- Number of Consumers
- Consumer Utilization
- Consumer Acknowledgement Rate
NameDescriptionMetric typeAvailability
Queue depth | Count of all messages in the queue | Resource: Saturation | rabbitmqctl |
Messages unacknowledged | Count of messages a queue has delivered without receiving acknowledgment from a consumer | Resource: Error | both plugins, rabbitmqctl |
Messages ready | Count of messages available to consumer | Other | both plugins, rabbitmqctl |
Messages persistent | Count of messages written to disk | Other | rabbitmqctl |
Message bytes persistent/paged out | Sum in bytes of messages written to disk | Resource: Utilization | both plugins, rabbitmqctl |
Message bytes RAM | Sum in bytes of messages stored in memory | Resource: Utilization | both plugins, rabbitmqctl |
Number of consumers | Count of consumers for a given queue | Other | rabbitmqctl |
Consumer utilization | Proportion of time that the queue can deliver messages to consumers | Resource: Availability | both plugins |
데이터독 권장 경고 설정
시스템 레벨
- Disk_free_limit (디스크 공간 부족): RabbitMQ는 디스크 공간이 50MB 이하가 되면 기본적으로 연결을 차단(block connections)합니다. 10초마다 드라이브 혹은 파티션의 스토리지를 확인하고 임계값에 가까울 수록 더 자주 확인합니다. (디스크 알람은 전체 클러스터에 영향을 미칩니다, 실례로 https://engineering.loyaltylion.com/monitoring-thousands-of-rabbitmq-queues-with-datadog-d3168c088ea6 에서는 메모리 2배를 사용한다고 확인한 바 있습니다)
디스크 공간이 부족하면 연결 / 게시 모두 차단됩니다.
- Vm_memory_high_watermark (메모리 사용량 초과) : RabbitMQ의 기본 메모리 한계(vm_memory_high_watermark)는 사용량이 40%를 초과하면 메시지 게시(publish)를 차단합니다. 필요에 따라 vm_memory_high_watermark 값을 조정할 수 있습니다.
큐 레벨
- Queue_depth (큐 깊이) - 큐 깊이가 0이면 Consumer가 효율적으로 동작하고 있거나 Producer에 오류가 발생했음을 시사할 수 있습니다. 큐 깊이에 대한 유용성은 애플리케이션의 기대 성능에 따라 달라집니다.
- Unacked Message(미확인 메시지) - 미확인 메시지는 Consumer가 받았지만, 아직 처리 완료가 확인되지 않은 메시지로 해당 내용이 발생할 경우 Consumer 처리 속도 / 장애 / 네트워크 문제 혹은 비즈니스 로직 처리가 지연됨을 시사할 수 있습니다. (따라서 unacked 메시지 수, 메시지 처리 시간, consumer 상태, 메모리 사용량을 같이 모니터링 해야합니다.)
연결 레벨
- Data Rate (데이터 속도) - 노드에서 메모리 또는 저장 공간 사용량이 증가하고 있다면, 연결을 통해 소비자에게 전달되는 메시지의 페이로드 크기가 커졌을 가능성이 있습니다. 메시지가 메모리 또는 저장 공간을 사용하는지는 퍼시스턴스(persistence) 설정에 따라 달라지며, 이 설정은 큐와 함께 모니터링해야 합니다. 전송된 옥텟(octet)의 증가율이 높아지면, 스토리지와 메모리 사용량의 급증을 설명할 수 있습니다.
이러한 메트릭들을 제대로 모니터링할 경우, 다음과 같은 이점이 있습니다:
- 성능 병목 현상 조기 발견
- 시스템 안정성 확보
- 장애 예방 및 신속한 대응
- 용량 계획 수립을 위한 데이터 확보
위의 내용을 포함하여 데이터독에서 수집되는 주요 메트릭을 기반으로 다시금 정리하면 다음과 같습니다.
728x90
반응형
'DevOps > Observability' 카테고리의 다른 글
[Datadog] RabbitMQ Integration (3) | 2024.11.10 |
---|---|
[Datadog] RabbitMQ의 주요 메트릭 (10) | 2024.11.09 |
CoreDNS 모니터링으로 Kubernetes 네트워크 안정성 확보하기 (11) | 2024.11.07 |