Server관련/AWS

AWS의 RDS 모니터링 방법

saltdoll 2017. 2. 23. 03:29
반응형


출처: http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/CHAP_Monitoring.html


Amazon RDS 모니터링

모니터링은 Amazon RDS 및 AWS 솔루션의 안정성, 가용성 및 성능을 유지하는 데 있어서 중요한 부분입니다. 발생하는 다중 지점 실패를 보다 쉽게 디버깅할 수 있도록 AWS 솔루션의 모든 부분으로부터 모니터링 데이터를 수집해야 합니다. Amazon RDS 모니터링을 시작하기 전에 다음 질문에 대한 답변을 포함하는 모니터링 계획을 작성하는 것이 좋습니다.

  • 모니터링의 목표

  • 모니터링할 리소스

  • 이러한 리소스를 모니터링하는 빈도

  • 사용할 모니터링 도구

  • 모니터링 작업을 수행할 사람

  • 문제 발생 시 알려야 할 대상

다음 단계에서는 다양한 시간과 다양한 부하 조건에서 성능을 측정하여 환경에서 일반 Amazon RDS 성능의 기준선을 설정합니다. Amazon RDS을 모니터링할 때 과거 모니터링 데이터를 저장할 것을 고려해야 합니다. 이 저장된 데이터는 현재 성능 데이터와 비교하고, 일반 성능 패턴과 성능 이상을 식별하고, 문제 해결 방법을 제안하는 기준이 됩니다.

예를 들어 Amazon RDS에서 네트워크 처리량, 읽기, 쓰기 및/또는 메타데이터 작업에 대한 I/O, 클라이언트 연결, DB 인스턴스에 대한 버스트 크레딧 밸런스 등을 모니터링할 수 있습니다. 성능이 설정된 기준을 벗어날 경우 워크로드에 대한 데이터베이스 가용성을 최적화하기 위해 클라이언트에 사용 가능한 DB 인스턴스 및 읽기 전용 복제본의 수 또는 DB 인스턴스의 인스턴스 클래스를 변경해야 할 수 있습니다.

일반적으로 성능 지표에 허용되는 값은 기준이 무엇인지 그리고 애플리케이션 무엇을 수행하는지에 따라 다릅니다. 기준과의 일관된 차이 또는 추세를 조사하십시오. 특정 지표 유형에 대한 참고 정보는 다음과 같습니다.

  • CPU 또는 RAM 사용량이 많음 – CPU 또는 RAM 사용량이 많을 경우 해당 애플리케이션의 목표와 일치하고 예상되는 결과라면 문제가 되지 않을 수 있습니다.

  • 디스크 공간 사용량 – 총 디스크 용량의 85퍼센트 이상이 계속 사용될 경우 디스크 공간 사용량을 검사합니다. 인스턴스에서 데이터를 삭제할 수 있는지 또는 다른 시스템에 데이터를 아카이브하여 공간을 확보할 수 있는지 확인합니다.

  • 네트워크 트래픽 – 네트워크 트래픽의 경우 시스템 관리자에게 문의하여 해당 도메인 네트워크 및 인터넷 연결의 기대 처리량을 확인합니다. 처리량이 기대값보다 항상 낮으면 네트워크 트래픽을 검사합니다.

  • 데이터베이스 연결 – 인스턴스 성능 저하 및 응답 시간 지연과 함께 사용자 연결 수가 많을 경우 데이터베이스 연결 제한을 고려해 봅니다. DB 인스턴스에 대한 최적의 사용자 연결 수는 해당 인스턴스 클래스와, 수행하는 작업의 복잡성에 따라 다릅니다. DB 인스턴스를 User Connections 파라미터가 0(무제한)이 아닌 다른 값으로 설정된 파라미터 그룹과 연결하여 데이터베이스 연결 수를 지정할 수 있습니다. 기존 파라미터 그룹을 사용하거나 새로 하나 만들 수 있습니다. 자세한 내용은 DB 파라미터 그룹 작업을(를) 참조하십시오.

  • IOPS 지표 – IOPS 지표의 기대값은 디스크 사양 및 서버 구성에 따라 다르므로 해당 기준에 일반적인 값을 파악합니다. 값이 기준과 계속 차이가 나는지 검사합니다. 최적의 IOPS 성능을 위해, 일반적인 작업 세트가 메모리에 적합하고 읽기 및 쓰기 작업을 최소화하는지 확인합니다.

