View a markdown version of this page

Creazione di un ambiente di test - AWS DevOps Agente

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Creazione di un ambiente di test

Questa guida fornisce test pratici per convalidare la funzionalità di risposta agli incidenti di AWS DevOps Agent utilizzando un'architettura di esempio. Utilizzate questo supplemento se desiderate testare DevOps Agent prima di connettere i vostri sistemi di produzione.

Prerequisiti

  • AWS account con accesso amministrativo

  • AWS DevOps Agent Space creato e configurato utilizzando il flusso di ruolo Auto create DevOps Agent

  • Per il test EC2: un VPC esistente con almeno una sottorete nella regione in cui verrà implementato.

Panoramica dei costi e della sicurezza

Protezione dei costi

  • Test EC2: GRATUITO (livello AWS gratuito) o ~$0,02 per 2 ore

  • Test Lambda: GRATUITO (livello gratuito di 1 milione) requests/month

  • CloudWatch: GRATUITO (10 allarmi, metriche di base incluse)

  • Costo totale stimato previsto: 0,00 USD - 0,05 USD per il test completo

Caratteristiche di sicurezza in questi test

  • Auto-termination: spegnimento Built-in automatico

  • Idoneo al livello gratuito: utilizza i tipi di istanza più piccoli

  • Ambito limitato: risorse di test minime e isolate

  • Facile pulizia: semplici passaggi della console per rimuovere tutto

  • Nessun impatto sulla produzione: ambiente di test completamente separato

Configura il tuo AWS account per i test

Importante

Le risorse dell'infrastruttura devono essere distribuite nell' AWS account in cui è stato creato l'account cloud principale di DevOps Agent Space. La regione specifica non ha importanza.

  1. Accedi alla AWS console: https://console.aws.amazon.com

  2. Assicurati di lavorare nello stesso AWS account in cui si trova il tuo DevOps Agent Space

  3. Puoi utilizzare qualsiasi regione per le tue risorse di test

Nota

La mappatura 1:1 tra l'account principale del tuo DevOps agente e le risorse dell'ambiente di test che stai creando semplifica la configurazione del test. Puoi facilmente estendere il tuo DevOps Agent Space per includere account secondari e consentire indagini tra account.

Scegli il tuo test

Puoi eseguire entrambi i test indipendentemente o entrambi insieme:

Opzione di test A: test della capacità della CPU EC2

Scopo: convalidare la capacità AWS DevOps dell'agente di rilevare e analizzare i problemi di prestazioni di EC2

Tempo stimato: 5 minuti di configurazione + 10 minuti di esecuzione automatica

Difficoltà: completamente automatizzata (non sono richiesti passaggi manuali)

Opzione di test B: test del tasso di errore Lambda

Scopo: convalidare la capacità AWS DevOps dell'agente di rilevare e analizzare gli errori delle funzioni Lambda

Tempo stimato: 10 minuti di configurazione + 2 minuti per l'attivazione

Difficoltà: molto facile

Opzione di test A: test della capacità della CPU EC2

Fase 1: Implementazione CloudFormation dello stack per il test EC2

