컨테이너 인스턴스를 사용하여 PostgreSQL 사용자정의 OCI 모니터링 알람 및 대시보드 생성
소개
이 사용지침서에서는 OCI(Oracle Cloud Infrastructure)에서 Docker 기반 Java 애플리케이션을 사용하여 PostgreSQL에 대한 사용자정의 모니터링 솔루션을 배포하기 위한 단계별 지침을 제공합니다. VM(가상 머신) 기반 컨테이너를 사용하여 OCI에서 비활성 복제 슬롯 및 복제 지연에 대한 사용자정의 경보 및 대시보드를 생성하는 방법을 설명합니다. 현재 설정은 PostgreSQL 복제 지연 및 비활성 복제 슬롯 모니터링에 중점을 두지만 설계는 유연하며 응용 프로그램 코드를 수정하여 추가 데이터베이스 측정 단위를 추적하도록 쉽게 확장할 수 있습니다.
목표
-
OCI 가상 머신에 Docker 기반 Java 애플리케이션을 배치하여 PostgreSQL를 모니터링합니다.
-
배포된 모니터링 솔루션을 사용하여 비활성 복제 슬롯 및 복제 지연을 위해 OCI에서 커스터마이징 알람 및 대시보드를 생성합니다.
작업 1: 모니터링 서비스 다운로드 및 설정
-
Postgres-monitoring-services.zip에서
Postgres-monitoring-services.zip
파일을 다운로드합니다. -
압축을 풀고
README.md
파일의 지침에 따라 응용 프로그램을 빌드하고 실행합니다. -
Docker 빌드 및 배포 지침은 저장소에 포함되어 있습니다.
주: Docker 이미지 작성 및 푸시 지침은 프로젝트 저장소의
README.md
에서 이미 사용할 수 있습니다.
작업 2: 동적 그룹을 생성합니다.
동적 그룹을 사용하면 컨테이너 VM이 하드코딩된 인증서를 사용하거나 이미지에 인증서를 저장하지 않고도 OCI 모니터링, OCI Vault, OCI Registry와 같은 OCI 서비스에 액세스할 수 있습니다.
다음 정보를 사용합니다.
- 이름:
psql_monitoring_with_container_vm_dg
을 입력합니다. -
일치 규칙:
ALL {resource.type = 'computecontainerinstance', resource.compartment.id = '<your-compartment-id>'}
주:
compartment.id
는 컨테이너 인스턴스가 생성될 컴파트먼트 OCID입니다.
작업 3: 네트워크 구성(VCN 및 서비스 게이트웨이)
원활한 통신을 위해 컨테이너 VM을 PostgreSQL 데이터베이스 시스템과 동일한 전용 서브넷에 배치합니다. 서비스 게이트웨이를 사용하여 OCI 서비스에 대한 액세스를 사용으로 설정합니다.
보안 목록 규칙:
다음 규칙이 프라이빗 서브넷의 보안 목록에 추가되어 있지 않은지 확인하십시오.
유형 | 소스 CIDR | 프로토콜 | 포트 | 용도 |
---|---|---|---|---|
수신 | 프라이빗-서브넷-CIDR | TCP | 5432 | PostgreSQL 액세스 |
송신 | 0.0.0.0/0 | 모두 | 모두 | OCI 서비스에 액세스 |
작업 4: 보안 비밀번호 저장에 OCI 저장소 사용
보안 비밀번호 스토리지에 OCI Vault를 사용하여 데이터베이스 인증서 하드코딩을 방지합니다.
-
저장소를 생성하고 PostgreSQL 비밀번호가 포함된 비밀번호를 추가합니다.
-
저장소 암호 OCID를 기록합니다.
-
암호가 존재하는 경우 재사용합니다.
작업 5: Oracle Cloud Infrastructure Identity and Access Management 정책 정의
이러한 OCI IAM 정책을 첨부합니다.
Allow dynamic-group psql_monitoring_with_container_vm_dg to read vaults in compartment <your-compartment-id>
Allow dynamic-group psql_monitoring_with_container_vm_dg to read secret-bundles in compartment <your-compartment-id>
Allow dynamic-group psql_monitoring_with_container_vm_dg to use metrics in compartment <your-compartment-id>
Allow dynamic-group psql_monitoring_with_container_vm_dg to read repos in compartment <your-tenancy-id>
작업 6: 컨테이너 인스턴스 실행
OCI 콘솔로 이동하여 개발자 서비스, 컨테이너 아티팩트, 컨테이너 인스턴스, 인스턴스 생성으로 이동하고 다음 정보를 입력합니다.
- VCN/서브넷: 데이터베이스 시스템과 동일하게 선택합니다.
- 구성: 1 OCPU(4GB)를 선택합니다.
- Docker 이미지: OCIR에서를 선택합니다.
-
환경 변수:
DB_PASSWORD_VAULT_ID=<your-vault-secret-ocid> DB_SYSTEM_ID=<your-db-system-ocid> DB_PE=<your-db-system-private-endpoint-FQDN> DB_PSQL_USER=<your-db-user> METRIC_COMPARTMENT_ID=<your-compartment-id> METRIC_NAMESPACE=postgres_monitor_with_container_vm REPLICATION_LAG_METRIC_NAME=replication_lag_metric INACTIVE_SLOTS_METRIC_NAME=inactive_slot_metric MONITOR_INTERVAL_SEC=60
주: 액세스는 OCI IAM 동적 그룹을 통해 인증서 없이 부여됩니다.
작업 7: OCI 콘솔에서 로그 확인
OCI 콘솔로 이동하여 Developer Services, Container Artifact, Container Instances로 이동하고 인스턴스를 선택한 다음, Containers 탭을 눌러 로그 및 런타임 상태를 검사합니다.
작업 8: 측정항목 탐색기에서 측정항목 보기
OCI 콘솔로 이동하여 관찰 가능성 및 관리, 측정항목 탐색기로 이동하고 다음 정보를 입력합니다.
- 이름 공간:
postgres_monitor_with_container_vm
를 입력합니다. - 측정항목:
replication_lag_metric
및inactive_slot_metric
을 선택합니다. - 필터:
DBSystemId = "<your-db-system-ocid>"
를 입력합니다.
예제 Query:
replication_lag_metric[1m]{DBSystemId = "<your-db-system-ocid>"}.mean()
작업 9: OCI 통지 항목 및 가입 설정
-
OCI 콘솔로 이동하여 애플리케이션 통합으로 이동하고 통지를 누릅니다.
-
항목을 생성합니다. 예를 들어,
PostgresCustomMonitoringAlerts
입니다. -
구독(전자메일, Webhook 등)을 추가합니다.
-
실시간 경고를 위해 이 항목을 알람에 연결합니다.
작업 10: 주요 측정 단위에 대한 OCI 모니터링 알람 구성
-
복제 지연 알람
replication_lag_metric[1m]{DBSystemId = "<your-db-system-ocid>"}.max()
- 트리거: > 1,000,000 (1 MB)를 입력합니다.
- 지연: 5분을 입력합니다.
- 심각도: 중요를 선택합니다.
-
비활성 복제 슬롯 알람
inactive_slot_metric[1h]{DBSystemId = "<your-db-system-ocid>"}.max()
- 트리거: > 1을 입력합니다.
- 지연: 2시간을 입력합니다.
- 심각도: 경고를 선택합니다.
-
누락된 데이터 알람
- 측정항목:
replication_lag_metric
을 선택합니다. - 트리거: 10분 동안 데이터 없음을 입력합니다.
- 심각도: 오류를 선택합니다.
- 측정항목:
작업 11: 커스텀 대시보드 생성
-
OCI 콘솔로 이동하여 관찰 가능성 및 관리로 이동하고 대시보드를 누릅니다.
-
새 대시보드를 누릅니다.
-
측정항목 차트 또는 질의 작성기를 사용하여 위젯을 추가합니다.
-
다음 정보를 입력합니다.
- 이름 공간:
postgres_monitor_with_container_vm
를 입력합니다. - 측정항목:
replication_lag_metric
및inactive_slot_metric
을 선택합니다.
- 이름 공간:
-
차트 유형, 필터 및 시간 범위를 사용자정의합니다.
요약 테이블
구성요소 | 용도 |
---|---|
동적 그룹 | 컨테이너 VM에 대한 OCI 액세스 권한 부여 |
OCI Vault | 보안 데이터베이스 인증서 스토리지 |
OCI Registry | 호스트 Docker 이미지 저장소 |
모니터링 에이전트 | 사용자정의 PostgreSQL 측정항목을 수집합니다. |
알람 | 지연, 슬롯, 누락된 데이터에 대한 경보 |
컨테이너 VM | Java 기반 모니터링 툴 실행 |
대시보드 | 실시간으로 측정지표 시각화 |
서버리스 및 복원력 있는 아키텍처 하이라이트
-
서버리스 구조:
- 컨테이너 VM을 사용하여 배치되므로 인프라를 수동으로 관리할 필요가 없습니다.
- OCI, 호스트 레벨 장애로부터 VM 프로비저닝 및 복구 처리
장점: 운영 오버헤드를 줄이고 내결함성을 개선합니다.
-
자동 컨테이너 재시작:
- 컨테이너는 기본 재시작 정책으로 설정됩니다.
- 응용 프로그램이 충돌하거나 예기치 않게 종료되면 자동으로 다시 시작됩니다.
장점: 고가용성을 보장하고 작동 중지 시간을 최소화합니다.
-
측정 단위 기반 알람:
- 전용 알람은 예상 측정항목이 누락된 경우 트리거되도록 구성됩니다.
장점: 자동 장애를 감지하고 조기 경보를 사용으로 설정하는 비상 안전 역할을 합니다.
문제 해결 및 해결
-
연결 문제:
5432
포트가 서브넷의 보안 목록에서 열려 있는지 확인합니다.- 프라이빗 액세스를 위해 서비스 게이트웨이가 연결되었는지 확인합니다.
-
OCI IAM 권한 오류:
- 동적 그룹이 올바른 컴파트먼트와 일치하는지 확인합니다.
- 필요한 정책이 준비되어 있는지 확인합니다.
-
설정 오류:
- 환경 변수를 검증합니다.
- 암호 및 측정항목 OCID를 확인합니다.
- 로그를 사용하여 런타임 실패를 추적합니다.
관련 링크
승인
- Authors - Arvind Yadav, Kanaram Bhari(소프트웨어 엔지니어 - PostgreSQL를 사용하는 OCI 데이터베이스)
추가 학습 자원
docs.oracle.com/learn에서 다른 랩을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Create PostgreSQL Custom OCI Monitoring Alarms and Dashboard using Container Instances
G37663-01
Copyright ©2025, Oracle and/or its affiliates.