모니터링 도구

AWS는 Amazon RDS을 모니터링하는 데 사용할 수 있는 다양한 도구를 제공합니다. 이들 도구 중에는 모니터링을 자동으로 수행하도록 구성할 수 있는 도구도 있지만, 수동 작업이 필요한 도구도 있습니다. 모니터링 작업을 최대한 자동화하는 것이 좋습니다.

자동 모니터링 도구

다음과 같은 자동 모니터링 도구를 사용하여 Amazon RDS를 관찰하고 문제 발생 시 보고할 수 있습니다.

  • Amazon CloudWatch Alarms – 지정하는 기간 동안 단일 지표를 관찰하고 특정 기간 동안 지정된 임계값을 기준으로 지표의 값에 따라 하나 이상의 작업을 수행합니다. 이 작업은 Amazon Simple Notification Service(Amazon SNS) 주제나 Auto Scaling 정책으로 전송되는 알림입니다. CloudWatch 경보는 특정 상태가 되었다고 해서 작업을 호출하지는 않습니다. 이러한 상태가 변경되어야 하고 지정한 기간 동안 유지되어야 합니다. 자세한 내용은 Amazon CloudWatch를 사용하여 모니터링 단원을 참조하십시오.

  • Amazon CloudWatch Logs – AWS CloudTrail 또는 기타 소스의 로그 파일을 모니터링, 저장 및 액세스합니다. 자세한 내용은 Amazon CloudWatch 사용 설명서의 로그 파일 모니터링을 참조하십시오.

    Amazon RDS Enhanced Monitoring은 DB 인스턴스 또는 DB 클러스터가 실행되는 운영 체제에 대한 측정치를 실시간으로 제공합니다. 자세한 내용은 Enhanced Monitoring을(를) 참조하십시오.

  • Amazon CloudWatch Events – 이벤트를 매칭하고 하나 이상의 대상 함수 또는 스트림으로 라우팅하여 값을 변경하거나 상태 정보를 캡처하거나 교정 조치를 취합니다. 자세한 내용은 Amazon CloudWatch 사용 설명서의 Using Events 단원을 참조하십시오.

  • AWS CloudTrail Log Monitoring – 계정 간에 로그 파일을 공유하고, CloudTrail 로그 파일을 CloudWatch Logs에 전송하여 실시간으로 모니터링하며, 로그 처리 애플리케이션을 Java로 작성하고, 로그 파일이 CloudTrail 전송 후 변경되지 않았는지 확인합니다. 자세한 내용은 AWS CloudTrail User Guide의 CloudTrail 로그 파일 작업을 참조하십시오.

    Amazon RDS에서 AWS CloudTrail 로그 모니터링을 사용하는 방법에 대한 자세한 내용은 AWS CloudTrail을 사용한 Amazon RDS API 호출 로깅을(를) 참조하십시오.

  • Amazon RDS 이벤트 – DB 인스턴스, DB 클러스터, DB 스냅샷, DB 클러스터 스냅샷, DB 파라미터 그룹 또는 DB 보안 그룹에 변경 사항이 있을 경우 알려주는 Amazon RDS 이벤트에 가입합니다. 자세한 내용은 Amazon RDS 이벤트 알림 서비스 사용을(를) 참조하십시오.

  • 데이터베이스 로그 파일 – Amazon RDS 콘솔 또는 Amazon RDS API를 사용해 데이터베이스 로그 파일을 보거나, 다운로드하거나, 모니터링합니다. 또한 데이터베이스 테이블에 로드된 데이터베이스 로그 파일 중 일부에 쿼리를 요청할 수도 있습니다. 자세한 내용은 Amazon RDS 데이터베이스 로그 파일을(를) 참조하십시오.

수동 모니터링 도구

Amazon RDS 모니터링의 또 한 가지 중요한 부분은 CloudWatch 경보에 포함되지 않는 항목을 수동으로 모니터링해야 한다는 점입니다. Amazon RDS, CloudWatch 및 다른 AWS 콘솔 대시보드에서는 AWS 환경의 상태를 한 눈에 파악할 수 있습니다. 또한 DB instance에서 로그 파일을 확인하는 것이 좋습니다.

  • Amazon RDS 콘솔에서 리소스에 대해 다음과 같은 몇 가지 항목을 모니터링할 수 있습니다.

    • DB 인스턴스에 대한 연결 수

    • DB 인스턴스에 대한 읽기 및 쓰기 작업량

    • DB 인스턴스에서 현재 사용 중인 스토리지의 양

    • DB 인스턴스에 대해 사용 중인 메모리 및 CPU 양

    • DB 인스턴스에서 주고 받는 네트워크 트래픽 양

  • CloudWatch 홈 페이지에 표시되는 항목은 다음과 같습니다.

    • 현재 경보 및 상태

    • 경보 및 리소스 그래프

    • 서비스 상태

    또한 CloudWatch를 사용하여 다음 작업을 수행할 수도 있습니다.

    • 사용자 정의 대시보드를 만들어 원하는 서비스 모니터링

    • 지표 데이터를 그래프로 작성하여 문제를 해결하고 추세 파악

    • 모든 AWS 리소스 지표 검색 및 찾아보기

    • 문제에 대해 알려주는 경보 생성 및 편집

Amazon CloudWatch를 사용하여 모니터링

Amazon RDS에서 원시 데이터를 수집하여 읽기 가능하며 실시간에 가까운 지표로 처리하는 CloudWatch를 통해 DB instance를 모니터링할 수 있습니다. 이러한 통계는 2주간 기록되므로 기록 정보를 보고 웹 애플리케이션이나 서비스가 어떻게 실행되고 있는지 전체적으로 더 잘 파악할 수 있습니다. Amazon RDS 지표 데이터는 기본적으로 1분 동안 Amazon CloudWatch에 자동 전송됩니다. Amazon CloudWatch에 대한 자세한 내용은 What Are Amazon CloudWatch, Amazon CloudWatch Events, and Amazon CloudWatch Logs?(출처: Amazon CloudWatch 사용 설명서)을(를) 참조하십시오.

Amazon RDS 지표 및 차원

Amazon RDS 리소스를 사용할 때 Amazon RDS에서는 1분마다 지표 및 차원을 Amazon CloudWatch에 보냅니다. 다음 절차에 따라 Amazon RDS에 대한 지표를 볼 수 있습니다.

Amazon CloudWatch 콘솔을 사용하여 지표를 보려면

지표는 먼저 서비스 네임스페이스별로 그룹화된 다음, 각 네임스페이스 내에서 다양한 차원 조합별로 그룹화됩니다.

  1. https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

  2. 필요한 경우 지역을 변경합니다. 탐색 모음에서 AWS 리소스가 상주하는 리전을 선택합니다. 자세한 내용은 지역 및 Endpoint 을(를) 참조하십시오.

  3. 탐색 창에서 [Metrics]를 선택합니다. RDS 측정치 네임스페이스를 선택합니다.

    측정치 네임스페이스 선택
  4. 측정치 차원(예: 데이터베이스 클래스별)을 선택합니다.

    측정치 차원 선택
  5. 측정치를 정렬하려면 열 머리글을 사용합니다. 측정치를 그래프로 표시하려면 측정치 옆에 있는 확인란을 선택합니다. 리소스로 필터링하려면 리소스 ID를 선택한 후 [Add to search]를 선택합니다. 측정치로 필터링하려면 측정치 이름을 선택한 후 [Add to search]를 선택합니다.

    측정치 필터링

AWS CLI를 사용하여 지표를 보려면

  • 명령 프롬프트에서 다음 명령을 사용합니다.

    aws cloudwatch list-metrics --namespace AWS/RDS

Amazon RDS 측정치

Amazon Relational Database Service에서 사용할 수 있는 측정치는 다음과 같습니다.

지표설명
BinLogDiskUsage

