DevOps/Observability

Rabbit MQ on Datadog

Jflip 2024. 11. 8. 23:26
728x90

데이터독 주요 메트릭

 

관리 플러그인 통합시 활성화되는 대시보드

 

큐 기반 통계 추적:

  • 큐 크기 (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
반응형