Amazon DevOps Guru for Amazon RDS로 성능 이상 분석
Amazon DevOps Guru는 개발자와 운영자가 애플리케이션의 성능과 가용성을 개선하는 데 도움이 되는 완전관리형 운영 서비스입니다. DevOps Guru는 운영 문제 식별과 관련된 작업을 오프로드하므로 애플리케이션을 개선하기 위한 권장 사항을 신속하게 구현할 수 있습니다. 자세한 내용은 Amazon DevOps Guru 사용 설명서의 Amazon DevOps Guru란 무엇인가요?를 참조하세요.
DevOps Guru는 모든 Amazon RDS DB 엔진의 기존 운영 문제를 감지, 분석 및 권장 사항을 제시합니다. DevOps Guru for RDS는 RDS for PostgreSQL 데이터베이스의 성능 개선 도우미 지표에 기계 학습을 적용하여 이 기능을 확장합니다. 이러한 모니터링 기능을 통해 DevOps Guru for RDS는 성능 병목 현상을 감지 및 진단하고 특정 시정 조치를 권장할 수 있습니다. DevOps Guru for RDS는 RDS for PostgreSQL 데이터베이스에서 문제가 발생하기 전에 문제를 감지할 수 있습니다.
이제 RDS 콘솔에서 이러한 권장 사항을 확인할 수 있습니다. 자세한 내용은 Amazon RDS의 권장 사항 단원을 참조하십시오.
다음 동영상은 RDS용 DevOps 전문가 개요입니다.
이 주제에 관해 자세히 알아보려면 내부에 있는 RDS용 Amazon DevOps Guru.
DevOps Guru for RDS의 이점
RDS for PostgreSQL 데이터베이스를 담당하는 경우 해당 데이터베이스에 영향을 미치는 이벤트 또는 회귀가 발생하고 있는 것을 알지 못할 수 있습니다. 이 문제에 대해 알아볼 때, 문제가 발생하는 이유나 어떻게 대응해야 할 지 모를 수도 있습니다. 데이터베이스 관리자(DBA)에게 도움을 요청하거나 타사 도구에 의존하는 대신 DevOps Guru for RDS의 권장 사항을 따를 수 있습니다.
DevOps Guru for RDS의 세부 분석을 통해 다음과 같은 이점을 얻을 수 있습니다.
- 빠른 진단
-
RDS용 DevOps Guru는 데이터베이스 원격 분석을 지속적으로 모니터링하고 분석합니다. 성능 개선 도우미, 향상된 모니터링 및 Amazon CloudWatch는 데이터베이스 인스턴스에 대한 원격 분석 데이터를 수집합니다. DevOps Guru for RDS는 통계 및 기계 학습 기술을 사용하여 이 데이터를 마이닝하고 이상을 감지합니다. 원격 측정 데이터에 대한 자세한 내용은 Amazon RDS 사용 설명서에서성능 개선 도우미를 통한 Amazon RDS 모니터링 및 Enhanced Monitoring을 사용하여 OS 지표 모니터링을 참조하세요.
- 빠른 해결
-
각 이상 현상은 성능 문제를 식별하고 조사 또는 수정 작업 방법을 제안합니다. 예를 들어 RDS용 DevOps Guru는 특정 대기 이벤트를 조사하도록 권장할 수 있습니다. 또는 애플리케이션 풀 설정을 조정하여 데이터베이스 연결 수를 제한하도록 권장할 수도 있습니다. 이러한 권장 사항을 기반으로 수동으로 문제를 해결하는 것보다 성능 문제를 더 빨리 해결할 수 있습니다.
- 사전 예방 인사이트
-
DevOps Guru for RDS는 리소스의 지표를 사용하여 문제가 더 커지기 전에 잠재적으로 문제가 될 수 있는 동작을 탐지합니다. 예를 들어 데이터베이스에서 점점 더 많은 수의 온디스크 임시 테이블을 사용하여 성능에 영향을 미치기 시작할 가능성이 있는 경우, 이를 탐지할 수 있습니다. 그런 다음 DevOps Guru는 문제가 더 커지기 전에 문제를 해결하는 데 도움이 되는 권장 사항을 제공합니다.
- Amazon 엔지니어의 깊이 있는 지식과 기계 학습
-
성능 문제를 감지하고 병목 현상을 해결하기 위해 DevOps Guru for RDS는 기계 학습(ML)과 고급 수학 공식을 사용합니다. Amazon 데이터베이스 엔지니어들은 수년간 수십만 개의 데이터베이스를 관리한 결과를 캡슐화하는 DevOps Guru for RDS의 개발에 기여했습니다. 이러한 집단 지식을 바탕으로 DevOps Guru for RDS를 통해 모범 사례를 가르칠 수 있습니다.
DevOps Guru for RDS 작동 방식
DevOps Guru for RDS는 Amazon RDS 성능 개선 도우미로부터 RDS for PostgreSQL 데이터베이스에 대한 데이터를 수집합니다. 가장 중요한 지표는 DBLoad
입니다. DevOps Guru for RDS는 성능 개선 도우미 지표를 사용하고, 기계 학습을 통해 분석하며, 대시보드에 인사이트를 게시합니다.
인사이트는 DevOps Guru가 탐지한 관련 이상의 모음입니다.
DevOps Guru for RDS에서, 이상은 RDS for PostgreSQL 데이터베이스의 정상적인 성능으로 간주되는 것과 다른 패턴입니다.
사전 예방 인사이트
사전 예방 인사이트를 통해 문제가 발생하기 전에 문제를 일으킬 수 있는 행동을 파악할 수 있습니다. 여기에는 RDS for PostgreSQL 데이터베이스에서 더 큰 문제가 발생하기 전에 문제를 해결하는 데 도움이 되는 권장 사항 및 관련 지표가 포함된 이상 항목이 포함되어 있습니다. 이러한 인사이트는 DevOps Guru 대시보드에 게시됩니다.
예를 들어 DevOps Guru는 RDS for PostgreSQL 데이터베이스에서 많은 온디스크 임시 테이블을 생성하고 있음을 감지할 수 있습니다. 이러한 추세를 해결하지 않으면 성능 문제가 발생할 수 있습니다. 각 사전 예방 인사이트에는 수정 조치에 대한 권장 사항 및 Amazon DevOps Guru의 사전 예방 인사이트를 활용하여 RDS for PostgreSQL 튜닝의 관련 주제에 대한 링크가 포함되어 있습니다. 자세한 내용은 Amazon DevOps Guru 사용 설명서의 DevOps Guru의 인사이트 활용을 참조하세요.
사후 대응 인사이트
사후 대응 인사이트는 비정상적인 동작이 발생하는 즉시 이를 식별합니다. DevOps Guru for RDS가 RDS for PostgreSQL DB 인스턴스에서 성능 문제를 발견하면 DevOps Guru 대시보드에 사후 대응 인사이트를 게시합니다. 자세한 내용은 Amazon DevOps Guru 사용 설명서의 DevOps Guru의 인사이트 활용을 참조하세요.
일반적인 이상
캐주얼 이상 항목은 사후 대응 인사이트 내에서 최상위 이상 항목입니다. 데이터베이스 로드(DB 로드)는 RDS용 DevOps 전문가의 인과 관계적 이상입니다.
이상은 심각도의 높음, 중간, 또는 낮음 수준을 할당하여 성능에 미치는 영향을 측정합니다. 자세한 내용은 Amazon DevOps Guru 사용 설명서의 DevOps Guru for RDS의 주요 개념을 참조하세요.
DevOps Guru가 DB 인스턴스에서 진행 중인 이상 현상을 감지하면, RDS 콘솔의 데이터베이스(Databases) 페이지에 알림이 표시됩니다. 또한 콘솔은 지난 24시간 동안 발생한 이상 현상을 알려줍니다. RDS 콘솔에서 이상 페이지로 이동하려면 경고 메시지에서 링크를 선택합니다. 또한 RDS 콘솔은 RDS for PostgreSQL DB 인스턴스의 페이지에 알림을 표시합니다.
문맥적 이상
컨텍스트 이상 항목은 데이터베이스 로드(DB 로드) 내의 결과로, 사후 대응 인사이트와 관련이 있습니다. 각 문맥적 이상은 조사가 필요한 특정 RDS for PostgreSQL 성능 문제를 설명합니다. 예를 들어 DevOps Guru for RDS는 CPU 용량을 늘리거나 DB 로드에 기여하는 대기 이벤트를 조사할 것을 권장할 수 있습니다.
중요
프로덕션 인스턴스를 변경하기 전에 테스트 인스턴스에서 변경 사항을 테스트하는 것이 좋습니다. 이러한 방식으로 변경의 영향을 이해하게 됩니다.
자세한 내용은 Amazon DevOps Guru 사용 설명서의 Amazon RDS의 이상 현상 분석을 참조하세요.
DevOps Guru for RDS 설정
DevOps Guru for Amazon RDS가 a RDS for PostgreSQL 데이터베이스에 대한 인사이트를 게시할 수 있도록 하려면 다음 태스크를 완료합니다.
주제
DevOps Guru for RDS에 사용되는 IAM 액세스 정책 구성
RDS 콘솔에서 DevOps Guru의 알림을 보려면 AWS Identity and Access Management(IAM) 사용자 또는 역할에 다음 정책 중 하나가 있어야 합니다.
-
AWS 관리형 정책
AmazonDevOpsGuruConsoleFullAccess
-
AWS 관리형 정책
AmazonDevOpsGuruConsoleReadOnlyAccess
및 다음 정책 중 하나:-
AWS 관리형 정책
AmazonRDSFullAccess
-
pi:GetResourceMetrics
및pi:DescribeDimensionKeys
를 포함하는 고객 관리형 정책
-
자세한 내용은 Performance Insights에 대한 액세스 정책 구성 단원을 참조하십시오.
RDS for PostgreSQL DB 인스턴스의 성능 개선 도우미 활성화
DevOps Guru for RDS는 데이터를 위해 성능 개선 도우미를 사용합니다. 성능 개선 도우미가 없으면 DevOps Guru는 이상을 게시하지만 자세한 분석 및 권장 사항은 포함하지 않습니다.
RDS for PostgreSQL DB 인스턴스를 생성하거나 수정할 때 성능 개선 도우미를 활성화할 수 있습니다. 자세한 내용은 Amazon RDS의 성능 개선 도우미 설정 및 해제 단원을 참조하십시오.
DevOps Guru 활성화 및 리소스 적용 범위 지정
다음 방법 중 하나로 RDS for PostgreSQL 데이터베이스를 모니터링하도록 DevOps Guru를 활성화할 수 있습니다.
주제
RDS 콘솔에서 DevOps Guru 활성화
Amazon RDS 콘솔에서 여러 경로를 사용하여 DevOps Guru를 활성화할 수 있습니다.
주제
RDS for PostgreSQL 데이터베이스를 생성할 때 DevOps Guru 활성화
생성 워크플로에는 데이터베이스에 대한 DevOps Guru 적용 범위를 활성화하는 설정이 포함되어 있습니다. 이 설정은 프로덕션(Production) 템플릿을 선택할 때 기본적으로 지정됩니다.
RDS for PostgreSQL 데이터베이스를 생성할 때 DevOps Guru를 활성화하려면
https://console.aws.amazon.com/rds/
에서 AWS Management Console에 로그인한 후 Amazon RDS 콘솔을 엽니다. -
모니터링 설정을 선택하는 단계를 제외하고 DB 인스턴스 생성에 나와 있는 단계를 최대한 수행합니다.
-
모니터링(Monitoring)에서 성능 개선 도우미 활성화(Turn on Performance Insights)를 선택합니다. DevOps Guru for RDS가 성능 이상에 대한 자세한 분석을 제공하려면 성능 개선 도우미를 활성화해야 합니다.
-
DevOps Guru 활성화(Turn on DevOps Guru)를 선택합니다.
-
DevOps Guru가 모니터링할 수 있도록 데이터베이스에 대한 태그를 생성합니다. 다음을 따릅니다.
-
태그 키(Tag key) 텍스트 필드에서
Devops-Guru-
로 시작하는 이름을 입력합니다. -
태그 값(Tag value) 텍스트 필드에서 원하는 값을 입력합니다. 예를 들어, RDS for PostgreSQL 데이터베이스의 이름에
rds-database-1
을 입력하는 경우rds-database-1
을 태그 값으로 입력할 수도 있습니다.
태그에 대한 자세한 내용은 Amazon DevOps Guru 사용 설명서의 '태그를 사용하여 DevOps Guru 애플리케이션에서 리소스 식별'을 참조하세요.
-
-
DB 인스턴스 생성에 설명된 나머지 단계를 완료합니다.
알림 배너에서 DevOps Guru 활성화
리소스가 DevOps Guru에 포함되지 않는 경우 Amazon RDS에서 다음 위치에 배너를 사용하여 알립니다.
-
DB 클러스터 인스턴스의 모니터링(Monitoring) 탭
-
성능 개선 도우미 대시보드
RDS for PostgreSQL 데이터베이스에 대해 DevOps Guru를 활성화하려면
-
배너에서 DevOps Guru for RDS 활성화를 선택합니다.
-
태그 키 이름 및 값을 입력합니다. 태그에 대한 자세한 내용은 Amazon DevOps Guru 사용 설명서의 '태그를 사용하여 DevOps Guru 애플리케이션에서 리소스 식별'을 참조하세요.
-
DevOps Guru 활성화를 선택합니다.
DevOps Guru를 활성화할 때 권한 오류에 응답
데이터베이스를 생성할 때 RDS 콘솔에서 DevOps Guru를 활성화하면 RDS에 권한 누락에 대해 다음 배너가 표시될 수 있습니다.
권한 오류에 응답하려면
-
IAM 사용자 또는 역할에 사용자 관리형 역할
AmazonDevOpsGuruConsoleFullAccess
를 부여합니다. 자세한 내용은 DevOps Guru for RDS에 사용되는 IAM 액세스 정책 구성 단원을 참조하십시오. -
RDS 콘솔을 엽니다.
-
탐색 창에서 성능 개선 도우미를 선택합니다.
-
방금 생성한 클러스터에서 DB 인스턴스를 선택합니다.
-
스위치를 선택해 DevOps Guru for RDS 기능을 켭니다.
-
태그 값을 선택합니다. 자세한 내용은 Amazon DevOps Guru 사용 설명서의 '태그를 사용하여 DevOps Guru 애플리케이션에서 리소스 식별'을 참조하세요.
-
DevOps Guru 활성화를 선택합니다.
DevOps Guru 콘솔에 RDS for PostgreSQL 리소스 추가
DevOps Guru 콘솔에서 DevOps Guru 리소스 적용 범위를 지정할 수 있습니다. Amazon DevOps Guru 사용 설명서의 DevOps Guru 리소스 적용 범위 지정에 나와 있는 단계를 따릅니다. 분석된 리소스를 편집할 때 다음 옵션 중 하나를 선택합니다.
-
모든 계정 리소스를 선택하여 AWS 계정 및 리전에서 RDS for PostgreSQL 데이터베이스를 포함하여 지원되는 모든 리소스를 분석합니다.
-
CloudFormation 스택을 선택하여 지정한 스택에 있는 RDS for PostgreSQL 데이터베이스를 분석합니다. 자세한 내용은 Amazon DevOps Guru 사용 설명서의 AWS CloudFormation 스택을 사용하여 DevOps Guru 애플리케이션에서 리소스 식별을 참조하세요.
-
태그를 선택하여 태그를 지정한 RDS for PostgreSQL 데이터베이스를 분석합니다. 자세한 내용은 Amazon DevOps Guru 사용 설명서의 태그를 사용하여 DevOps Guru 애플리케이션에서 리소스 식별을 참조하세요.
자세한 내용은 Amazon DevOps Guru 사용 설명서의 DevOps Guru 활성화를 참조하세요.
AWS CloudFormation을 사용하여 RDS for PostgreSQL 리소스 추가
태그를 사용하여 RDS for PostgreSQL 리소스 적용 범위를 CloudFormation 템플릿에 추가할 수 있습니다. 다음 절차에서는 RDS for PostgreSQL DB 인스턴스와 DevOps Guru 스택 모두에 대한 CloudFormation 템플릿이 있다고 가정합니다.
CloudFormation 태그를 사용하여 RDS for PostgreSQL DB 인스턴스를 지정하는 방법
-
DB 인스턴스용 CloudFormation 템플릿에서 키/값 쌍을 사용하여 태그를 정의합니다.
다음 예제에서는 RDS for PostgreSQL DB 인스턴스용
Devops-guru-cfn-default
에my-db-instance1
값을 할당합니다.MyDBInstance1: Type: "AWS::RDS::DBInstance" Properties: DBInstanceIdentifier: my-db-instance1 Tags: - Key: Devops-guru-cfn-default Value: devopsguru-my-db-instance1
-
DevOps Guru 스택용 CloudFormation 템플릿에서 리소스 컬렉션 필터에 동일한 태그를 지정합니다.
다음 예제에서는
my-db-instance1
태그 값을 사용하여 리소스에 대한 적용 범위를 제공하도록 DevOps Guru를 구성합니다.DevOpsGuruResourceCollection: Type: AWS::DevOpsGuru::ResourceCollection Properties: ResourceCollectionFilter: Tags: - AppBoundaryKey: "Devops-guru-cfn-default" TagValues: - "devopsguru-my-db-instance1"
다음 예제는 애플리케이션
Devops-guru-cfn-default
경계 내의 모든 리소스에 대한 적용 범위를 제공합니다.DevOpsGuruResourceCollection: Type: AWS::DevOpsGuru::ResourceCollection Properties: ResourceCollectionFilter: Tags: - AppBoundaryKey: "Devops-guru-cfn-default" TagValues: - "*"
자세한 내용은 AWS CloudFormation 사용 설명서의 AWS::DevOpsGuru::ResourceCollection과 AWS::RDS::DBInstance를 참조하세요.