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_queries
내 tags
설정이 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 포맷과 들여쓰기 정확히 유지