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

Amazon RDS DB 인스턴스용 Database Monitoring 구성하기

원문 보기 위키 갱신

이 가이드는 Amazon RDS Postgres 또는 MySQL 데이터베이스용 Database Monitoring을 구성했다고 가정해요.

출처: 문서

본문

시작하기 전에

지원되는 데이터베이스: Postgres, MySQL

지원되는 Agent 버전: 7.68.0+

개요 (Overview)

Datadog의 Autodiscovery는 동적 인프라에서 모니터링을 구성할 수 있게 해줘요. 이 기능을 사용하면 개별 데이터베이스 호스트 엔드포인트를 나열하지 않고도 RDS 인스턴스를 모니터링할 수 있어요. Autodiscovery는 구성에서 지정된 태그 기준과 일치하는 RDS 인스턴스를 자동으로 발견하고 모니터링해요.

Autodiscovery와 Database Monitoring을 사용하면 Postgres 또는 MySQL 체크에 대한 구성 템플릿을 정의하고 각 체크를 적용할 인스턴스를 지정할 수 있어요.

RDS 클러스터용 Autodiscovery 활성화하기

  1. AWS 권한 부여
  2. RDS 태그 구성
  3. Datadog Agent 구성
  4. 구성 템플릿 만들기

AWS 권한 부여하기

Datadog Agent는 AWS 계정에서 rds:DescribeDBInstances를 실행할 권한이 필요해요. Datadog는 에이전트가 실행되는 EC2 인스턴스에 IAM 역할 정책을 연결할 것을 권장해요.

이러한 권한을 부여하는 예시 정책:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rds:DescribeDBInstances"
      ],
      "Resource": [
        "arn:aws:rds:<region>:<account>:db:*"
      ]
    }
  ]
}

AmazonRDSReadOnlyAccess 정책을 연결할 수도 있어요.

RDS 태그 구성하기

기본적으로 리스너는 datadoghq.com/scrape:true 태그가 적용된, 에이전트가 실행되는 계정과 리전의 모든 RDS 인스턴스를 발견해요. 특정 태그가 있는 인스턴스를 발견하도록 에이전트를 구성할 수도 있어요.

RDS 리소스 태그 지정에 대한 자세한 내용은 AWS 문서를 참고하세요.

tags를 빈 배열로 구성하면 Autodiscovery는 계정과 리전의 모든 인스턴스를 발견해요.

Datadog Agent 구성하기

Autodiscovery는 Agent 서비스 리스너를 사용해서 모든 데이터베이스 호스트 엔드포인트를 발견하고, 발견된 엔드포인트를 기존 Agent 체크 스케줄링 파이프라인으로 전달해요. datadog.yaml 파일에서 리스너를 구성할 수 있어요:

database_monitoring:
  autodiscovery:
    rds:
      enabled: true

참고: 에이전트는 에이전트와 같은 리전에서 실행되는 RDS 인스턴스만 발견해요. 현재 인스턴스의 리전을 확인하기 위해 에이전트는 IMDS (Instance Metadata Service)를 사용해요. 에이전트는 Agent 버전 7.64.0 이상에서 기본적으로 IMDSv2를 사용해요. 이전 버전에서는 기본적으로 IMDSv1을 사용하며, 아래처럼 datadog.yaml에서 ec2_prefer_imdsv2: true를 설정해 IMDSv2를 사용하도록 구성할 수 있어요:

ec2_prefer_imdsv2: true
database_monitoring:
  autodiscovery:
    rds:
      enabled: true

리스너는 에이전트가 실행되는 계정과 리전의 RDS 인스턴스 중 datadoghq.com/scrape:true 태그가 있는 것만 발견해요. 특정 태그가 있는 클러스터를 발견하도록 리스너를 구성할 수도 있어요.

datadog.yaml 파일에서 RDS 인스턴스 발견을 위한 사용자 정의 태그를 지정하려면:

database_monitoring:
  autodiscovery:
    rds:
      enabled: true
      tags:
        - "my-instance-tag-key:value"

계정과 리전의 모든 RDS 인스턴스를 모니터링하려면:

database_monitoring:
  autodiscovery:
    rds:
      enabled: true
      tags: []

리스너는 반복적으로 AWS API에 호스트 목록을 쿼리해요. 리스너가 AWS API를 쿼리하는 빈도(초)는 datadog.yaml 파일에서 구성할 수 있어요:

database_monitoring:
  autodiscovery:
    rds:
      enabled: true
      discovery_interval: 300

리스너는 인스턴스에 대해 DBM을 활성화하거나 비활성화하는 데 사용할 수 있는 %%extra_dbm%% 변수를 제공해요. 이 값은 datadoghq.com/dbm:true 태그가 있으면 기본적으로 true예요. 이 값에 사용자 정의 태그를 지정하려면 dbm_tag를 사용하세요:

database_monitoring:
  autodiscovery:
    rds:
      enabled: true
      dbm_tag: "use_dbm:true"

%%extra_dbm%% 값은 태그가 있으면 true이고, 없으면 false예요. 태그의 값으로 자신의 값을 설정하지는 않아요.

리스너는 인스턴스의 global_view_db를 설정하는 데 사용할 수 있는 %%extra_global_view_db%% 변수를 제공해요. 이 값은 datadoghq.com/global_view_div 태그의 값으로 기본 설정돼요. 이 값에 사용자 정의 태그를 지정하려면 global_view_db_tag를 사용하세요:

database_monitoring:
  autodiscovery:
    rds:
      enabled: true
      global_view_db_tag: "my_db_tag"

구성 템플릿 만들기

Datadog Agent는 Postgres와 MySQL 통합에 대한 구성 템플릿을 지원해요. 모니터링하려는 RDS 인스턴스에 대한 구성 템플릿을 정의하세요.

Postgres

먼저 RDS 관리형 Postgres용 ad_identifier를 구성 템플릿(postgres.d/conf_aws_rds.yaml) 파일에 추가하세요:

ad_identifiers:
  - _dbm_postgres

그런 다음 템플릿의 나머지를 정의하세요. host와 port처럼 변경될 수 있는 파라미터에는 템플릿 변수를 사용하세요.

ad_identifiers:
  - _dbm_postgres
init_config:
instances:
  - host: "%%host%%"
    port: "%%port%%"
    username: datadog
    dbm: "%%extra_dbm%%"
    database_autodiscovery:
      enabled: true
    aws:
      instance_endpoint: "%%host%%"
      region: "%%extra_region%%"
    tags:
    - "dbinstanceidentifier:%%extra_dbinstanceidentifier%%"
    - "region:%%extra_region%%"

이 예시에서 템플릿 변수 %%host%%, %%port%%, %%extra_dbinstanceidentifier%%, %%extra_dbm%%, %%extra_region%%은 RDS 인스턴스의 정보로 동적으로 채워져요.

인증 (Authentication)

인증에 비밀번호를 사용한다면 이 템플릿 파일에 제공된 비밀번호가 발견된 모든 데이터베이스에 걸쳐 사용된다는 점에 유의하세요.

비밀번호 안전하게 저장하기

Vault 같은 비밀 관리 소프트웨어로 비밀번호를 저장하세요. 그러면 에이전트 구성 파일에서 이 비밀번호를 ENC[<SECRET_NAME>]로 참조할 수 있어요. 예: ENC[datadog_user_database_password]. 자세한 내용은 Secrets Management를 참고하세요.

이 페이지의 예시는 비밀번호가 저장된 비밀의 이름을 나타내기 위해 datadog_user_database_password를 사용해요. 비밀번호를 평문으로 참조할 수도 있지만 권장하지 않아요.

다음 예시 구성 템플릿은 발견된 모든 RDS 인스턴스에 적용돼요:

ad_identifiers:
  - _dbm_postgres
init_config:
instances:
  - host: "%%host%%"
    port: "%%port%%"
    username: datadog
    password: "ENC[datadog_user_database_password]"
    dbm: "%%extra_dbm%%"
    aws:
      instance_endpoint: "%%host%%"
      region: "%%extra_region%%"
    tags:
    - "dbinstanceidentifier:%%extra_dbinstanceidentifier%%"
    - "region:%%extra_region%%"
IAM 인증

RDS 인스턴스에 연결하기 위해 IAM 인증을 사용하려면 다음 템플릿을 사용하세요:

ad_identifiers:
  - _dbm_postgres
init_config:
instances:
  - host: "%%host%%"
    port: "%%port%%"
    username: datadog
    dbm: "%%extra_dbm%%"
    aws:
      instance_endpoint: "%%host%%"
      region: "%%extra_region%%"
      managed_authentication:
        enabled: "%%extra_managed_authentication_enabled%%"
    tags:
      - "dbinstanceidentifier:%%extra_dbinstanceidentifier%%"
      - "region:%%extra_region%%"

템플릿 변수 %%extra_managed_authentication_enabled%%는 인스턴스가 IAM 인증을 사용하면 true로 해석돼요.

사용자 정의 global_view_db (7.75.0+)

데이터베이스 자동탐지(database autodiscovery)를 위한 사용자 정의 전역 뷰 데이터베이스를 설정하려면 Agent 버전 7.75.0 이상을 사용하고 다음 템플릿을 사용하세요:

ad_identifiers:
  - _dbm_postgres