마스터에서 이진 로그가 차지하는 디스크 공간 크기. MySQL 읽기 전용 복제본에 적용.

단위: 바이트

CPUUtilization

CPU 사용 백분율.

단위: 백분율

CPUCreditUsage

(T2 인스턴스에만 유효) 지정된 기간 동안 소비한 CPU 크레딧 수입니다.

이 측정치는 인스턴스에 할당된 가상 CPU에서 처리 명령에 실제 CPU를 사용한 시간을 식별합니다.

Note

CPU 크레딧 측정치는 5분 간격으로 제공됩니다.

단위: 수

CPUCreditBalance

(T2 인스턴스에만 유효) 한 인스턴스가 모은 CPU 크레딧 수입니다.

이 측정치는 인스턴스가 지정된 속도로 기준 성능을 넘어 얼마나 오래 버스트할 수 있는지 결정하는 데 사용됩니다.

Note

CPU 크레딧 측정치는 5분 간격으로 제공됩니다.

단위: 수

DatabaseConnections

사용 중인 데이터베이스 연결 수.

단위: 수

DiskQueueDepth

디스크 액세스를 대기 중인 I/O(읽기/쓰기 요청) 수.

단위: 수

FreeableMemory

사용 가능한 RAM 크기.

단위: 바이트

FreeStorageSpace

사용 가능한 스토리지 공간 크기.

단위: 바이트

ReplicaLag

소스 DB 인스턴스를 기준으로 읽기 전용 복제본 DB 인스턴스의 지연 시간. MySQL, MariaDB 및 PostgreSQL 읽기 전용 복제본에 적용.

단위: 초

SwapUsage

DB 인스턴스에서 사용된 스왑 공간 크기.

단위: 바이트

ReadIOPS

초당 평균 디스크 I/O 연산 수.

단위: 카운트/초

WriteIOPS

초당 평균 디스크 I/O 연산 수.

단위: 카운트/초

ReadLatency

디스크 I/O 연산당 평균 처리 시간.

단위: 초

WriteLatency

디스크 I/O 연산당 평균 처리 시간.

단위: 초

ReadThroughput

초당 디스크에서 읽은 평균 바이트 수.

단위: 바이트/초

WriteThroughput

초당 디스크에 쓴 평균 바이트 수.

단위: 바이트/초

NetworkReceiveThroughput

DB 인스턴스 수신 네트워크 트래픽(고객 데이터베이스 트래픽과 모니터링 및 복제에 사용된 Amazon RDS 트래픽을 모두 포함).

단위: 바이트/초

NetworkTransmitThroughput

DB 인스턴스 송신 네트워크 트래픽(고객 데이터베이스 트래픽과 모니터링 및 복제에 사용된 Amazon RDS 트래픽을 모두 포함).

단위: 바이트/초

Amazon RDS 차원

다음 표의 차원을 사용하여 Amazon RDS 지표 데이터를 필터링할 수 있습니다.

차원

설명

DBInstanceIdentifier

이 차원은 특정 DB 인스턴스에 대해 요청하는 데이터를 필터링합니다.

DBClusterIdentifier

이 차원은 특정 Amazon Aurora DB 클러스터에 대해 요청하는 데이터를 필터링합니다.

DBClusterIdentifier, Role

이 차원은 인스턴스 역할(WRITER/READER)별로 측정치를 집계하여 특정 Amazon Aurora DB 클러스터에 대해 요청하는 데이터를 필터링합니다. 예를 들어 클러스터에 속하는 모든 READER 인스턴스에 대한 측정치를 집계할 수 있습니다.

DatabaseClass

이 차원은 특정 데이터베이스 클래스의 모든 인스턴스에 대해 요청하는 데이터를 필터링합니다. 예를 들어 데이터베이스 클래스 db.m1.small에 속하는 모든 인스턴스에 대한 측정치를 집계할 수 있습니다.

EngineName

이 차원은 식별된 엔진 이름에 대해 요청하는 데이터만 필터링합니다. 예를 들어 엔진 이름이 mysql인 모든 인스턴스에 대한 측정치를 집계할 수 있습니다.

Amazon RDS 모니터링을 위한 CloudWatch 경보 만들기

