RocketMQ (Prometheus)¶
Apache RocketMQ는 서비스 분리, 트래픽 피크 완화, 이벤트 기반 애플리케이션 등에 사용할 수 있는 분산 메시징 및 스트림 처리 플랫폼입니다.
지원 버전은 RocketMQ 공식 메트릭 문서를 참조하세요. 별도의 Exporter를 사용하는 환경은 RocketMQ 통합을 참조하세요.
설정¶
사전 요구 사항¶
- 버전
5.1.0이상의 RocketMQ Broker가 실행 중이어야 합니다. - Broker가 실제로 로드하는 설정 파일을 수정하고 서비스를 다시 시작할 수 있어야 합니다. 클러스터에서는 모니터링할 모든 Broker의 메트릭 엔드포인트를 활성화해야 합니다.
- DataKit에서 각 Broker의 메트릭 포트에 접근할 수 있어야 합니다. 이 문서에서는 기본 포트
5557을 사용합니다. - 검증용 Topic, 소비자 그룹, 메시지 생성 및 소비 트래픽이 있어야 합니다. 애플리케이션 트래픽이 없으면 일부 메트릭이 0이거나 해당 시계열이 없을 수 있습니다.
Broker 내장 Prometheus 메트릭 활성화¶
Broker 시작 인수 -c가 실제로 가리키는 설정 파일(일반적으로 broker.conf)을 편집하고 다음 설정을 추가합니다.
저장 후 기존 배포 방식에 따라 해당 Broker를 다시 시작합니다. 운영 클러스터는 기존 유지보수 절차에 따라 순차적으로 다시 시작합니다. 이후 Broker 호스트에서 메트릭 엔드포인트를 확인합니다.
응답에는 rocketmq_로 시작하는 메트릭과 해당 유형 정보가 포함되어야 합니다. DataKit 호스트에서도 실제 Broker 주소를 사용해 엔드포인트에 접근할 수 있는지 확인해야 합니다.
metricsPromExporterHost=0.0.0.0은 모든 네트워크 인터페이스에서 수신한다는 의미입니다. 보안 그룹이나 방화벽으로 접근 출처를 제한하세요. Docker 배포에서는 컨테이너의 5557 포트를 DataKit에서 접근 가능한 호스트 포트에 매핑해야 합니다. DataKit도 컨테이너에서 실행된다면 해당 127.0.0.1은 DataKit 컨테이너 자체를 가리킵니다.
Prom 수집기 설정¶
DataKit 호스트에서 Prom 수집기 예제 설정을 복사합니다.
mkdir -p /usr/local/datakit/conf.d/prom
cp /usr/local/datakit/conf.d/samples/prom.conf.sample \
/usr/local/datakit/conf.d/prom/rocketmq.conf
rocketmq.conf를 편집하고 내용을 다음 설정으로 교체합니다.
[[inputs.prom]]
urls = ["http://127.0.0.1:5557/metrics"]
ignore_req_err = false
source = "rocketmq"
# 빈 목록은 Counter, Gauge, Histogram을 포함한 모든 메트릭 유형을 수집합니다
metric_types = []
metric_name_filter = ["^rocketmq_"]
interval = "10s"
measurement_prefix = ""
measurement_name = "rocketmq"
# 전체 Prometheus 메트릭 필드 이름을 유지합니다
keep_exist_metric_name = true
| 매개변수 | 설명 |
|---|---|
urls |
Broker 메트릭 엔드포인트 주소입니다. 127.0.0.1은 DataKit과 Broker가 같은 호스트에 있거나 네트워크 네임스페이스를 공유하는 경우에만 사용할 수 있습니다. |
ignore_req_err |
false로 설정하여 메트릭 엔드포인트 요청 오류를 유지하고 수집 문제를 진단합니다. |
source |
DataKit에서 수집 설정을 구분하는 수집기 별칭입니다. |
metric_types |
빈 목록은 모든 메트릭 유형을 수집하여 Histogram 메트릭 누락을 방지합니다. |
metric_name_filter |
rocketmq_로 시작하는 메트릭만 수집합니다. |
interval |
수집 간격입니다. 이 문서에서는 10s로 설정합니다. |
measurement_prefix |
메트릭 집합 접두사입니다. 이 문서에서는 빈 문자열로 설정합니다. |
measurement_name |
수집한 메트릭을 모두 rocketmq 메트릭 집합에 기록합니다. |
keep_exist_metric_name |
true로 설정하여 전체 Prometheus 메트릭 필드 이름을 유지합니다. |
추가 매개변수는 Prom 수집기 문서를 참조하세요.
클러스터 배포에서는 설정의 urls를 각 Broker의 실제 메트릭 주소로 교체합니다.
각 Broker 호스트에 DataKit을 배포하여 로컬 엔드포인트를 수집할 수도 있습니다. 같은 엔드포인트를 중복 수집하지 않도록 한 가지 방식을 선택하세요.
설정 저장 후 DataKit을 다시 시작하여 설정을 적용합니다.
수집 결과 확인¶
Prom 설정 디버그 명령으로 변환된 메트릭 집합, 필드 및 태그를 확인합니다.
디버그 출력에는 rocketmq 메트릭 집합과 rocketmq_로 시작하는 필드가 포함되어야 합니다. 다음 명령으로 수집기 실행 상태와 요청 오류를 확인합니다.
메트릭¶
이 설정에서는 메트릭이 rocketmq 메트릭 집합에 기록되고 필드에 전체 Prometheus 이름이 유지됩니다. 실제 수집 가능한 필드는 Broker의 /metrics, DataKit 디버그 출력 및 저장된 데이터를 기준으로 확인하세요.
| 메트릭 | 설명 | 유형 | 단위 |
|---|---|---|---|
rocketmq_messages_in_total |
Broker가 수신한 누적 메시지 수입니다. 초당 증가율을 계산하여 생성 TPS를 확인합니다. | Counter | 건 |
rocketmq_messages_out_total |
Broker가 소비자에게 전달한 누적 메시지 수입니다. 초당 증가율을 계산하여 소비 TPS를 확인합니다. | Counter | 건 |
rocketmq_throughput_in_total |
생산자가 Broker에 기록한 누적 바이트 수입니다. 초당 증가율을 계산하여 쓰기 처리량을 구합니다. | Counter | Byte |
rocketmq_throughput_out_total |
소비자가 Broker에서 읽은 누적 바이트 수입니다. 초당 증가율을 계산하여 읽기 처리량을 구합니다. | Counter | Byte |
rocketmq_consumer_ready_messages |
해당 Topic 및 소비자 그룹에서 아직 가져오지 않았으며 소비를 기다리는 준비된 메시지 수입니다. | Gauge | 건 |
rocketmq_consumer_inflight_messages |
해당 Topic 및 소비자 그룹에서 가져왔지만 아직 완료 확인되지 않은 메시지 수입니다. | Gauge | 건 |
rocketmq_consumer_lag_latency_milliseconds |
현재 시간과 가장 오래된 미확인 메시지가 소비 가능해진 시간의 차이로, 소비 완료의 지연을 나타냅니다. | Gauge | 밀리초 |
rocketmq_storage_flush_behind_bytes |
Broker에서 아직 디스크로 플러시되지 않은 데이터 양입니다. | Gauge | Byte |
rocketmq_message_size |
전송된 메시지 크기 분포입니다. 히스토그램 버킷으로 P95를 계산할 수 있습니다. | Histogram | Byte |
rocketmq_rpc_latency_milliseconds |
Broker RPC 지연 시간 분포입니다. 요청 유형별로 전송 및 가져오기 요청의 P95를 확인할 수 있습니다. | Histogram | 밀리초 |
RocketMQ 공식 논리 메트릭 rocketmq_consumer_lag_latency와 rocketmq_rpc_latency에는 이 예제에서 단위 접미사 _milliseconds가 붙습니다. Histogram 메트릭은 _bucket, _sum, _count로 확장됩니다. 예를 들어 rocketmq_rpc_latency_milliseconds_bucket이 생성됩니다. 뷰와 모니터를 만들기 전에 실제 필드와 단위를 확인하세요.
Counter는 누적값이므로 TPS나 초당 처리량으로 직접 표시할 수 없습니다. 초당 증가율을 계산하면 메시지 수의 단위는 건/초, 바이트 수의 단위는 Byte/s가 됩니다. Gauge는 현재 상태를 나타내므로 준비된 메시지 수, 처리 중인 메시지 수, 소비 지연의 값과 추세를 직접 확인합니다. 소비 지연은 가장 오래된 미확인 메시지의 대기 시간이며, 완료된 메시지의 평균 처리 시간이 아닙니다.
일반적인 태그¶
| 태그 | 설명 |
|---|---|
cluster |
RocketMQ 클러스터 이름입니다. |
node_id |
Broker 노드 식별자입니다. |
topic |
Topic 이름으로, 토픽별 생성 및 소비 상황을 구분합니다. |
consumer_group |
소비자 그룹 식별자로, 적체 및 소비 지연을 찾는 데 사용합니다. |
메트릭마다 태그가 다르므로 실제 수집 결과를 기준으로 확인하세요. Broker 스토리지 메트릭은 보통 cluster, node_id별로 확인하며, 소비자 그룹 메트릭은 cluster, topic, consumer_group별로 확인할 수 있습니다.