OS 모니터링 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

OS 모니터링

Amazon RDS for MySQL 또는 MariaDB에서 DB 인스턴스는 CPU, 메모리, 네트워크 및 스토리지와 같은 기본 시스템 리소스를 사용하는 Linux 운영 체제에서 실행됩니다.

MySQL [(none)]> SHOW variables LIKE 'version%'; +-------------------------+---------------------+ | Variable_name | Value | +-------------------------+---------------------+ | version | 8.0.28 | | version_comment | Source distribution | | version_compile_machine | aarch64 | | version_compile_os | Linux | | version_compile_zlib | 1.2.11 | +-------------------------+---------------------+ 5 rows in set (0.00 sec)

데이터베이스와 기본 운영 체제의 전반적인 성능은 시스템 리소스의 사용률에 따라 크게 달라집니다. 예를 들어 CPU는 데이터베이스 소프트웨어 명령을 실행하고 다른 시스템 리소스를 관리하기 때문에 시스템 성능의 핵심 구성 요소입니다. CPU가 과도하게 사용되는 경우(즉, 로드에 DB 인스턴스에 프로비저닝된 것보다 더 많은 CPU 성능이 필요한 경우) 이 문제는 데이터베이스는 물론, 결과적으로 애플리케이션의 성능 및 안정성에도 영향을 줍니다.

데이터베이스 엔진은 메모리를 동적으로 할당하고 해제합니다. RAM에서 현재 작업을 수행할 메모리가 부족한 경우 시스템은 디스크에 상주하는 스왑 메모리에 메모리 페이지를 씁니다. 디스크가 메모리보다 훨씬 느리기 때문에 디스크가 SSD NVMe 기술을 기반으로 하더라도 메모리를 과도하게 할당하면 성능이 저하됩니다. 메모리 사용률이 높으면 추가 메모리를 지원하기 위해 페이지 파일의 크기가 증가하므로 데이터베이스 응답의 지연 시간이 증가합니다. 메모리 할당이 너무 높아 RAM과 스왑 메모리 공간이 모두 고갈되는 경우 데이터베이스 서비스를 사용할 수 없게 되고 사용자 측에서 오류(예: [ERROR] mysqld: Out of memory (Needed xyz bytes))가 발생할 수 있습니다.

MySQL 및 MariaDB 데이터베이스 관리 시스템은 테이블, 인덱스, 바이너리 로그, 다시 실행 로그, 실행 취소 로그, 이중 쓰기 버퍼 파일과 같은 온디스크 구조를 저장하는 디스크로 구성된 스토리지 하위 시스템을 활용합니다. 따라서 데이터베이스는 다른 유형의 소프트웨어와 달리 많은 디스크 활동을 수행해야 합니다. 데이터베이스의 최적 작동을 위해 디스크 I/O 사용률과 디스크 공간 할당을 모니터링하고 조정하는 것이 중요합니다. 데이터베이스가 디스크에서 지원하는 최대 IOPS 또는 처리량 제한 사항에 도달하면 데이터베이스 성능이 영향을 받을 수 있습니다. 예를 들어 인덱스 스캔으로 인한 무작위 액세스 버스트 때문에 초당 많은 I/O 작업이 발생하여 결국 기본 스토리지의 제한 사항에 도달할 수 있습니다. 전체 테이블 스캔은 IOPS 제한에 도달하지 않을 수 있지만 초당 메가바이트 단위로 측정되는 높은 처리량을 초래할 수 있습니다. OS error code 28: No space left on device와 같은 오류로 인해 데이터베이스가 사용 불가능해지고 손상될 수 있으므로 디스크 공간 할당에 대한 알림을 모니터링하고 생성하는 것이 중요합니다.

Amazon RDS는 DB 인스턴스가 실행되는 운영 체제(OS)에 대한 지표를 실시간으로 제공합니다. Amazon RDS는 한 세트의 OS 지표를 CloudWatch에 자동으로 게시합니다. 이러한 지표는 Amazon RDS 콘솔 및 CloudWatch 대시보드에서 표시 및 분석에 사용할 수 있으며, CloudWatch에서 선택한 지표에 대한 경보를 설정할 수 있습니다. 그러한 예는 다음과 같습니다.

  • CPUUtilization - CPU 사용률.

  • BinLogDiskUsage - 바이너리 로그가 점유하는 디스크 공간의 양.

  • FreeableMemory - 사용 가능한 RAM 크기. 이는 /proc/meminfoMemAvailable 필드 값을 나타냅니다.

  • ReadIOPS - 초당 평균 디스크 읽기 I/O 작업 수.

  • WriteThroughput - 로컬 스토리지에서 디스크에 쓴 초당 평균 바이트 수.

  • NetworkTransmitThroughput - 모니터링 및 복제에 사용되는 데이터베이스 트래픽과 Amazon RDS 트래픽을 모두 결합하는 DB 노드의 발신 네트워크 트래픽.

Amazon RDS에서 CloudWatch에 게시하는 모든 지표에 대한 전체 참조는 Amazon RDS 설명서의 Amazon RDS에 대한 Amazon CloudWatch 지표를 참조하세요.

