AWS 기술 블로그
AWS Support Automation Workflows (SAW)를 사용하여 Systems Manager에서 관리형 노드 문제 해결하기
이 글은 AWS re:Post에 게시된 ‘Troubleshooting managed node issues in Systems Manager with SAW by Toshihiro‘ 을 기반으로 한국어로 번역 및 신기능과 관련된 사항을 최신화하였습니다.
소개
AWS Support 엔지니어들은 종종 AWS Systems Manager에서 관리형 노드로 등록되지 않은 Amazon Elastic Compute Cloud (Amazon EC2) 인스턴스와 관련된 문제를 보고하는 고객들을 접하게 됩니다. 이러한 문제를 해결하기 위해 보안 그룹, 네트워크 설정 및 권한을 확인하는 데는 많은 시간이 소요됩니다.
AWS Support Engineering 팀은 AWS 리소스와 관련된 일반적인 문제의 문제 해결, 진단 및 복구를 위해 SAW를 만들었습니다. SAW 프레임워크는 일반적인 수동 작업을 제거하여 문제 해결에 소요되는 시간을 줄이는 데 도움이 됩니다.
이 문서에서는 SAW를 사용하여 문제 해결 프로세스를 자동화하는 방법에 대해 설명합니다. 또한 Systems Manager에서 관리형 노드 문제를 모니터링하고 자동으로 분석하도록 SAW를 사용하여 아키텍처를 구성하는 방법에 대해서도 알아봅니다.
솔루션 개요
이 솔루션의 첫 번째 부분에서는 SAW 런북을 사용하여 Systems Manager에서 관리형 노드로 등록되지 않는 EC2 인스턴스 관련 문제를 해결하는 방법에 대한 정보를 제공합니다. 두 번째 부분에서는 이런 문제 해결 프로세스를 자동화하고 문제 해결을 가속화하기 위한 아키텍처를 구성하는 방법을 보여줍니다.
1부 – SAW로 근본 원인 파악하기
Systems Manager가 Amazon EC2의 관리형 인스턴스를 표시하지 않는 이유를 확인하려면 다음 단계를 수행하세요.
- AWSSupport-TroubleshootManagedInstance 런북을 사용합니다. 자세한 내용은 내 EC2 인스턴스가 관리형 노드로 표시되지 않거나 Systems Manager에서 ‘연결 끊김’ 상태로 표시되는 이유는 무엇인가요? 를 확인합니다.
- 자동화가 완료되면 출력(Outputs) 섹션에서 자세한 결과 내용을 검토합니다.
예를 들어 AWS Identity and Access Management (IAM) 인스턴스 프로파일에 필요한 권한이 없기 때문에 문제가 발생한 경우, 출력 섹션에 다음과 같은 세부 정보가 표시됩니다.
- 결과 내용에서 확인한 문제를 수정합니다.
예를 들어, 앞에서 소개된 문제를 해결하려면 IAM 인스턴스 프로파일에 필요한 권한을 추가해야 합니다. 그런 다음 Systems Manager에서 해당 EC2 인스턴스가 관리형 노드로 등록되어 있는지 확인합니다. 이렇게 하려면 AWS Command Line Interface (AWS CLI) 명령 describe-instance-information 을 실행합니다.
앞의 명령에서 example-instance를 해당 EC2 인스턴스의 인스턴스 ID로 바꿉니다.
참고: AWS CLI 명령을 실행할 때 오류가 발생하면 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요. 명령이 성공적으로 실행되어 인스턴스의 세부 정보가 검색되면, Systems Manager에서 해당 인스턴스가 관리형 노드로 표시됩니다.
2부 – SAW로 문제 탐지 자동화하기
SAW를 사용하여 Systems Manager 관리형 노드에서 문제를 자동으로 감지하고 근본 원인을 파악하도록 아키텍처를 구성할 수 있습니다.
다음 사전 요구 사항을 충족하는지 확인하세요.
- 로컬 개발 워크스테이션에 AWS SAM CLI를 설치 및 구성합니다.
- 알림 설정을 활성화합니다.
다음 방법 중 하나로 알림 설정을 활성화할 수 있습니다.
- 직접 만든 Amazon Simple Notification Service(Amazon SNS) 주제에 사용자의 이메일 주소를 등록합니다.
- 웹훅을 사용하여 Slack에서 워크플로를 구축하여 알림 설정을 활성화합니다.
웹후크를 사용하여 Slack에서 워크플로를 구축하는 경우 다음 단계를 완료하여 사용자 지정 변수를 설정하세요.
- 앱이나 서비스가 웹 요청을 보낼 때 시작(Starts when an app or service sends a web request) 옆의 편집(Edit)을 선택합니다.
- 변수 설정(Set up variables)아래에서 변수 추가(Add variable)를 선택합니다.
- 키(Key)에 main을 입력합니다. 데이터 유형(Data type)에 text를 입력합니다. 그런 다음 저장(Save)을 선택합니다.
- 변수 추가를 선택합니다.
- 키에 thread를 입력합니다. 데이터 유형에 text를 입력합니다. 그런 다음 저장을 선택합니다.
- 이 메시지를 받는 곳(Send this message to)옆의 편집을 선택합니다. 메시지 보내기(Send a message) 페이지에서 이 메시지를 받는 곳; 에 대해 알림을 수신할 Slack 채널을 선택합니다. 그런 다음 변수 삽입(Insert a variable)을 선택합니다. 메시지 텍스트(Message text)에서 메인(main)을 선택합니다. 그런 다음 저장을 선택합니다.
- 이 메시지를 받는 곳 옆의 편집을 선택합니다. 메시지 보내기 페이지에서 이 메시지를 받는 곳; 에 대해 메시지 스레드(Message thread)를 선택합니다. 그런 다음 변수 삽입을 선택합니다. 메시지 텍스트에서 스레드(thread)를 선택합니다.
예시의 샘플 코드를 보려면 GitHub 웹사이트에서 AWS SAW Monitoring And Automatic Analysis Architecture를 참조하세요.
다음 다이어그램은 제안하는 솔루션의 상위 수준 아키텍처를 보여줍니다.
이 아키텍처에는 다음과 같은 구성 요소가 포함되어 있습니다.
모니터링: Amazon EventBridge는 EC2 인스턴스의 시작을 감지합니다. EventBridge에서 이벤트 패턴이 EC2 인스턴스의 실행중(Running) 상태와 일치하면 AWS Step Functions 상태 머신이 시작됩니다.
EC2 인스턴스를 시작한 후 Systems Manager 에이전트를 시작하는 데 최대 5분까지 걸릴 수 있습니다. 이 때문에 상태 머신은 분석을 수행하기 전에 몇 분 동안 대기합니다.
분석: Step Functions는 다음 단계를 따릅니다.
- EC2 인스턴스가 관리형 노드로 등록되지 않은 경우 SAW 런북 AWSSupport-TroubleshootManagedInstance을 실행합니다.
- SAW 분석이 완료되었는지 확인하기 위해 정기적으로 DescribeAutomationExecutions API를 호출합니다.
- SAW 분석이 완료된 후 AWS Lambda 함수를 호출합니다.
알림: Lambda는 알림을 위해 문자열을 형식화합니다. 그런 다음 구성에 따라 Slack 또는 이메일을 통해 알림을 보냅니다.
솔루션 절차 안내
이 섹션에서는 SAW를 이용하고 관리형 노드 문제를 자동으로 감지하기 위한 해결 방안의 절차를 다룹니다. 예시의 샘플 코드를 보려면 GitHub 웹사이트에서 aws-samples를 참조하세요.
- 다음 명령을 실행하여 AWS Secrets Manager에서 SlackWebHookUrl을 등록합니다.
- 해당 리포지토리를 로컬 개발 워크스테이션에 복제합니다.
- AWS SAM 템플릿yaml에 정의된 Lambda 함수, EventBridge 규칙, Step Functions 상태 머신 및 관련 IAM 역할을 빌드하고 배포합니다.
참고: 배포 마법사(deployment wizard)에서 Amazon SNS 주제의 ARN, Secrets Manager의 SECRET_NAME 또는 둘 모두를 파라미터로 입력합니다. AWS Key Management System(AWS KMS)으로 SNS 주제을 암호화한 경우에는 AWS KMS 키의 ARN을 파라미터로 지정합니다.
- 아키텍처를 테스트합니다. 우선 Systems Manager 권한이 없는 IAM 역할을 인스턴스 프로필로 사용하여 EC2 인스턴스를 시작합니다. Systems Manager는 권한이 없기 때문에 이 EC2 인스턴스를 관리형 노드로 등록할 수 없습니다.
- 아래 이미지와 같이 사용자의 구성에 따라 SAW 분석 결과를 Slack 또는 이메일로 받았는지 확인합니다. 이 예시에서는 IAM 인스턴스 프로필의 권한 부족으로 인해 문제가 발생했음을 보여줍니다. 문제를 해결하려면 분석 결과에 표시되는 문서 링크를 참조하세요.
정리
이 솔루션을 위해 생성한 리소스를 정리하려면 다음 단계를 완료합니다.
- 이솔루션을 위해 시작한 EC2 인스턴스를 종료합니다.
- Secrets Manager에서 생성한 시크릿을 삭제합니다.
- 생성된 리소스를 모두 제거하려면하려면 AWS SAM CLI를 통해 $ sam delete를 실행함으로써 AWS CloudFormation 스택을 제거합니다.
결론
이 문서에서는 SAW를 사용하여 Systems Manager가 관리형 노드로 등록하지 못하는 EC2 인스턴스 관련 문제를 해결하는 방법을 알아보았습니다. 이 문서에서 소개한 예시 아키텍처를 사용하여 EC2 인스턴스를 모니터링하고 해당 인스턴스가 제대로 등록되지 않은 경우 SAW 런북을 자동으로 호출할 수 있습니다. 이렇게 하면 인프라에 대한 가시성을 확보하고 사전에 문제를 해결하는 데 도움이 됩니다.
이 문서에서 논의된 방법은 자동화된 문제 감지 및 해결을 통해 Systems Manager에서 EC2 인스턴스에 대한 정확한 현황을 파악하는 데 도움이 될 수 있습니다.
자세한 내용은 AWS Support 셀프 서비스 런북 사용 및 AWS Support Automation Workflow(SAW)를 참조하세요.
AWS Support 엔지니어와 Technical Account Manager(TAM)가 일반적인 가이드라인, 모범 사례, 문제 해결 및 AWS 운영 지원에 대해 도움을 드릴 수 있습니다. 플랜 및 서비스에 대한 자세한 내용은 AWS Support를 참조하세요.