본문 바로가기
WIKI 기술 지식 베이스

데이터베이스 모니터링으로 사용자 지정 메트릭 수집

원문 보기 위키 갱신

데이터베이스 모니터링으로 사용자 지정 메트릭 수집 (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

더 알아보기 (Learn more)