RabbitMQ Integration
- Agent
RabbitMQ의 Prometheus 플러그인 버전은 Datadog Agent의 Python 3 지원이 필요하므로 Agent v6 이상에서만 지원될 수 있습니다. 통합의 Prometheus 플러그인 버전을 구성하기 전에 에이전트가 업데이트 되었는지 확인해야 합니다.
- rabbitmq.d/conf.yaml
init_config:
instances:
- prometheus_plugin:
url: http://<HOST>:15692
- prometheus_plugin옵션을 사용할 때 관리 플러그인과 관련된 설정은 무시됩니다.
엔드포인트에서 스크래핑도 가능합니다. 데이터독은 /metrics/detailed 엔드포인트에서 데이터를 수집할 수도 있습니다. (개체별 메트릭을 사용하는 것은 가능하나, 컴퓨팅 비용을 많이 소요한다고 합니다.)
instances:
- prometheus_plugin:
url: http://<HOST>:15692
unaggregated_endpoint: detailed?family=queue_coarse_metrics
설정 완료 후 에이전트를 다시 시작합니다.
- 로그 수집 위치 변경 (선택)
기본 로그 파일 위치를 수정하려면 RABBITMQ_LOGS환경 변수를 설정하거나 다음 내용을 RabbitMQ 구성 파일에 추가합니다.( /etc/rabbitmq/rabbitmq.conf):
log.dir = /var/log/rabbit
log.file = rabbit.log
Datadog Agent에서는 기본적으로 로그 수집이 비활성화되어 있습니다 datadog.yaml. 파일에서 활성화하세요.
logs_enabled: true
RabbitMQ 로그 수집을 시작하려면 파일 logs섹션을 편집하세요 .
- rabbitmq.d/conf.yaml
logs:
- type: file
path: /var/log/rabbit/*.log
source: rabbitmq
service: myservice
log_processing_rules:
- type: multi_line
name: logs_starts_with_equal_sign
pattern: "="
에이전트를 다시 시작합니다.
컨테이너 환경에서 RabbitMQ 메트릭 및 로그 수집 설정 (Datadog Autodiscovery 사용)
Datadog 에이전트의 Autodiscovery 기능을 사용하면 컨테이너화된 환경(Kubernetes 포함)에서 RabbitMQ 메트릭과 로그를 쉽게 수집할 수 있습니다. 아래는 Docker 및 Kubernetes 환경에서 RabbitMQ를 설정하는 방법입니다.
- Docker 및 Kubernetes에서의 설정 요약
1.1 Datadog Autodiscovery를 활용한 설정
Autodiscovery를 사용하면 컨테이너의 메타데이터와 환경 설정을 자동으로 감지하여 적절한 메트릭 수집 구성을 적용할 수 있습니다.
- RabbitMQ용 Autodiscovery 예제 설정:
<INTEGRATION_NAME>: rabbitmq
<INIT_CONFIG>: {}
<INSTANCE_CONFIG>:
prometheus_plugin:
url: "http://%%host%%:15692"
- Kubernetes 환경에서는 Autodiscovery Integration Templates를 참고하여 구성할 수 있습니다.
이 템플릿은 파라미터 자동 감지를 도와줍니다.
- 메트릭 수집 설정 (Metric Collection)
- RabbitMQ 메트릭 수집 구성은 Prometheus 플러그인을 통해 수행됩니다.
- RabbitMQ 컨테이너에서 15692 포트로 노출된 Prometheus 메트릭 엔드포인트를 사용합니다.
<INSTANCE_CONFIG>:
prometheus_plugin:
url: "http://%%host%%:15692"
**%%host%%**는 컨테이너가 실행 중인 호스트 주소로 자동으로 대체됩니다.
- 로그 수집 설정 (Log Collection)
- Datadog 에이전트 v6.0 이상에서 로그 수집 기능을 사용할 수 있습니다.
- 기본적으로 로그 수집은 비활성화되어 있으며, 이를 활성화하려면 아래 설정을 추가해야 합니다.
3.1 RabbitMQ 로그 수집 구성 예시
<LOG_CONFIG>:
source: "rabbitmq"
service: "rabbitmq"
log_processing_rules:
type: "multi_line"
name: "logs_starts_with_equal_sign"
pattern: "="
- Kubernetes에서 로그 수집 활성화
- Kubernetes 환경에서 로그 수집을 활성화하려면 datadog-agent 설정에서 로그 수집 기능을 true로 설정합니다.
Kubernetes 설정 예시:
apiVersion: v1
kind: ConfigMap
metadata:
name: datadog-agent
namespace: default
data:
datadog.yaml: |
logs_enabled: true
- 설정 확인 및 검증 (Validation)
- Datadog 에이전트가 올바르게 실행되고 있는지 확인하려면 다음 명령어를 사용합니다:
datadog-agent status
- RabbitMQ가 올바르게 설정된 경우, 명령 결과에서 Checks 섹션에 rabbitmq 항목이 표시됩니다.
- 참고하면 좋을 내용 :
네트워크의 부하를 줄이기 위해서 30초마다 한번씩 Datadog으로 수집된 큐 정보를 보내는 스크립트를 찾았습니다.
15,000개 큐에 대한 실행도 1초밖에 걸리지 않는다고 합니다.
#!/usr/bin/env ruby
require 'datadog/statsd'
require 'json'
statsd = Datadog::Statsd.new('localhost', 8125)
queue_fields = %w(
consumer_utilisation
consumers
memory
messages_ready
name
)
vhosts = JSON.parse(
`rabbitmqctl list_vhosts --formatter json`,
'DevOps > Observability' 카테고리의 다른 글
[Datadog] RabbitMQ의 주요 메트릭 (10) | 2024.11.09 |
---|---|
Rabbit MQ on Datadog (2) | 2024.11.08 |
CoreDNS 모니터링으로 Kubernetes 네트워크 안정성 확보하기 (11) | 2024.11.07 |