다음 차트에서는 Amazon RDS 콘솔에 표시되는 Amazon RDS에 대한 CloudWatch 지표 예제를 보여줍니다.

Amazon RDS 콘솔에 표시되는 Amazon RDS에 대한 CloudWatch 지표

다음 차트에서는 CloudWatch 대시보드에 표시되는 유사한 지표를 보여줍니다.

CloudWatch 콘솔에 표시되는 Amazon RDS에 대한 CloudWatch 지표

다른 OS 지표 세트는 Amazon RDS에 대한 향상된 모니터링에 의해 수집됩니다. 이 도구를 사용하면 실시간 시스템 지표 및 OS 프로세스 정보를 제공하여 Amazon RDS for MariaDB 및 Amazon RDS for MySQL DB 인스턴스 상태를 심층적으로 파악할 수 있습니다. DB 인스턴스에서 향상된 모니터링을 활성화하고 원하는 세부 수준을 설정하면 이 도구에서 운영 체제 지표 및 프로세스 정보를 수집하고, 다음 화면에 표시된 대로 Amazon RDS 콘솔에 이를 표시하고 분석할 수 있습니다.

향상된 모니터링에 의해 수집된 OS 지표

다음은 향상된 모니터링에 의해 제공된 몇 가지 주요 지표입니다.

  • cpuUtilization.total - 사용 중인 총 CPU 비율.

  • cpuUtilization.user - 사용자 프로그램에서 사용 중인 CPU 비율.

  • memory.active - 할당된 메모리 양(KB).

  • memory.cached - 파일 시스템 기반 I/O를 캐시하는 데 사용된 메모리의 양.

  • loadAverageMinute.one - 마지막 1분 동안 CPU 시간을 요청한 프로세스 수.

지표의 전체 목록은 Amazon RDS 설명서의 향상된 모니터링의 OS 지표를 참조하세요.

Amazon RDS 콘솔에서 OS 프로세스 목록은 DB 인스턴스에서 실행 중인 각 프로세스에 대한 세부 정보를 제공합니다. 목록은 다음과 같은 세 개의 섹션으로 구성됩니다.

  • OS 프로세스 ‒ 이 섹션은 모든 커널 및 시스템 프로세스에 대한 집계된 요약을 나타냅니다. 이러한 프로세스는 일반적으로 데이터베이스 성능에 미치는 영향을 최소화합니다.

  • RDS 프로세스 - 이 섹션은 Amazon RDS DB 인스턴스를 지원하는 데 필요한 AWS 프로세스의 요약을 나타냅니다. 예를 들어 Amazon RDS 관리 에이전트, 모니터링 및 진단 프로세스, 유사한 프로세스가 여기에 포함됩니다.

  • RDS 하위 프로세스 - 이 섹션은 DB 인스턴스를 지원하는 Amazon RDS 프로세스의 요약을 나타냅니다. 이 경우 mysqld 프로세스와 스레드가 이에 해당합니다. mysqld 스레드는 상위 mysqld 프로세스 아래에 중첩되어 표시됩니다.

다음 화면 그림에서는 Amazon RDS 콘솔의 OS 프로세스 목록을 보여줍니다.

Amazon RDS 콘솔의 OS 프로세스 목록

Amazon RDS는 지표를 향상된 모니터링에서 CloudWatch Logs 계정으로 전달합니다. Amazon RDS 콘솔에 표시되는 모니터링 데이터는 CloudWatch Logs에서 검색됩니다. CloudWatch Logs에서 로그 스트림으로 DB 인스턴스에 대한 지표를 검색할 수도 있습니다. 이러한 지표는 JSON 형식으로 저장됩니다. 또한 선택한 모니터링 시스템에서 CloudWatch Logs의 Enhanced Monitoring JSON 출력을 사용할 수 있습니다.

CloudWatch 대시보드에 그래프를 표시하고 지표가 정의된 임계치를 위반하는 경우 작업을 시작하는 경보를 생성하려면 CloudWatch Logs로부터 CloudWatch에서 지표 필터를 생성해야 합니다. 자세한 지침은 향상된 모니터링 CloudWatch Logs를 필터링하여 Amazon RDS에 대한 자동화된 사용자 지정 지표를 생성하는 방법에 관한 AWS re:Post 문서를 참조하세요.

다음 예제에서는 Custom/RDS 네임스페이스의 사용자 지정 지표 CPU.User를 보여줍니다. 이 사용자 지정 지표는 CloudWatch Logs에서 cpuUtilization.user 향상된 모니터링 지표를 필터링하여 생성됩니다.

CPU.User 사용자 지정 지표

CloudWatch 리포지토리에서 지표를 사용할 수 있는 경우 CloudWatch 대시보드에서 해당 지표를 표시 및 분석하고, 추가로 수학 및 쿼리 작업을 적용하며, 이 특정 지표를 모니터링하도록 경보를 설정하고, 관찰된 값이 정의된 경보 조건과 일치하지 않는 경우 알림을 생성할 수 있습니다.