경보가 상태를 변경하면 Amazon SNS 메시지를 보내는 CloudWatch 경보를 만들 수 있습니다. 경보는 지정한 기간에 단일 메트릭을 감시하고 여러 기간에 지정된 임계값에 대한 메트릭 값을 기준으로 작업을 하나 이상 수행합니다. 이 작업은 Amazon SNS 주제나 Auto Scaling 정책으로 전송되는 알림입니다.

경보는 지속적인 상태 변경에 대해서만 작업을 호출합니다. CloudWatch 경보는 특정한 상태에 있으며 이러한 상태가 변경되어야 하며 지정한 수의 기간에 유지되어야 하므로 간단하게 작업을 호출하지 않습니다. 다음 절차에서는 Amazon RDS에 대한 경보를 만드는 방법을 간략하게 설명합니다.

CloudWatch 콘솔을 사용한 경보 설정

  1. AWS Management Console에 로그인한 다음 https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

  2. [Alarms]를 선택한 다음 [Create Alarm]을 선택합니다. 그러면 [Create Alarm Wizard]가 시작됩니다.

  3. [RDS Metrics]를 선택하고 Amazon RDS 지표를 스크롤하여 경보를 배치할 지표를 찾습니다. 이 대화 상자에서 Amazon RDS 지표를 표시하려면 리소스의 식별자를 검색합니다. 지표를 선택하여 경보를 생성한 다음 [Next]를 선택합니다.

  4. 지표에 대한 [Name], [Description], [Whenever] 값을 입력합니다.

  5. 경보 상태에 도달하면 CloudWatch에서 이메일을 보내도록 하려면 [Whenever this alarm:] 필드에서 [State is ALARM]을 선택합니다. [Send notification to:] 필드에서 기존 SNS 주제를 선택합니다. [Create topic]을 선택한 경우 새 이메일 구독 목록에 대한 이름 및 이메일 주소를 설정할 수 있습니다. 이 목록은 향후 경보를 위해 필드에 저장되고 표시됩니다.

    Note

    새 Amazon SNS 주제를 생성하기 위해 [Create topic]을 사용할 경우 이메일 주소는 알림을 받기 전에 검증되어야 합니다. 이메일은 경보가 경보 상태에 입력될 때만 전송됩니다. 이러한 경보 상태 변경이 이메일이 검증되기 전에 발생할 경우에는 알림을 받지 못합니다.

  6. 이제 [Alarm Preview] 영역에서 생성할 경보를 미리 볼 수 있습니다. [Create Alarm]을 선택합니다.

AWS CLI를 사용하여 경보를 설정하려면

CloudWatch API를 사용하여 경보를 설정하려면

DB 인스턴스 측정치 보기

Amazon RDS는 DB 인스턴스와 DB 클러스터의 상태를 모니터링할 수 있도록 측정치를 제공합니다. DB 인스턴스 측정치와 운영 체제(OS) 측정치를 모두 모니터링할 수 있습니다.

이 단원에서는 RDS 콘솔 및 CloudWatch를 사용하여 DB 인스턴스에 대한 지표를 확인하는 방법을 자세히 설명합니다. CloudWatch Logs을 사용하여 DB 인스턴스의 운영 체제에 대한 지표를 모니터링하는 방법에 대한 자세한 내용은 Enhanced Monitoring을(를) 참조하십시오.

콘솔을 사용하여 측정치 보기