Le useremo CloudFormation per creare le nostre risorse di test, che consentiranno all' AWS DevOps agente di tracciarle e analizzarle correttamente.

  1. Passa a CloudFormation:

    1. In AWS Console, cerca "CloudFormation" e scegli CloudFormation

    2. Scegli Crea stack > Con nuove risorse (standard).

  2. Carica modello:

    1. Crea un nuovo file locale chiamato AWS-DevOpsAgent-ec2-test.yaml

    2. Copia e incolla questo CloudFormation modello nel file:

      1. AWSTemplateFormatVersion: '2010-09-09' Description: 'AWS DevOps Agent EC2 CPU Test Stack' Parameters: VpcId: Type: AWS::EC2::VPC::Id Description: ID of an existing VPC where the test instance will be launched. SubnetId: Type: AWS::EC2::Subnet::Id Description: ID of an existing subnet within the selected VPC. Choose a subnet that routes to an internet gateway if you plan to connect via SSH. 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: GroupDescription: AWS DevOps Agent beta testing security group VpcId: !Ref VpcId 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 # IAM Role for Session Manager access SSMInstanceRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: ec2.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore Tags: - Key: Name Value: AWS-DevOpsAgent-Test-SSMRole - Key: Purpose Value: AWS-DevOpsAgent-Testing # Instance profile wrapping the SSM role SSMInstanceProfile: Type: AWS::IAM::InstanceProfile Properties: Roles: - !Ref SSMInstanceRole # 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 SubnetId: !Ref SubnetId SecurityGroupIds: - !GetAtt TestSecurityGroup.GroupId IamInstanceProfile: !Ref SSMInstanceProfile InstanceInitiatedShutdownBehavior: terminate 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: !GetAtt TestSecurityGroup.GroupId 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. Nella CloudFormation console, seleziona Carica un file modello

    4. Scegli il file

    5. Seleziona il AWS-DevOpsAgent-ec2-test.yaml file

    6. Seleziona Next (Successivo).

  3. Configura lo stack:

    1. Nome dello stack: AWS-DevOpsAgent-EC2-Test

    2. Parametri:

      1. VpcId: seleziona un VPC esistente dal menu a discesa.

      2. SubnetId: seleziona una sottorete all'interno del VPC che hai scelto. Per l'accesso SSH, la sottorete deve essere indirizzata a un gateway Internet e all'istanza deve essere associato un indirizzo IPv4 pubblico. Altrimenti, l'SSHCommandoutput sarà vuoto e le connessioni SSH non avranno esito positivo.

      3. MyIP: lascia il valore predefinito 0.0.0.0/0 (puoi proteggerlo in seguito, se necessario)

    3. Seleziona Next (Successivo).

  4. Configura le opzioni dello stack:

    1. Lascia le impostazioni predefinite, scegli Avanti

  5. Revisione e creazione:

    1. Seleziona Riconosco che AWS CloudFormation potrebbe creare risorse IAM

    2. Scegli Invia

  6. Attendi il completamento:

    1. La creazione dello stack richiede 3-5 minuti

    2. Lo stato cambierà da CREATE_IN_PROGRESS a CREATE_COMPLETE

    3. Importante: la tua istanza EC2 ora fa parte di uno CloudFormation stack in AWS DevOpsAgent grado di tracciare!

Facoltativo: accesso SSH sicuro (solo se prevedi di connetterti all'istanza)

Salta questo passaggio se desideri eseguire solo il test automatico

  1. Individua il gruppo di sicurezza:

    1. In AWS Console, vai a CloudFormation e seleziona lo AWS-DevOpsAgent-EC2-Test stack

    2. Apri la scheda Outputs e copia il valore di SecurityGroupId (inizia consg-)

    3. Vai su EC2 → Gruppi di sicurezza e incolla l'ID nella barra di ricerca per aprire il gruppo di sicurezza

  2. Aggiorna la regola SSH:

    1. Seleziona il gruppo di sicurezza → scheda Regole in entrata → Modifica regole in entrata

    2. Trova la regola SSH (porta 22)

    3. Cambia la fonte dal 0.0.0.0/0 tuo IP: [YOUR_IP]/32

    4. Ottieni il tuo IP da https://whatismyipaddress.com

    5. Scegliere Save rules (Salva regole).

Fase 2: Attendi l'esecuzione automatica del test

  1. Esecuzione automatica del test:

    • Lo stress test della CPU verrà avviato automaticamente 5 minuti dopo l'avvio dell'istanza

    • Non è richiesto alcun intervento manuale: aspetta, il test viene eseguito completamente in background

  2. Monitora il test:

    • Instance avvia e prepara il test automaticamente

    • Lo script verrà eseguito per 5 minuti e genererà un utilizzo della CPU superiore al 70%

    • CloudWatch l'allarme dovrebbe attivarsi entro 8-10 minuti totali (5 minuti di ritardo + 3-5 minuti per l'allarme)

  3. Opzionale: riesecuzione manuale (per test aggiuntivi):

    • Connettiti alla tua istanza: console EC2 → → Connetti AWS-DevOpsAgent-Test-Instance → Session Manager

    • Esegui nuovamente lo stress test: ./cpu-stress-test.sh

    • Perfetto per AWS DevOpsAgent la risposta dei test più volte

