본 기사는 AWS 지원 자동화 워크플로우 (Support Automation Workflow)의 “AWSSupport-TroubleshootCloudWatchAgent” 런북을 사용하여 Amazon Cloudwatch Agent 문제를 해결하고 트러블슈팅을 위해 인스턴스에서 로그를 수집하는 방법에 대해 설명 합니다.
안내
본 “AWSSupport-TroubleshootCloudWatchAgent” 자동화 런북을 통해 기본 및 고급 검사를 진행하실 수 있습니다. 기본 및 고급 검사는 모두 Linux 그리고 Window 운영 체제와 호환되지만 Amazon EC2 인스턴스는 AWS Systems Manager에서 관리되어야 합니다.
개요
[기본 검사]
기본 검사는 다음과 같이 트러블슈팅을 진행합니다:
- 선택한 EC2 인스턴스에 연결된 IAM(Identity and Access Management) 인스턴스 프로파일을 확인합니다.
- 필요한 권한 및 정책이 IAM 인스턴스 프로파일에 적용 되었는지 검증합니다.
[고급 검사]
고급 검사는 기본 검사에서 다음과 같은 기능이 추가됩니다:
- EC2 인스턴스에서 Cloudwatch Agent 프로세스의 상태를 확인합니다.
- Cloudwatch Agent 로그에 오류가 있는지 분석하고, 문제를 해결하기 위한 가이드라인을 제공합니다.
- EC2 인스턴스에 저장된 Cloudwatch Agent 로그와 구성 파일을 압축합니다.
- EC2 인스턴스와 Cloudwatch 서비스 엔드포인트에 대한 연결 테스트를 수행합니다.
런북 자동화 실행 절차
- AWS Systems Manager 콘솔로 이동하여 왼편의 네비게이션 바에서 '공유 리소스 - 문서 (Document)' 메뉴를 선택합니다. 이후 진단 하려는 EC2 인스턴스가 있는 리전이 선택 되었는지 확인합니다.
- 검색창에서 "AWSSupport-TroubleshootCloudWatchAgent"를 입력한 후 검색된 런북을 클릭 합니다.
- 우측 상단 "Execute Automation (자동화 실행)" 버튼을 클릭합니다.
- 기본적으로 Simple execution으로 선택되어 있으며, 필요에 따라 다른 유형을 선택할 수 있습니다.
- Input Parameter에 대해 필요한 값들을 입력 후 우측 하단 Execute(실행)을 클릭 합니다.
- AutomationAssumeRole (선택사항): AWS IAM(Identity and Access Management) 역할의 Amazon Resource Name(ARN)을 의미합니다. 이 역할을 통해 System Manger 자동화가 사용자를 대신하여 작업을 수행할 수 있습니다.
- AutomationAssumeRole 파라미터는 다음과 같은 action을 요구할 수 있습니다:
* iam:SimulatePrincipalPolicy
* iam:GetContextKeysForPrincipalPolicy
* iam:GetInstanceProfile
* iam:ListAttachedRolePolicies
* iam:PassRole
* s3:GetBucketAcl
* s3:PutObject
* s3:GetBucketPolicyStatus
* s3:ListBucket
* ssm:GetAutomationExecution
* ssm:GetCommandInvocation
* ssm:DescribeInstanceInformation
* ec2:DescribeInstances
(AnalyzeAWSEndpointReachabilityFromEC2 단계 수행을 위해서는 IAM 사용자 또는 역할이 위 권한을 가지고 있는지 확인해주세요.)
- InstanceId (필수사항): Cloudwatch Agent가 설치된 EC2 인스턴스 ID 입니다.
- S3UploadBucket (선택사항): CloudWatch Agent 로그를 업로드할 Amazon S3 버킷 이름입니다. 이 버킷에 로그를 업로드하기 위해선 EC2 인스턴스 프로파일에 올바른 권한이 있어야 합니다. 또한 EC2 인스턴스는 Systems Manager가 관리하는 인스턴스여야 합니다.
- S3UploadBucket 파라미터를 통해 EC2 인스턴스에서 S3 버킷으로 로그 파일을 직접 업로드 할 수 있습니다. 생성된 zip 파일은 업로드 이후 삭제됩니다.
- S3BucketOwnerAccountId (선택사항): Cloudwatch Agent 로그를 업로드할 S3 버킷을 소유한 AWS 계정 번호입니다. 해당 파라미터를 지정하지 않으면 런북은 사용자의 AWS 계정 번호 또는 자동화 런북이 실행되는 사용자 역할을 사용합니다.
- CheckEC2Endpoint (선택사항): append_dimensions 옵션을 사용하여 EC2 지표 차원을 추가하시려면 해당 설정을 true로 지정합니다. Cloudwatch Agent는 EC2 엔드포인트에 대한 연결이 필요하며 추가 연결 테스트를 수행합니다. 기본값은 false 입니다.
- RunVpcReachabilityAnalyzer (선택사항): 추가 검사를 통해 네트워크 문제가 확인되거나, 관리되는 인스턴스 ID가 아닌 경우 AnalyzeAWSEndpointReachabilityFromEC2 자동화 단계를 수행할 수 있습니다. 기본값은 false 입니다.
- Cloudwatch Agent 구성 파일에서 append_dimensions 옵션을 사용하는 경우, 런북에서 CheckEC2Endpoint 파라미터를 true 로 설정하는 것을 권장 드립니다.
- 만약 RunVpcReachabilityAnalyzer 파라미터가 true로 설정되어 있고, 이 단계에서 엔드포인트 연결 실패가 감지되지 않으면 자동화 런북은 AnalyzeAWSEndpointReachabilityFromEC2 단계를 스킵하여 추가 비용이 발생하는 것을 방지합니다.
- AnalyzeAWSEndpointReachabilityFromEC2는 엔드포인트와의 연결 검사를 수행하지 않는 대신 Reachability Analyzer를 사용합니다.
- 이는 Transit Gateway 또는 피어링 연결과 같은 복잡한 라우팅 구성에서 엔드포인트와의 연결 테스트를 수행해야할 수도 있기 때문입니다.
- Reachability Analyzer 사용에는 비용이 발생하며 자세한 사항은 Amazon VPC Pricing에서 확인하실 수 있습니다.
- RetainVpcReachabilityAnalysis (선택사항): RunVpcReachabilityAnalyzer가 true인 경우에만 해당됩니다. VPC Reachability Analyzer에서 네트워크 경로와 연관된 분석을 진행하며, 분석 이후 자동으로 삭제됩니다. 분석 결과를 유지하도록 선택하면 VPC Console에서 이를 시각화할 수 있습니다. 기본 값은 false 입니다.
- 자동화 런북이 실행 완료되면 Status(상태)를 볼 수 있으며, Outputs(결과) 부분을 클릭하여 자세한 진단 결과와 발견된 각각의 에러에 대한 조치방법을 함께 확인할 수 있습니다.
AWS System Manager에서 제공하는 자동화 런북 “AWSSupport-TroubleshootCloudWatchAgent”를 사용하여 Amazon EC2 인스턴스에서 CloudWatch Agent 문제를 해결하는 방법을 알아보았습니다. 자동화 런북을 통해 엔드포인트 연결 문제에 대한 트러블슈팅을 지원할 수 있고, EC2 인스턴스에서 다른 네트워크 리소스의 아웃바운드 연결에 대한 검증을 진행할 수 있습니다.
위와 같이 AWS 지원 자동화 워크플로우 (Support Automation Workflow) 런북을 진행하여 나온 조치를 취한 이후에도 이슈가 해결되지 않거나 이슈 해결에 보다 전문적인 도움이 필요한 경우 위와 같이 앞서 실행한 런북 실행 ID 및 실행 결과 등의 정보를 포함하여 AWS Support 에 문의하여 도움을 요청해 주시길 바랍니다.