DB 인스턴스에 대한 DB 및 OS 측정치를 보려면

  1. AWS Management Console에 로그인한 다음 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 [DB Instances]를 선택합니다.

  3. 정보가 필요한 DB 클러스터의 좌측에 있는 확인란을 선택합니다. [Show Monitoring]에서 측정치를 표시할 방법을 지정하는 옵션을 선택합니다.

    • [Show Multi-Graph View] – Amazon CloudWatch에서 제공되는 DB 인스턴스 측정치를 요약하여 표시합니다. 각 측정치에는 특정 시간대에서 측정치를 모니터링한 그래프도 포함되어 있습니다.

    • [Show Single Graph View] – 한 번에 하나씩 측정치를 자세히 표시합니다. 각 측정치에는 특정 시간대에서 측정치를 모니터링한 그래프도 포함되어 있습니다.

    • [Show Latest Metrics View] – 그래프 없이 DB 인스턴스 측정치를 요약하여 표시합니다. [Full Monitoring View]에는 전체 화면 보기 옵션도 있습니다.

    • [Enhanced Monitoring] – Enhanced Monitoring를 활성화한 상태로 DB 인스턴스에 대해 사용 가능한 OS 측정치를 요약하여 표시합니다. 각 측정치에는 특정 시간대에서 측정치를 모니터링한 그래프도 포함되어 있습니다.

    RDS 측정치 보기 옵션

    Tip

    그래프에 표시되는 측정치의 시간 범위를 선택하려면 [Time Range]를 사용합니다.

    그래프를 선택하여 그래프를 자세히 표시할 수 있습니다. 이 자세히 보기를 사용하여 측정치 데이터에 측정치별 필터를 적용할 수 있습니다.

    Enhanced Monitoring 대시보드에 대해서는 [Time Range]를 사용할 수 없습니다.

DB 인스턴스 측정치

Amazon RDS는 CloudWatch 측정치와 통합되어 다양한 DB 인스턴스 측정치를 제공합니다. CloudWatch 측정치는 RDS 콘솔, CLI 또는 API를 사용해 볼 수 있습니다.

전체 Amazon RDS 측정치 목록은 Amazon CloudWatch 사용 설명서의 Amazon RDS 차원 및 측정치에서 확인할 수 있습니다.

CloudWatch CLI를 사용하여 DB 측정치 보기

Note

다음 CLI 예제를 실행하려면 CloudWatch 명령줄 도구가 필요합니다. CloudWatch에 대한 자세한 내용을 보거나 개발자 도구를 다운로드하려면 Amazon CloudWatch 제품 페이지을(를) 참조하십시오. 이 예제에서 StartTime및 EndTime 값은 단지 설명을 돕기 위해 지정되었습니다. 따라서 DB 인스턴스의 올바른 시작 및 종료 시간 값으로 대체해야 합니다.

DB 인스턴스의 사용량 및 성능 통계를 보는 방법

  • 다음 파라미터와 함께 CloudWatch mon-get-stats 명령을 사용합니다.

    
    PROMPT>mon-get-stats FreeStorageSpace --dimensions="DBInstanceIdentifier=mydbinstance" --statistics= Average 
      --namespace="AWS/RDS" --start-time 2009-10-16T00:00:00 --end-time 2009-10-16T00:02:00
    					

CloudWatch API를 사용하여 DB 측정치 보기

이 예제에서 StartTime 및 EndTime 값은 단지 설명을 돕기 위해 지정되었습니다. 따라서 DB 인스턴스의 올바른 시작 및 종료 시간 값으로 대체해야 합니다.

DB 인스턴스의 사용량 및 성능 통계를 보는 방법

  • 다음 파라미터와 함께 CloudWatch API GetMetricStatistics를 호출합니다.

    • Statistics.member.1 = Average

    • Namespace = AWS/RDS

    • StartTime = 2009-10-16T00:00:00

    • EndTime = 2009-10-16T00:02:00

    • Period = 60

    • MeasureName = FreeStorageSpace

    Example

    
    http://monitoring.amazonaws.com/
    	?SignatureVersion=2
    	&Action=GetMetricStatistics
    	&Version=2009-05-15
    	&StartTime=2009-10-16T00:00:00
    	&EndTime=2009-10-16T00:02:00
    	&Period=60
    	&Statistics.member.1=Average
    	&Dimensions.member.1="DBInstanceIdentifier=mydbinstance"
    	&Namespace=AWS/RDS
    	&MeasureName=FreeStorageSpace						
    	&Timestamp=2009-10-15T17%3A48%3A21.746Z
    	&AWSAccessKeyId=<AWS Access Key ID>
    	&Signature=<Signature>
    						


반응형
도움이 되셨다면 하트모양의 "♡ 공감"을 눌러주시면 큰 격려가 됩니다.
(로그인하지 않으셔도 가능)