데이터베이스 모니터링으로 사용자 지정 메트릭 수집
데이터베이스 모니터링으로 사용자 지정 메트릭 수집 (Collecting Custom Metrics with Database Monitoring)
출처: 문서
본문
custom_queries를 사용해서 에이전트의 데이터베이스 사용자가 읽을 수 있는 어떤 테이블에서든 메트릭을 수집할 수 있어요. 이를 통해 데이터베이스 모니터링이 기본적으로 수집하는 쿼리 성능 메트릭에 더해, 애플리케이션 상태 테이블, 비즈니스 카운터, 큐 깊이 같은 데이터도 Datadog에서 사용할 수 있게 확장돼요.
시작하기 전에 (Before you begin)
Datadog 에이전트가 설치되어 있고 데이터베이스 통합이 구성되어 있어야 해요. 에이전트의 데이터베이스 사용자는 쿼리하는 모든 테이블에 대한 SELECT 권한이 필요해요.
구성 (Configuration)
통합의 conf.yaml 파일에 custom_queries를 추가해요. 목록의 각 항목은 하나의 SQL 쿼리를 실행하고 출력 열을 메트릭 또는 태그에 매핑해요.
| 옵션 | 필수 | 설명 |
|---|---|---|
metric_prefix |
예 | 이 쿼리가 내보내는 모든 메트릭은 이 접두사로 시작해요. |
query |
예 | 실행할 SQL. 반환된 모든 행이 평가돼요. 여러 줄 쿼리에는 파이프 문자(` |
columns |
예 | SELECT와 같은 순서의 열 목록. 각 열에는 name과 type이 필요해요. type을 gauge, count, rate 또는 다른 메트릭 타입으로 설정해 메트릭을 내보내거나, tag로 설정해서 이 쿼리의 모든 메트릭에 열 값을 태그로 적용할 수 있어요. |
tags |
아니요 | 이 쿼리의 모든 메트릭에 적용되는 정적 태그 목록. |
참고:
columns항목 수는 쿼리가 반환하는 열 수와 같아야 해요.columns항목의 순서는 쿼리가 반환하는 열 순서와 일치해야 해요.columns의 항목 중 하나 이상은 메트릭 타입(tag가 아닌)이어야 해요.
예시 (Examples)
PostgreSQL
postgres.d/conf.yaml 파일에 custom_queries를 추가해요.
쿼리가 datadog 사용자가 아직 접근할 수 없는 테이블을 읽는다면 먼저 권한을 부여하세요.
GRANT SELECT ON <TABLE_NAME> TO datadog;
예시: 다음 company 테이블은 직원 기록을 포함해요.
id | name | age | address | salary
---------------------------------------
1 | Paul | 32 | California | 20000
2 | Allen | 25 | Texas | 30000
3 | Teddy | 23 | Norway | 45000
name과 address를 태그로, age와 salary를 메트릭으로 수집하려면:
custom_queries:
- metric_prefix: postgresql.employee
query: SELECT age, salary, name, address FROM company
columns:
- name: employee_age
type: gauge
- name: employee_salary
type: gauge
- name: name
type: tag
- name: address
type: tag
tags:
- source:hr_db
파일을 업데이트한 후 에이전트를 재시작하세요.
전체 구성 참조는 Postgres 사용자 지정 메트릭 수집을 참고하세요.
MySQL
mysql.d/conf.yaml 파일에 custom_queries를 추가해요.
중요: 모든 테이블 참조에는 데이터베이스 이름(database_name.table_name)이 포함되어야 해요. 데이터베이스 이름을 생략하면 에이전트는 No database selected 오류로 실패해요.
예시: testdb 데이터베이스의 다음 company 테이블은 직원 기록을 포함해요.
id | name | age | address | salary
---------------------------------------
1 | Paul | 32 | California | 20000
2 | Allen | 25 | Texas | 30000
3 | Teddy | 23 | Norway | 45000
name과 address를 태그로, age와 salary를 메트릭으로 수집하려면:
custom_queries:
- metric_prefix: mysql.employee
query: SELECT age, salary, name, address FROM testdb.company
columns:
- name: employee_age
type: gauge
- name: employee_salary
type: gauge
- name: name
type: tag
- name: address
type: tag
tags:
- source:hr_db
파일을 업데이트한 후 에이전트를 재시작하세요.
전체 구성 참조는 MySQL 사용자 지정 쿼리를 참고하세요.
SQL Server
SQL Server는 사용자 지정 메트릭 수집을 위해 사용자 지정 쿼리 또는 성능 카운터(performance counters)라는 두 가지 방식을 지원해요.
사용자 지정 쿼리 (Custom queries)
sqlserver.d/conf.yaml 파일에 custom_queries를 추가해 어떤 테이블에서든 메트릭을 수집할 수 있어요.
예시: testdb의 다음 company 테이블은 직원 기록을 포함해요.
id | name | age | address | salary
---------------------------------------
1 | Paul | 32 | California | 20000
2 | Allen | 25 | Texas | 30000
3 | Teddy | 23 | Norway | 45000
name과 address를 태그로, age와 salary를 메트릭으로 수집하려면:
custom_queries:
- metric_prefix: sqlserver.employee
query: SELECT age, salary, name, address FROM testdb.dbo.company
columns:
- name: employee_age
type: gauge
- name: employee_salary
type: gauge
- name: name
type: tag
- name: address
type: tag
tags:
- source:hr_db
성능 카운터 (Performance counters)
custom_metrics를 사용해서 sys.dm_os_performance_counters 및 기타 시스템 DMV에서 메트릭을 수집할 수 있어요.
custom_metrics:
- name: sqlserver.clr.execution
counter_name: CLR Execution
| 옵션 | 필수 | 설명 |
|---|---|---|
name |
예 | Datadog에서의 메트릭 이름. |
counter_name |
예 | sys.dm_os_performance_counters의 카운터 이름. |
instance_name |
아니요 | 특정 카운터 인스턴스. 모든 인스턴스를 수집하려면 ALL 사용 (tag_by 필요). |
tag_by |
아니요 | instance_name: ALL일 때 인스턴스를 구분하는 데 사용하는 태그 이름. |
파일을 업데이트한 후 에이전트를 재시작하세요.
성능 카운터 세부 사항과 레거시 저장 프로시저 방식을 포함한 전체 구성 참조는 SQL Server 사용자 지정 메트릭 수집을 참고하세요.
검증 (Validation)
에이전트가 실행된 후 메트릭 탐색기(Metrics Explorer)에서 메트릭을 검색해요.
구성 오류를 확인하려면 에이전트의 status 하위 명령을 실행하고 Checks 섹션에서 통합을 찾아보세요.
postgres
--------
- instance #0 [ERROR]: 'Missing metric_prefix parameter in custom_queries'
- Collected 0 metrics, 0 events & 0 service checks