Amazon CloudWatch Database Insights로 데이터베이스 모니터링
소개
Amazon CloudWatch Database Insights는 Amazon RDS 및 Aurora 데이터베이스를 위한 통합 모니터링 솔루션입니다. 데이터베이스 메트릭, 쿼리 분석, 로그, 이벤트, 애플리케이션 텔레메트리를 CloudWatch 콘솔 내 단일 경험으로 통합하여 데이터베이스 계층에서 무슨 일이 일어나고 있는지 이해하기 위해 여러 도구를 전환할 필요를 없앱니다.
이 문서에서는 Database Insights가 제공하는 기능, 두 가지 운영 모드 중에서 선택하는 방법, 데이터베이스를 효과적으로 모니터링하기 위한 실용적인 가이드, 도입 전에 알아야 할 제한 사항을 다룹니다.
Database Insights란?
Database Insights는 Amazon RDS Performance Insights를 기반으로 하며, 플릿 전체 모니터링, 로그 상관관계 분석, 잠금 분석, 실행 계획 캡처, 애플리케이션 수준 통합 기능을 추가로 제공합니다. 곧 수명이 종료되는 독립형 Performance Insights 콘솔 경험의 후속 서비스입니다.
핵심 개념은 DB Load입니다. 이는 특정 시점에 데이터베이스에서 활성 상태인 세션의 평균 수를 의미합니다. DB Load가 인스턴스의 vCPU 수를 초과하면 데이터베이스에 과부하가 걸린 상태입니다. Database Insights는 이 메트릭을 시각화하고, 여러 차원(SQL, 대기 이벤트, 사용자, 호스트, 애플리케이션)으로 분할하여 성능 문제의 근본 원인을 빠르게 식별할 수 있도록 합니다.
Standard 모드 vs. Advanced 모드
Database Insights는 두 가지 티어로 운영됩니다. Standard 모드는 추가 비용 없이 기본적으로 활성화됩니다. Advanced 모드는 15개월 보존 기간으로 Performance Insights를 활성화해야 하며, vCPU 시간(프로비저닝) 또는 ACU 시간(서버리스/리미트리스) 기준으로 요금이 부과됩니다.
| 기능 | Standard | Advanced |
|---|---|---|
| 차원별 상위 DB Load 기여 요인 분석 | ✔ | ✔ |
| 메트릭 쿼리, 그래프, 알람 (7일 보존) | ✔ | ✔ |
| 민감한 차원에 대한 세분화된 IAM 접근 제어 | ✔ | ✔ |
| 플릿 전체 모니터링 뷰 | ✘ | ✔ |
| OS 프로세스 분석 (Enhanced Monitoring) | ✘ | ✔ |
| SQL 잠금 분석 (15개월 보존) | ✘ | ✔ (Aurora PG) |
| SQL 실행 계획 분석 (15개월 보존) | ✘ | ✔ (Aurora PG, Oracle, SQL Server) |
| 쿼리별 통계 시각화 | ✘ | ✔ |
| 느린 SQL 쿼리 분석 | ✘ | ✔ |
| Application Signals 통합 (호출 서비스) | ✘ | ✔ |
| 통합 텔레메트리 대시보드 (메트릭, 로그, 이벤트) | ✘ | ✔ |
| Performance Insights 카운터 메트릭 자동 가져오기 | ✘ | ✔ |
| CloudWatch 내 RDS 이벤트 | ✘ | ✔ |
| 온디맨드 성능 분석 보고서 | ✘ | ✔ |
| 교차 계정 교차 리전 모니터링 | ✘ | ✔ |
데이터 보존:
- Standard: Performance Insights 데이터 7일 보존.
- Advanced: Database Insights가 수집하는 모든 메트릭 15개월 보존.
주요 기능 설명
Fleet Health 대시보드
Fleet Health Dashboard는 모든 RDS 및 Aurora 인스턴스를 교차 계정, 교차 리전으로 하나의 화면에서 조감도처럼 보여줍니다. 허니콤(벌집) 시각화가 vCPU 용량 대비 DB Load를 기준으로 인스턴스를 상태별(High, Warning, Ok, Idle)로 분류합니다. 태그(환경, 서비스, 팀)로 필터링하고 사용자 정의 플릿 뷰를 저장할 수 있습니다. 상위 10개 차트에서 가장 부하가 높은 인스턴스, 해당 상위 쿼리, 상위 대기 이벤트를 한눈에 확인할 수 있습니다.
수백 개의 데이터베이스를 담당하면서 어떤 데이터베이스에 주의가 필요한지 빠르게 식별해야 할 때, 바로 여기서 시작하면 됩니다.
DB Load 분석 (조사 워크벤치)
인스턴스 대시보드의 DB Load Analysis 탭은 문제 해결 시 가장 많은 시간을 보내는 곳입니다. 다음 다섯 가지 질문에 답합니다:
- 무엇(WHAT) — SQL로 분할하여 어떤 쿼리가 부하를 발생시키는지 확인합니다.
- 누가(WHO) — 사용자 또는 애플리케이션으로 분할 하여 담당 주체를 식별합니다.
- 어디서(WHERE) — 호스트로 분할하여 소스 머신을 찾습니다.
- 언제(WHEN) — 타임라인에서 문제가 정확히 언제 시작되고 끝났는지 확인합니다.
- 왜(WHY) — 발견 사항을 연관시키고 조치를 취합니다.
Top SQL 테이블은 부하 기여도 순으로 쿼리를 순위화하고, 초당 호출 수, 평균 지연 시간, 검사된 행 수, 플랜 수를 표시합니다.
잠금 분석
Aurora PostgreSQL 및 RDS for PostgreSQL에서 사용할 수 있습니다. Database Insights는 15초마다 잠금 스냅샷을 캡처하고 이를 잠금 트리로 시각화합니다. 부모 노드는 차단 세션이고, 자식 노드는 대기 세션입니다. 차단 SQL, 지속 시간, 하위에 영향을 받는 세션 수를 확인할 수 있습니다. DB Load 차트에서 "Sliced by: Blocking SQL" 옵션을 선택하면 시간 경과에 따라 어떤 SQL 문이 잠금 경합을 유발하는지 볼 수 있습니다.
실행 계획 분석
Aurora PostgreSQL(v14.10+, v15.5+), RDS for Oracle, RDS for SQL Server에서 사용할 수 있습니다. Top SQL 테이블의 Plans Count 열은 각 쿼리에 대해 몇 개의 서로 다른 실행 계획이 존재하는지 보여줍니다. 플랜을 나란히 비교하여 플랜 변경이 성능 저하를 유발한 시점을 식별할 수 있습니다. 플랜 수가 높으면 옵티마이저가 불안정하다는 신호입니다.
데이터베이스 텔레메트리
다음을 포함하는 통합 탭입니다:
- 메트릭 — CloudWatch, OS, 엔진 카운터 메트릭의 사용자 정의 가능한 대시보드.
- 로그 — CloudWatch Logs로 내보낸 데이터베이스 로그를 인라인으로 조회.
- OS 프로세스 — Enhanced Monitoring에서 제공하는 프로세스별 CPU/메모리 정보.
- 느린 SQL 쿼리 — 패턴별로 그룹화되고 빈도순으로 정렬된 느린 쿼리.
- 이벤트 — RDS 운영 이벤트(장애 조치, 유지 보수, 구성 변경).
호출 서비스 (CloudWatch Application Signals 통합)
이 APM(Application Performance Monitoring) 통합은 어떤 업스트림 마이크로서비스가 데이터베이스를 호출하고 있는지를 가용성, 지연 시간, 오류율, 요청량과 함께 보여줍니다. "데이터베이스가 느리다"와 "이 특정 서비스와 함수가 원인이다" 사이의 간극을 메웁니다.