Datadog에서 MySQL 커스텀 메트릭 수집 문제 해결기 (샘플 기반)

Datadog을 통해 MySQL의 특정 상태 값을 모니터링하고자 커스텀 메트릭을 구성했지만, 기대한 메트릭이 수집되지 않아 많은 시간을 소요했습니다. 이 글에서는 문제를 어떻게 해결했는지, 어떤 점을 유의해야 하는지 샘플과 함께 공유합니다.

문제 상황

  • datadog-agent check mysql 명령이 No database selected 오류 반환
  • Datadog UI의 Metrics 탭에서는 내가 정의한 커스텀 메트릭이 노출되지 않음
  • Status Checks 탭에서는 tags 기준으로 정상적으로 분류됨

원인 분석

초기 YAML 구성에서 database 설정이 있었음에도, 커스텀 쿼리에서 fully qualified name (schema.table)을 사용하지 않으면 MySQL에서 USE database가 되지 않은 상태로 쿼리가 실행됨.

또한, custom_queriestags 설정이 columns와 병렬로 존재하면 메트릭 생성에 영향을 줄 수 있음.

해결 방법

최종적으로 다음과 같은 YAML 설정으로 문제 해결함.

init_config:

instances:
- host: sample-db-host-1.rds.amazonaws.com
username: sample_user
password: sample_password
port: 3306
database: sample_database
tags:
- env:dev
- service:mysql
- custom-metrics
custom_queries:
- query: >
SELECT COUNT(*) as active_jobs
FROM sample_database.job_execution
WHERE status = 'RUNNING';
columns:
- name: active_jobs
type: gauge

- query: >
SELECT COUNT(*) as long_running_jobs
FROM sample_database.job_execution
WHERE status = 'RUNNING'
AND start_time < DATE_SUB(NOW(), INTERVAL 1 HOUR);
columns:
- name: long_running_jobs
type: gauge

추가 팁

  • datadog-agent status 또는 sudo -u dd-agent datadog-agent check mysql 등을 통해 쿼리 테스트
  • Datadog에서 메트릭이 노출되기까지 몇 분의 지연이 있을 수 있음
  • YAML 포맷과 들여쓰기 정확히 유지

관련 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다