Oracle RAC용 Database Monitoring 설정하기
이 페이지에서는 Oracle RAC(Real Application Cluster)에 Database Monitoring을 설정하는 방법을 설명드릴게요. Database Monitoring은 쿼리 샘플을 노출해 각기 다른 워크로드를 프로파일링하고 문제를 진단할 수 있게 해 줍니다.
에이전트는 읽기 전용 사용자로 로그인해 데이터베이스에서 직접 원격 측정을 수집해요.
출처: 문서
본문
시작하기 전에 (Before you begin)
- 지원되는 Oracle 버전: 11g, 12c, 18c, 19c, 21c
- 지원되는 Agent 버전: 7.53.0+
- 성능 영향: Database Monitoring의 기본 Agent 구성은 보수적이지만, 수집 간격이나 쿼리 샘플링 비율 같은 설정을 필요에 맞게 조정할 수 있어요. 대부분의 워크로드에서 에이전트는 데이터베이스 쿼리 실행 시간의 1% 미만, CPU의 1% 미만을 차지합니다. Database Monitoring은 기본 Agent 위에서 통합으로 실행돼요 (벤치마크 참고).
- 프록시, 로드 밸런서, 커넥션 풀러: 에이전트는 모니터링 대상 호스트에 직접 연결해야 해요. 에이전트는 프록시, 로드 밸런서, 커넥션 풀러를 통해 데이터베이스에 연결하면 안 돼요. 각 에이전트는 기본 호스트 이름을 알고 있어야 하며, 장애 조치의 경우에도 수명 동안 단일 호스트를 고수해야 해요. Datadog Agent가 실행 중에 다른 호스트에 연결하면 메트릭 값이 부정확해져요.
- 데이터 보안 고려 사항: 에이전트가 데이터베이스에서 수집하는 데이터와 이를 안전하게 유지하는 방법은 민감 정보 (Sensitive information) 문서를 참고하세요.
설정 (Setup)
Oracle 데이터베이스에 Database Monitoring을 활성화하려면 다음을 완료하세요.
- Datadog 사용자 만들기
- 에이전트 설치하기
- 에이전트 구성하기
- Oracle 통합 설치 또는 확인하기
- 설정 검증하기
Datadog 사용자 만들기
서버에 연결하기 위한 읽기 전용 로그인을 만들고 필요한 권한을 부여하세요.
{% tab title="Multi-tenant" %}
CREATE USER c##datadog IDENTIFIED BY &password CONTAINER = ALL ;
ALTER USER c##datadog SET CONTAINER_DATA=ALL CONTAINER=CURRENT;
{% /tab %}
{% tab title="Non-CDB" %}
CREATE USER datadog IDENTIFIED BY &password ;
{% /tab %}
{% tab title="Oracle 11" %}
CREATE USER datadog IDENTIFIED BY &password ;
{% /tab %}
비밀번호를 안전하게 저장하기
Vault 같은 비밀 관리 소프트웨어로 비밀번호를 저장하세요. 그러면 에이전트 설정 파일에서 이 비밀번호를 ENC[<SECRET_NAME>]로 참조할 수 있어요. 예: ENC[datadog_user_database_password]. 자세한 내용은 비밀 관리 (Secrets Management)를 참고하세요.
이 페이지의 예시는 비밀번호가 저장된 비밀의 이름으로 datadog_user_database_password를 사용합니다. 비밀번호를 평문으로 참조하는 것도 가능하지만 권장되지는 않아요.
에이전트 설치하기
에이전트를 어디에 설치할지 결정하려면 DBM 설정 아키텍처 문서를 참고하세요. 에이전트는 외부 Oracle 클라이언트가 필요하지 않아요.
설치 단계는 Agent 설치 지침을 참고하세요.
에이전트 구성하기
각 RAC 노드에 대해 에이전트를 구성하세요. Oracle 배포 유형과 일치하는 탭을 사용하세요. username 값은 이전에 만든 사용자와 일치해야 해요.
에이전트가 V$ 뷰를 쿼리해 각 노드에서 별도로 정보를 수집하므로, 각 RAC(Real Application Cluster) 노드에 대해 에이전트를 구성해야 해요. 에이전트는 상호 연결(interconnect) 트래픽을 최소화하기 위해 필요한 경우에만 GV$ 뷰를 쿼리합니다. 각 RAC 노드에서 수집된 데이터는 프론트엔드에서 집계됩니다.
{% tab title="Multi-tenant" %}
init_config:
instances:
- server: '<RAC_NODE_1>:<PORT>'
service_name: "<CDB_SERVICE_NAME>" # Oracle CDB 서비스 이름
username: 'c##datadog'
password: 'ENC[datadog_user_database_password]'
dbm: true
tags: # Optional
- rac_cluster:<CLUSTER_NAME>
- 'service:<CUSTOM_SERVICE>'
- 'env:<CUSTOM_ENV>'
- server: '<RAC_NODE_2>:<PORT>'
service_name: "<CDB_SERVICE_NAME>" # Oracle CDB 서비스 이름
username: 'c##datadog'
password: 'ENC[datadog_user_database_password]'
dbm: true
tags: # Optional
- rac_cluster:<CLUSTER_NAME>
- 'service:<CUSTOM_SERVICE>'
- 'env:<CUSTOM_ENV>'
에이전트는 CDB에만 연결합니다. CDB에 연결된 상태에서 PDB에 대한 정보를 쿼리해요. 개별 PDB에 대한 연결을 만들지 마세요. {% /tab %}
{% tab title="Non-CDB" %}
init_config:
instances:
- server: '<RAC_NODE_1>:<PORT>'
service_name: "<SERVICE_NAME>"
username: 'datadog'
password: 'ENC[datadog_user_database_password]'
dbm: true
tags: # Optional
- rac_cluster:<CLUSTER_NAME>
- 'service:<CUSTOM_SERVICE>'
- 'env:<CUSTOM_ENV>'
- server: '<RAC_NODE_2>:<PORT>'
service_name: "<SERVICE_NAME>"
username: 'datadog'
password: 'ENC[datadog_user_database_password]'
dbm: true
tags: # Optional
- rac_cluster:<CLUSTER_NAME>
- 'service:<CUSTOM_SERVICE>'
- 'env:<CUSTOM_ENV>'
{% /tab %}
{% tab title="Oracle 11" %}
init_config:
instances:
- server: '<RAC_NODE_1>:<PORT>'
service_name: "<SERVICE_NAME>"
username: 'datadog'
password: 'ENC[datadog_user_database_password]'
dbm: true
tags: # Optional
- rac_cluster:<CLUSTER_NAME>
- 'service:<CUSTOM_SERVICE>'
- 'env:<CUSTOM_ENV>'
- server: '<RAC_NODE_2>:<PORT>'
service_name: "<SERVICE_NAME>"
username: 'datadog'
password: 'ENC[datadog_user_database_password]'
dbm: true
tags: # Optional
- rac_cluster:<CLUSTER_NAME>
- 'service:<CUSTOM_SERVICE>'
- 'env:<CUSTOM_ENV>'
{% /tab %}
rac_cluster 구성 파라미터를 RAC 클러스터 이름이나 사용자 친화적인 별칭으로 설정하세요. rac_cluster 필터는 DBM Oracle Database Overview 대시보드에서 모든 RAC 노드를 선택하는 데 도움이 돼요. 관심 있는 데이터베이스에 대한 추가 필터를 설정할 수 있어요.
설정 검증하기
에이전트의 status 하위 명령을 실행해 Checks 섹션에서 oracle을 찾아보세요. Datadog의 Dashboard와 Databases 페이지로 이동해 시작하세요.
사용자 지정 쿼리 (Custom queries)
Database Monitoring은 Oracle 데이터베이스에 대한 사용자 지정 쿼리를 지원합니다. 사용 가능한 구성 옵션에 대해 알아보려면 conf.yaml.example을 참고하세요.
{% alert level="danger" %} 사용자 지정 쿼리를 실행하면 Oracle이 부과하는 추가 비용이나 수수료가 발생할 수 있어요. {% /alert %}
더 알아보기 (Learn more)
추가로 도움이 되는 문서, 링크, 글: