View a markdown version of this page

테스트 환경 생성 - AWS DevOps 에이전트

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

테스트 환경 생성

이 가이드에서는 샘플 아키텍처를 사용하여 AWS DevOps 에이전트의 인시던트 대응 기능을 검증하기 위한 실습 테스트를 제공합니다. 프로덕션 시스템을 연결하기 전에 DevOps 에이전트를 테스트하려면이 추가 기능을 사용합니다.

사전 조건

  • AWS 관리 액세스 권한이 있는 계정

  • AWS DevOps 에이전트 역할 자동 생성 흐름을 사용하여 생성 및 구성된 DevOps 에이전트 공간

비용 및 안전 개요

비용 보호

  • EC2 테스트: 2시간 동안 무료(AWS 프리 티어) 또는 ~$0.02

  • Lambda 테스트: 무료(1백만 요청/월 프리 티어)

  • CloudWatch: 무료(경보 10개, 기본 지표 포함)

  • 예상 총 비용: 전체 테스트의 경우 0.00~0.05 USD

이러한 테스트의 안전 기능

  • 자동 종료: 기본 제공 자동 종료

  • 프리 티어 적격: 가장 작은 인스턴스 유형 사용

  • 제한된 범위: 최소한의 격리된 테스트 리소스

  • 간편한 정리: 모든 것을 제거하는 간단한 콘솔 단계

  • 프로덕션 영향 없음: 완전히 분리된 테스트 환경

테스트용 AWS 계정 설정

중요

인프라 리소스는 DevOps Agent Space의 기본 클라우드 AWS 계정을 생성한 계정에 배포해야 합니다. 특정 리전은 중요하지 않습니다.

  1. AWS 콘솔에 로그인: https://console.aws.amazon.com

  2. DevOps 에이전트 스페이스가 위치한 동일한 AWS 계정에서 작업하고 있는지 확인합니다.

  3. 테스트 리소스에 모든 리전을 사용할 수 있습니다.

참고

DevOps 에이전트의 기본 계정과 생성 중인 테스트 환경 리소스 간의 1:1 매핑은 테스트 설정을 간소화합니다. DevOps 에이전트 공간을 쉽게 확장하여 보조 계정을 포함하고 교차 계정 조사를 활성화할 수 있습니다.

테스트 선택

테스트를 독립적으로 실행하거나 둘 다 함께 실행할 수 있습니다.

테스트 옵션 A: EC2 CPU 용량 테스트

용도: EC2 성능 문제를 감지하고 조사하는 Validate AWS DevOps 에이전트의 기능

예상 시간: 5분 설정 + 10분 자동 실행

난이도: 완전 자동화(수동 단계가 필요하지 않음)

테스트 옵션 B: Lambda 오류율 테스트

용도: Lambda 함수 오류를 감지하고 조사하는 Validate AWS DevOps 에이전트의 기능

예상 시간: 설정 10분 + 트리거 2분

난이도: 매우 쉬움

테스트 옵션 A: EC2 CPU 용량 테스트

1단계: EC2 테스트를 위한 CloudFormation 스택 배포

CloudFormation을 사용하여 테스트 리소스를 생성하여 AWS DevOps 에이전트가 리소스를 올바르게 추적하고 조사할 수 있도록 합니다.

  1. CloudFormation으로 이동합니다.

    1. AWS 콘솔에서 "CloudFormation"을 검색하고 CloudFormation을 클릭합니다.

    2. 스택 생성 > 새 리소스 사용(표준)을 클릭합니다.

  2. 템플릿 업로드:

    1. 라는 새 로컬 파일 생성AWS-DevOpsAgent-ec2-test.yaml

    2. 이 CloudFormation 템플릿을 복사하여 파일에 붙여 넣습니다.

      1. AWSTemplateFormatVersion: '2010-09-09' Description: 'AWS DevOps Agent EC2 CPU Test Stack' Parameters: MyIP: Type: String Description: Your current IP address for SSH access (find at https://whatismyipaddress.com) Default: '0.0.0.0/0' Resources: # Security Group for SSH access TestSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupName: AWS-DevOpsAgent-test-sg GroupDescription: AWS DevOps Agent beta testing security group SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: !Ref MyIP Description: SSH access from your IP Tags: - Key: Name Value: AWS-DevOpsAgent-Test-SG - Key: Purpose Value: AWS-DevOpsAgent-Testing # Key Pair for SSH access TestKeyPair: Type: AWS::EC2::KeyPair Properties: KeyName: AWS-DevOpsAgent-test-key KeyType: rsa Tags: - Key: Name Value: AWS-DevOpsAgent-Test-Key - Key: Purpose Value: AWS-DevOpsAgent-Testing # EC2 Instance for CPU testing TestInstance: Type: AWS::EC2::Instance Properties: InstanceType: t3.micro ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}' KeyName: !Ref TestKeyPair SecurityGroupIds: - !Ref TestSecurityGroup UserData: Fn::Base64: !Sub | #!/bin/bash yum update -y yum install -y htop # Create the CPU stress test script cat > /home/ec2-user/cpu-stress-test.sh << 'EOF' #!/bin/bash echo "Starting AWS DevOpsAgent CPU Stress Test" echo "Time: $(date)" echo "Instance: $(curl -s http://169.254.169.254/latest/meta-data/instance-id)" echo "" # Get number of CPU cores CORES=$(nproc) echo "CPU Cores: $CORES" echo "" echo "Starting stress test (5 minutes)..." echo "This will generate >70% CPU usage to trigger CloudWatch alarm" echo "" # Create CPU load using yes command echo "Starting CPU load processes..." for i in $(seq 1 $CORES); do (yes > /dev/null) & CPU_PID=$! echo "Started CPU load process $i (PID: $CPU_PID)" echo $CPU_PID >> /tmp/cpu_test_pids done # Auto-cleanup after 5 minutes (sleep 300 && echo "Stopping CPU load processes..." && kill $(cat /tmp/cpu_test_pids 2>/dev/null) 2>/dev/null && rm -f /tmp/cpu_test_pids) & echo "" echo "CPU load processes started for 5 minutes" echo "Check CloudWatch for alarm trigger in 3-5 minutes" EOF chmod +x /home/ec2-user/cpu-stress-test.sh chown ec2-user:ec2-user /home/ec2-user/cpu-stress-test.sh # Create auto-shutdown script (safety mechanism) cat > /home/ec2-user/auto-shutdown.sh << 'SHUTDOWN_EOF' #!/bin/bash echo "Auto-shutdown scheduled for 2 hours from now: $(date)" sleep 7200 echo "Auto-shutdown executing at: $(date)" sudo shutdown -h now SHUTDOWN_EOF chmod +x /home/ec2-user/auto-shutdown.sh nohup /home/ec2-user/auto-shutdown.sh > /home/ec2-user/auto-shutdown.log 2>&1 & echo "AWS DevOpsAgent test setup completed at $(date)" > /home/ec2-user/setup-complete.txt Tags: - Key: Name Value: AWS-DevOpsAgent-Test-Instance - Key: Purpose Value: AWS-DevOpsAgent-Testing # CloudWatch Alarm for CPU utilization CPUAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmName: AWS-DevOpsAgent-EC2-CPU-Test AlarmDescription: AWS-DevOpsAgent beta test - EC2 CPU utilization alarm MetricName: CPUUtilization Namespace: AWS/EC2 Statistic: Average Period: 60 EvaluationPeriods: 1 Threshold: 70 ComparisonOperator: GreaterThanThreshold Dimensions: - Name: InstanceId Value: !Ref TestInstance TreatMissingData: notBreaching Outputs: InstanceId: Description: EC2 Instance ID for testing Value: !Ref TestInstance SecurityGroupId: Description: Security Group ID Value: !Ref TestSecurityGroup AlarmName: Description: CloudWatch Alarm Name Value: !Ref CPUAlarm SSHCommand: Description: SSH command to connect to instance Value: !Sub 'ssh -i "AWS-DevOpsAgent-test-key.pem" ec2-user@${TestInstance.PublicDnsName}'
    3. CloudFormation 콘솔에서 템플릿 파일 업로드를 선택합니다.

    4. 파일 선택을 클릭합니다.

    5. AWS-DevOpsAgent-ec2-test.yaml 파일 선택

    6. 다음을 클릭합니다.

  3. 스택 구성:

    1. 스택 이름:AWS-DevOpsAgent-EC2-Test

    2. 파라미터:

      1. MyIP: 기본값으로 둡니다0.0.0.0/0(필요한 경우 나중에 보호할 수 있음).

    3. 다음을 클릭합니다.

  4. 스택 옵션 구성:

    1. 기본값을 그대로 두고 다음을 클릭합니다.

  5. 검토 및 생성

    1. AWS CloudFormation에서 IAM 리소스를 생성할 수 있음을 확인합니다.

    2. 제출을 클릭합니다.

  6. 완료될 때까지 기다립니다.

    1. 스택 생성에는 3~5분이 소요됩니다.

    2. 상태가에서 CREATE_IN_PROGRESS로 변경됩니다.CREATE_COMPLETE

    3. 중요: 이제 EC2 인스턴스가 AWS DevOpsAgent가 추적할 수 있는 CloudFormation 스택의 일부입니다!

선택 사항: SSH 액세스 보호(인스턴스에 연결하려는 경우에만 해당)

자동 테스트를 실행하려는 경우이 단계를 건너뜁니다.

  1. EC2 보안 그룹으로 이동합니다.

    1. AWS 콘솔에서 EC2보안 그룹으로 이동합니다.

    2. 찾기AWS-DevOpsAgent-test-sg

  2. SSH 규칙 업데이트:

    1. 보안 그룹 선택 → 인바운드 규칙 탭 → 인바운드 규칙 편집

    2. SSH 규칙 찾기(포트 22)

    3. 소스를에서 IP0.0.0.0/0로 변경합니다.[YOUR_IP]/32

    4. https://whatismyipaddress.com IP 가져오기

    5. 규칙 저장을 클릭합니다.

2단계: 자동 테스트 실행 대기

  1. 자동 테스트 실행:

    • CPU 스트레스 테스트는 인스턴스 시작 후 5분 후에 자동으로 시작됩니다.

    • 수동 개입 필요 없음 - 대기하면 테스트가 백그라운드에서 완전히 실행됩니다.

  2. 테스트를 모니터링합니다.

    • 인스턴스가 테스트를 자동으로 부팅하고 준비합니다.

    • 스크립트는 5분 동안 실행되고 >70% CPU 사용량을 생성합니다.

    • CloudWatch 경보는 총 8~10분(5분 지연 + 경보의 경우 3~5분) 이내에 트리거되어야 합니다.

  3. 선택 사항: 수동 재실행(추가 테스트용):

    • 인스턴스에 연결: EC2 콘솔 → AWS-DevOpsAgent-Test-Instance연결세션 관리자

    • 스트레스 테스트를 다시 실행합니다../cpu-stress-test.sh

    • testing AWS DevOpsAgent의 응답에 여러 번 적합

테스트 옵션 B: Lambda 오류율 테스트

1단계: Lambda 테스트를 위한 CloudFormation 스택 배포

  1. CloudFormation으로 이동합니다.

    1. AWS 콘솔에서 CloudFormation으로 이동합니다.

    2. 스택 생성새 리소스 사용(표준)을 클릭합니다.

  2. 템플릿 업로드:

    1. 라는 새 로컬 파일 생성AWS-DevOpsAgent-lambda-test.yaml

    2. 이 CloudFormation 템플릿을 복사하여 파일에 붙여 넣습니다.

      1. AWSTemplateFormatVersion: '2010-09-09' Description: 'AWS DevOpsAgent Lambda Error Test Stack' Resources: # IAM Role for Lambda function LambdaExecutionRole: Type: AWS::IAM::Role Properties: RoleName: AWS-DevOpsAgentLambdaTestRole AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: lambda.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole Tags: - Key: Name Value: AWS-DevOpsAgent-Lambda-Test-Role - Key: Purpose Value: AWS-DevOpsAgent-Testing # Lambda function that generates errors TestLambdaFunction: Type: AWS::Lambda::Function Properties: FunctionName: AWS-DevOpsAgent-test-lambda Runtime: python3.12 Handler: index.lambda_handler Role: !GetAtt LambdaExecutionRole.Arn Code: ZipFile: | import json import random import time from datetime import datetime def lambda_handler(event, context): print(f"AWS DevOpsAgent Test Lambda - {datetime.now()}") print(f"Event: {json.dumps(event)}") # Intentionally generate errors for testing error_scenarios = [ "Simulated database connection timeout", "Test API rate limit exceeded", "Intentional validation error for AWS DevOpsAgent testing" ] # Always throw an error for testing purposes error_message = random.choice(error_scenarios) print(f"Generating test error: {error_message}") # This will create a Lambda error that CloudWatch will detect raise Exception(f"AWS DevOpsAgent Test Error: {error_message}") Description: AWS DevOpsAgent beta test function - intentionally generates errors Timeout: 30 Tags: - Key: Name Value: AWS-DevOpsAgent-Test-Lambda - Key: Purpose Value: AWS-DevOpsAgent-Testing # CloudWatch Alarm for Lambda errors LambdaErrorAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmName: AWS-DevOpsAgent-Lambda-Error-Test AlarmDescription: AWS-DevOpsAgent beta test - Lambda error rate alarm MetricName: Errors Namespace: AWS/Lambda Statistic: Sum Period: 60 EvaluationPeriods: 1 Threshold: 0 ComparisonOperator: GreaterThanThreshold Dimensions: - Name: FunctionName Value: !Ref TestLambdaFunction TreatMissingData: notBreaching Outputs: LambdaFunctionName: Description: Lambda Function Name for testing Value: !Ref TestLambdaFunction LambdaFunctionArn: Description: Lambda Function ARN Value: !GetAtt TestLambdaFunction.Arn AlarmName: Description: CloudWatch Alarm Name Value: !Ref LambdaErrorAlarm TestCommand: Description: AWS CLI command to test the function Value: !Sub 'aws lambda invoke --function-name ${TestLambdaFunction} --payload "{\"test\":\"AWS DevOpsAgent validation\"}" response.json'
    3. CloudFormation 콘솔에서 템플릿 파일 업로드를 선택합니다.

    4. 파일 선택을 클릭합니다.

    5. AWS-DevOpsAgent-lambda-test.yaml 파일 선택

    6. 다음을 클릭합니다.

  3. 스택 구성:

    1. 스택 이름:AWS-DevOpsAgent-Lambda-Test

    2. 다음을 클릭합니다.

  4. 스택 옵션 구성:

    1. 기본값을 그대로 두고 다음을 클릭합니다.

  5. 검토 및 생성

    1. AWS CloudFormation에서 IAM 리소스를 생성할 수 있음을 확인합니다.

    2. 제출을 클릭합니다.

  6. 완료될 때까지 기다립니다.

    1. 스택 생성에는 2~3분이 소요됩니다.

    2. 상태가 로 변경됩니다.CREATE_COMPLETE

2단계: Lambda 오류 트리거

  1. Lambda 콘솔로 이동합니다.

    1. AWS Lambda 콘솔로 이동

    2. 함수 찾기AWS-DevOpsAgent-test-lambda

  2. 함수를 테스트합니다.

    1. 테스트 탭을 클릭합니다.

    2. 새 이벤트 생성을 클릭합니다.

    3. 이벤트 이름:AWS-DevOpsAgent-test-event

    4. 이 JSON 페이로드를 사용합니다.

      1. { "test": "AWS DevOpsAgent validation", "timestamp": "2024-01-01T00:00:00Z" }
    5. 저장을 클릭합니다.

  3. 오류 생성:

    1. 테스트 버튼을 3번 클릭합니다(각각 간에 10초 대기).

    2. 각 테스트는 의도적인 오류를 생성합니다.

    3. CloudWatch 경보는 2~3분 이내에 트리거되어야 합니다.

    4. 이제 AWS DevOpsAgent는 다음에 설정할 운영자 앱에서 조사를 통해 경보를 감지할 수 있습니다.

Validate AWS DevOps 에이전트 감지

1단계: CloudWatch 경보 안전성 검사(선택 사항)

이 단계는 위의 테스트가 이제 경보 상태인지 확인하기 위한 것입니다.

EC2 테스트의 경우:

  • CloudWatch 콘솔에서 경보로 이동합니다.

  • 스트레스 테스트를 시작한 후 3~5분 정도 기다립니다.

  • 경보에 경보 상태가 표시되어야 합니다.

  • 여전히 “확인”인 경우: 2~3분 더 기다립니다(CloudWatch 지표가 지연될 수 있음).

Lambda 테스트의 경우:

  • AWS-DevOpsAgent-Lambda-Error-Test경보 확인

  • 테스트 실행 후 2~3분 이내에 경보가 표시되어야 합니다.

2단계: a AWS DevOps 에이전트 조사 시작

  1. AWS DevOps Agent AgentSpace 열기

  2. 관리자 액세스를 클릭합니다. 그러면 DevOps 에이전트 스페이스 웹 앱이 새 창에서 열립니다.

  3. 화면 오른쪽에 있는 조사 시작 버튼을 클릭합니다.

  4. 다음 양식을 작성합니다.

    1. 조사 세부 정보: 실행하려는 조사를 설명합니다. 조사 목표, 탐색할 영역 또는 관련 정보에 대해 가능한 모든 세부 정보를 포함합니다.

    2. 조사 시작점: 조사를 시작하려는 정보를 설명합니다. 경보, 지표, 로그 조각 등을 언급하여 DevOps Agent에 작업 시작점을 제공할 수 있습니다. 이 경우 방금 생성한 경보의 요약을 제공합니다.

    3. 인시던트 날짜 및 시간(ISO 8601 선호): YYYY-MM-DDTHH:MMZ

    4. 조사 이름 지정: 예: Oncall_investigation_1:2025-10-27

    5. 인시던트의 AWS 계정 ID

    6. 인시던트가 발생한 리전

    7. Priority - AWS DevOpsAgent는 두 개의 동시 조사를 허용합니다. 우선 순위를 사용하면 조사 실행 순서를 정의할 수 있습니다.

  5. 조사를 클릭하여 조사를 시작합니다.

  6. 대시보드에 나열된 조사를 클릭합니다. DevOps 에이전트가 수행하는 세분화된 단계를 볼 수 있는 조사 세부 정보 화면으로 이동합니다.

예상 결과

EC2 테스트 결과:

  • EC2 CPU 경보 감지

  • 근본 원인 식별: "CPU 스트레스 테스트 워크로드"

  • 타임라인 표시: 스트레스 테스트 → CPU 스파이크 → 경보

  • 모니터링 및 조정에 대한 권장 사항을 제공합니다.

Lambda 테스트 결과:

  • Lambda 오류율 스파이크 감지

  • 근본 원인 식별: "의도적 테스트 예외"

  • 타임라인 표시: 함수 호출 → 오류 → 경보

  • 오류 처리 및 모니터링에 대한 권장 사항을 제공합니다.

정리 지침

정리 테스트 A(EC2 테스트)

자동 정리

  • 인스턴스는 2시간 후에 자동 종료됩니다(CloudFormation 템플릿에 빌드됨).

수동 정리(즉시)

  1. CloudFormation 스택 삭제:

    1. CloudFormation 콘솔로 이동

    2. AWS-DevOpsAgent-EC2-Test스택 선택

    3. 삭제를 클릭합니다.

    4. 삭제 확인

    5. 그러면 EC2 인스턴스, 보안 그룹, 키 페어 및 CloudWatch 경보와 같은 모든 리소스가 자동으로 삭제됩니다.

정리 테스트 B(Lambda 테스트)

  1. CloudFormation 스택 삭제:

    1. CloudFormation 콘솔로 이동

    2. AWS-DevOpsAgent-Lambda-Test스택 선택

    3. 삭제를 클릭합니다.

    4. 삭제 확인

    5. 그러면 Lambda 함수, IAM 역할 및 CloudWatch 경보와 같은 모든 리소스가 자동으로 삭제됩니다.

문제 해결

일반적인 문제

"EC2 인스턴스에 연결할 수 없음"

  • 보안 그룹 확인: SSH(포트 22)가 IP에 열려 있는지 확인합니다.

  • 키 권한 확인: 실행chmod 400 AWS-DevOpsAgent-test-key.pem

  • 퍼블릭 IP 확인: 인스턴스에 퍼블릭 IP가 할당되어 있어야 합니다.

  • 인스턴스 대기: 인스턴스가 "실행" 상태인지 확인합니다.

"경보가 트리거되지 않음"

  • 지표 대기: CloudWatch 지표가 표시되는 데 2~5분이 걸릴 수 있습니다.

  • CPU 로드 확인: 인스턴스에 대한 SSH 및를 실행top하여 CPU >70% 확인

  • 스트레스 테스트 확인:를 실행ps aux | grep yes하여 로드 프로세스가 실행 중인지 확인

  • 대기 시간 연장: 첫 번째 경보 트리거에 최대 7~8분이 걸리는 경우도 있음

테스트 검증

Your AWS DevOp 에이전트 테스트는 다음과 같은 경우에 성공합니다.

기술 검증

  • 조사 정확도: EC2 테스트 결과는 CPU 로드로 인해 경보가 트리거되었음을 올바르게 나타내야 합니다. Lambda 테스트 결과는 이것이 의도적인 실패였음을 나타내야 합니다.

  • 타임라인 정확도: 표시된 이벤트의 올바른 시퀀스

  • 권장 품질: 실행 가능한 제안 제공