본 기사는 AWS 지원 자동화 워크플로우(Support Automation Workflow)의 "AWSSupport-TroubleshootWindowsPerformance" 런북을 통해 EC2 Windows 인스턴스에서 발생되고 있는 성능 이슈를 진단하고 해결할 수 있도록 그 사용 방법을 설명합니다.
개요
EC2 Windows 인스턴스의 성능에 영향을 줄 수 있는 요소에는 여러 가지가 있습니다. 특히 그 중에서도 높은 CPU 또는 메모리 사용량으로 인해 이러한 이슈가 발생될 수 있는데, 일반적으로 이러한 이슈를 진단하기 위해서는 Windows OS 레벨에서 성능 로그를 수집하고 분석해야 합니다.
그리고 경우에 따라서는 높은 리소스 사용량을 나타내는 프로세스에 대해 보다 상세한 분석이 요구될 수도 있습니다.
이러한 경우 AWS Support로 지원 케이스를 생성하여 관련 성능 로그 수집 방법을 문의하고 문제 해결을 시도할 수 있지만, AWS 지원 자동화 워크플로우(Support Automation Workflow) 런북을 이용하면 AWS Support의 도움 없이 직접 빠르게 로그를 수집하고 진단하여 이슈를 해결할 수도 있습니다.
"AWSSupport-TroubleshootWindowsPerformance" 런북은 대상 인스턴스에서 CPU, 메모리, 디스크 및 네트워크 성능 지표 수집하고 분석하여 인사이트를 제공합니다. 그리고 지정하는 옵션에 따라 자동화를 통해 CPU 또는 메모리 사용량이 가장 많은 프로세스의 메모리 덤프를 캡처하여 해당 프로세스로 인해 발생되는 성능 저하의 잠재적 원인을 파악하는데 사용할 수 있도록 합니다.
또한, 이 런북은 지정하는 옵션에 따라 자동화를 통해 최신 버전의 EC2Rescue 툴을 대상 인스턴스에 설치하고 이를 사용하여 이벤트 및 시스템 로그를 캡쳐할 수 있습니다.
"AWSSupport-TroubleshootWindowsPerformance" 런북은 사용자를 대신하여 다음과 같은 작업을 수행합니다.
● 대상 인스턴스에서 사전 요구 사항을 확인합니다.
● 대상 인스턴스의 루트 볼륨에 성능 로그를 생성합니다.
● 대상 인스턴스의 "C:\ProgramData\Amazon\SSM\TroubleshootWindowsPerformance" 경로에 캡쳐한 로그를 저장합니다.
● 런북 실행 과정에서 필요한 권한이 포함된 IAM 역할 및 Amazon S3 버킷이 지정된 경우, 캡처된 로그를 해당 S3 버킷에 업로드 합니다.
● 런북 실행 과정에서 EC2Rescue 설치가 지정된 경우 대상 인스턴스에 최신 EC2Rescue 툴을 설치하고 시스템 로그를 캡쳐합니다.
참고 #1: EC2Rescue 툴은 시스템 로그를 캡쳐하지만 이에 대한 분석 및 인사이트를 제공하지는 않습니다. 또한 수집하는 프로세스 덤프에 대해서도 자동화가 분석을 진행하지는 않습니다.
참고 #2: 성능 데이터 및 프로세스 덤프 등의 저장이 필요하기 때문에 루트 볼륨의 가용한 공간에 대한 사전 요구 사항이 있습니다. 참고절 [1]에 자세히 설명하고 있으니 참고해 주세요.
다음은 AWS 지원 자동화 워크플로우에서 제공되는 "AWSSupport-TroubleshootWindowsPerformance" 런북을 통해 EC2 Windows 인스턴스에서 발생되고 있는 성능 이슈에 대한 Windows OS 레벨 성능 데이터를 빠르게 수집하고 진단에 도움을 받을 수 있는 방법에 대해 설명합니다.
- 성능 이슈가 발생되고 있어 진단이 필요한 EC2 Windows 인스턴스의 ID를 확인합니다.
- AWS Systems Manager 콘솔로 이동하여 왼쪽 네비게이션에서 자동화(Automation)을 선택합니다.
- 오른쪽의 자동화 실행(Execute automation) 버튼을 클릭합니다.
- 중앙의 자동화 런북에서 "TroubleshootWindowsPerformance" 키워드를 입력하여 검색하고 결과에 표시된 "AWSSupport-TroubleshootWindowsPerformance" 런북을 선택한 뒤 하단에서 다음(Next)를 클릭합니다.
또는 이 링크 클릭하시면 바로 해당 페이지로 연결됩니다.

- 기본적으로 단순 실행(Simple execution)으로 선택됩니다. 입력 파라미터 섹션에서 필요한 정보를 입력합니다. 예는 다음과 같습니다.
● InstanceId : 본 자동화 런북을 실행할 대상 인스턴스를 지정합니다.
● AutomationAssumeRole : 드롭다운 목록에서 이 자동화 런북을 실행하는 IAM 역할을 선택합니다. IAM 역할이 지정되지 않은 경우, 자동화는 이 런북을 실행하는 사용자의 권한을 사용합니다.
● CaptureProcessDump : 본 자동화 런북은 성능 이슈에 영향을 주는 프로세스의 덤프를 수집할 수 있습니다. CPU 또는 메모리 사용량이 가장 많은 프로세스의 덤프를 수집하도록 지정할 수 있습니다.
● LogCaptureDuration : 성능 이슈가 발생되고 있는 동안 본 자동화를 통해 성능 데이터를 수집할 시간의 양을 지정합니다. 1~ 15분까지 지정할 수 있으며 기본은 5분입니다.
● LogUploadBucketName : 수집된 로그를 업로드할 Amazon S3 버킷의 이름을 지정합니다.
● InstallEC2RescueTool : YES를 선택할 경우 본 자동화 런북이 대상 인스턴스에 최신 EC2Rescue 툴을 설치하고 시스템 로그를 수집합니다. 기본 값은 NO 입니다.
● Acknowledgement : 본 자동화 런북이 수행하는 작업에 대한 동의 여부를 입력합니다. 동의 하는 경우 "Yes, I understand and acknowledge"를 입력합니다.

- 하단에 실행(Execute)를 클릭합니다.
- 런북이 실행되는 동안 위에서 설명한 작업이 자동으로 진행됩니다.
- 런북이 성공적으로 실행 완료되면, 그 결과(Output)을 통해 성능 관련 진단 내용 및 로그 수집 이력을 확인하실 수 있습니다. 아래는 그 예시를 보여 드립니다.


대상 인스턴스가 사전 조건을 만족하지 않을 경우 다음과 같이 자동화 실행이 실패되며 그 결과에 표시됩니다.

만약, 위와 같이 AWS 지원 자동화 워크플로우 (Support Automation Workflow) 런북을 진행하였음에도 불구하고 이슈 해결이 어렵거나 보다 전문적인 도움이 필요한 경우, 위와 같이 실행한 런북 실행 ID 및 실행 결과 등의 정보와 함께 AWS Premium Support에 도움을 요청해 주시길 바랍니다.
참고 :
[1] https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/awssupport-troubleshoot-windows-performance.html