Opzione di test B: test del tasso di errore Lambda

Fase 1: Implementazione CloudFormation dello stack per il test Lambda

  1. Passa a: CloudFormation

    1. In AWS Console, vai a CloudFormation

    2. Scegli Crea stack Con nuove risorse (standard)

  2. Carica modello:

    1. Crea un nuovo file locale chiamato AWS-DevOpsAgent-lambda-test.yaml

    2. Copia e incolla questo CloudFormation modello nel file:

      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. Nella CloudFormation console, seleziona Carica un file modello

    4. Scegli il file

    5. Seleziona il AWS-DevOpsAgent-lambda-test.yaml file

    6. Seleziona Next (Successivo).

  3. Configura lo stack:

    1. Nome dello stack: AWS-DevOpsAgent-Lambda-Test

    2. Seleziona Next (Successivo).

  4. Configura le opzioni dello stack:

    1. Lascia le impostazioni predefinite, scegli Avanti

  5. Revisione e creazione:

    1. Seleziona Riconosco che AWS CloudFormation potrebbe creare risorse IAM

    2. Scegli Invia

  6. Attendi il completamento:

    1. La creazione dello stack richiede 2-3 minuti

    2. Lo stato cambierà in CREATE_COMPLETE

Fase 2: Attiva gli errori Lambda

  1. Passa alla console Lambda:

    1. Vai alla console AWS Lambda

    2. Trova la tua funzione AWS-DevOpsAgent-test-lambda

  2. Prova la funzione:

    1. Scegli la scheda Test

    2. Scegli Crea nuovo evento

    3. Nome dell'evento: AWS-DevOpsAgent-test-event

    4. Usa questo payload JSON:

      1. { "test": "AWS DevOpsAgent validation", "timestamp": "2024-01-01T00:00:00Z" }
    5. Seleziona Salva

  3. Genera errori:

    1. Scegli il pulsante Test 3 volte (attendi 10 secondi tra una e l'altra)

    2. Ogni test genererà un errore intenzionale

    3. CloudWatch l'allarme dovrebbe attivarsi entro 2-3 minuti

    4. AWS DevOpsAgentora dovrebbe essere in grado di rilevare l'allarme con un'indagine nell'app Operator che configurerai successivamente.

Convalida AWS DevOps Rilevamento degli agenti

Fase 1: CloudWatch allarmi Sanity Check (opzionali)

Questo passaggio serve a garantire che i test precedenti siano ora in stato di allarme.

Per il test EC2:

  • Nella CloudWatch console, vai su Allarmi

  • Attendi 3-5 minuti dopo l'avvio dello stress test

  • La sveglia dovrebbe apparire in stato di allarme

  • Se è ancora «OK»: attendi altri 2-3 minuti (le CloudWatch metriche possono essere ritardate)

Per Lambda Test:

  • Controlla l'allarme AWS-DevOpsAgent-Lambda-Error-Test

  • Dovrebbe apparire In allarme entro 2-3 minuti dall'esecuzione dei test

Fase 2: Avviare un AWS DevOps Indagine sugli agenti

  1. Apri il tuo AWS DevOps agente AgentSpace

  2. Scegli Accesso amministratore. Si aprirà l'app web di DevOps Agent Space in una nuova finestra

  3. Scegli il pulsante Avvia indagine

  4. Compila il seguente modulo:

    1. Dettagli dell'indagine: descrivi l'indagine che vorresti condurre. Includi tutti i dettagli possibili sugli obiettivi dell'indagine, sulle aree da esplorare o sulle informazioni pertinenti.

    2. Punto di partenza dell'indagine: descrivi le informazioni da cui vorresti iniziare l'indagine. Puoi menzionare un allarme, una metrica, un frammento di registro o qualsiasi altra cosa per dare all' DevOps agente un punto di partenza su cui lavorare. In questo caso, fornisci un riepilogo degli allarmi appena creati.

    3. Data e ora dell'incidente (preferibilmente ISO 8601): YYYY-MM-DDTHH:MMZ

    4. Assegna un nome alla tua indagine: esempio: Oncall_investigation_1:2025-10-27

    5. AWS ID dell'account relativo all'incidente

    6. Regione in cui si è verificato l'incidente

    7. Priorità: AWS DevOpsAgent consente 2 indagini simultanee. La priorità consente di definire l'ordine di esecuzione delle indagini.

  5. Scegli Investiga per avviare l'indagine.

  6. Scegli la tua indagine elencata nella dashboard. Verrai indirizzato alla schermata Dettagli dell'indagine in cui potrai visualizzare i passaggi dettagliati che l' DevOps Agente sta eseguendo.

Risultati attesi

Risultati dei test EC2:

  • Rileva l'allarme della CPU EC2

  • Identifica la causa principale: «carico di lavoro per lo stress test della CPU»

  • Mostra la cronologia: Stress test → CPU spike → Alarm

  • Fornisce consigli per il monitoraggio e il ridimensionamento

Risultati dei test Lambda:

  • Rileva il picco del tasso di errore Lambda

  • Identifica la causa principale: «Eccezioni di test intenzionali»

  • Mostra la sequenza temporale: Richiami di funzione → Errori → Allarme

  • Fornisce raccomandazioni per la gestione e il monitoraggio degli errori

Istruzioni per la pulizia

Test di pulizia A (test EC2)

Pulizia automatica

  • L'istanza verrà interrotta automaticamente dopo 2 ore (integrata nel modello) CloudFormation

Pulizia manuale (immediata)

  1. Elimina CloudFormation stack:

    1. Vai alla CloudFormation console

    2. Seleziona AWS-DevOpsAgent-EC2-Test pila

    3. Seleziona Delete (Elimina)

    4. Conferma l'eliminazione

    5. Ciò eliminerà automaticamente tutte le risorse: istanza EC2, gruppo di sicurezza, coppia di chiavi e allarme CloudWatch

Test di pulizia B (test Lambda)

  1. Elimina stack CloudFormation :

    1. Vai alla CloudFormation console

    2. Seleziona AWS-DevOpsAgent-Lambda-Test pila

    3. Seleziona Delete (Elimina)

    4. Conferma l'eliminazione

    5. Questa operazione eliminerà automaticamente tutte le risorse: funzione Lambda, ruolo IAM e allarme CloudWatch

Risoluzione dei problemi

Problemi comuni

«Impossibile connettersi all'istanza EC2"

  • Controlla il gruppo di sicurezza: assicurati che SSH (porta 22) sia aperto al tuo IP

  • Controlla le autorizzazioni chiave: Esegui chmod 400 AWS-DevOpsAgent-test-key.pem

  • Verifica l'IP pubblico: all'istanza deve essere assegnato un IP pubblico

  • Attendi l'istanza: assicurati che l'istanza sia in stato «In esecuzione»

«L'allarme non si attiva»

  • Attendi le metriche: la visualizzazione delle CloudWatch metriche può richiedere da 2 a 5 minuti

  • Controlla il carico della CPU: SSH sull'istanza ed esegui per verificare che la CPU top sia superiore al 70%

  • Verifica lo stress test: esegui ps aux | grep yes per vedere se i processi di caricamento sono in esecuzione

  • Attesa prolungata: a volte sono necessari fino a 7-8 minuti per l'attivazione del primo allarme

Convalida dei test

Il test del tuo AWS DevOp agente ha esito positivo quando:

Convalida tecnica

  • Precisione dell'indagine: i risultati del test EC2 dovrebbero indicare correttamente che l'allarme è stato attivato a causa del carico della CPU. Il risultato del test Lambda dovrebbe indicare che si è trattato di un errore intenzionale.

  • Precisione della cronologia: viene mostrata la sequenza corretta degli eventi

  • Qualità delle raccomandazioni: vengono forniti suggerimenti attuabili