init_config:
instances:
  - host: "%%host%%"
    port: "%%port%%"
    username: datadog
    dbm: true
    database_autodiscovery:
      enabled: true
      global_view_db: "%%extra_global_view_db%%"
    aws:
      instance_endpoint: "%%host%%"
      region: "%%extra_region%%"
    tags:
      - "dbclusteridentifier:%%extra_dbclusteridentifier%%"
      - "region:%%extra_region%%"

MySQL

먼저 RDS 관리형 MySQL용 ad_identifier를 구성 템플릿(mysql.d/conf_aws_rds.yaml) 파일에 추가하세요:

ad_identifiers:
  - _dbm_mysql

그런 다음 템플릿의 나머지를 정의하세요. host와 port처럼 변경될 수 있는 파라미터에는 템플릿 변수를 사용하세요.

ad_identifiers:
  - _dbm_mysql
init_config:
instances:
  - host: "%%host%%"
    port: "%%port%%"
    username: datadog
    password: "ENC[datadog_user_password]"
    dbm: "%%extra_dbm%%"
    aws:
      instance_endpoint: "%%host%%"
    tags:
    - "dbinstanceidentifier:%%extra_dbinstanceidentifier%%"
    - "region:%%extra_region%%"

이 예시에서 템플릿 변수 %%host%%, %%port%%, %%extra_dbinstanceidentifier%%, %%extra_dbm%%, %%extra_region%%은 RDS 인스턴스의 정보로 동적으로 채워져요.

인증 (Authentication)

인증에 비밀번호를 사용한다면 이 템플릿 파일에 제공된 비밀번호가 발견된 모든 데이터베이스에 걸쳐 사용된다는 점에 유의하세요.

비밀번호 안전하게 저장하기

Vault 같은 비밀 관리 소프트웨어로 비밀번호를 저장하세요. 그러면 에이전트 구성 파일에서 이 비밀번호를 ENC[<SECRET_NAME>]로 참조할 수 있어요. 예: ENC[datadog_user_database_password]. 자세한 내용은 Secrets Management를 참고하세요.

이 페이지의 예시는 비밀번호가 저장된 비밀의 이름을 나타내기 위해 datadog_user_database_password를 사용해요. 비밀번호를 평문으로 참조할 수도 있지만 권장하지 않아요.

다음 예시 구성 템플릿은 발견된 모든 RDS 인스턴스에 적용돼요:

ad_identifiers:
  - _dbm_mysql
init_config:
instances:
  - host: "%%host%%"
    port: "%%port%%"
    username: datadog
    password: "ENC[datadog_user_database_password]"
    dbm: "%%extra_dbm%%"
    aws:
      instance_endpoint: "%%host%%"
      region: "%%extra_region%%"
    tags:
    - "dbinstanceidentifier:%%extra_dbinstanceidentifier%%"
    - "region:%%extra_region%%"
IAM 인증 (7.67.0+)

RDS 인스턴스에 연결하기 위해 IAM 인증을 사용하려면 Agent 버전 7.67.0 이상을 사용하고 다음 템플릿을 사용하세요:

ad_identifiers:
  - _dbm_mysql
init_config:
instances:
  - host: "%%host%%"
    port: "%%port%%"
    username: datadog
    dbm: "%%extra_dbm%%"
    aws:
      instance_endpoint: "%%host%%"
      region: "%%extra_region%%"
      managed_authentication:
        enabled: "%%extra_managed_authentication_enabled%%"
    tags:
      - "dbinstanceidentifier:%%extra_dbinstanceidentifier%%"
      - "region:%%extra_region%%"

템플릿 변수 %%extra_managed_authentication_enabled%%는 인스턴스가 IAM 인증을 사용하면 true로 해석돼요.

통합과 함께 Autodiscovery를 구성하는 방법에 대한 자세한 내용은 Autodiscovery 문서를 참고하세요.

지원되는 템플릿 변수

템플릿 변수 출처
%%host%% RDS 인스턴스 엔드포인트
%%port%% RDS 인스턴스의 포트
%%extra_region%% 인스턴스가 위치한 AWS 리전
%%extra_dbinstanceidentifier%% 발견된 RDS 인스턴스의 인스턴스 식별자
%%extra_dbclusteridentifier%% 발견된 RDS 인스턴스의 클러스터 식별자(존재하는 경우)
%%extra_dbm%% 인스턴스에서 DBM이 활성화되었는지 여부. dbm_tag의 존재로 결정되는데, 기본값은 datadoghq.com/dbm:true예요.
%%extra_managed_authentication_enabled%% 인스턴스에서 IAM 인증이 활성화되었는지 여부. 연결에 관리형 인증(managed authentication)을 사용할지 결정하는 데 사용돼요.
%%extra_global_view_db%% global_view_db_tag의 값. 기본값은 datadoghq.com/global_view_db예요.

더 알아보기 (Learn more)