Migliora le prestazioni operative abilitando Amazon DevOps Guru su più regioni AWS, account e unità organizzative con AWS CDK - Prontuario AWS

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à.

Migliora le prestazioni operative abilitando Amazon DevOps Guru su più regioni AWS, account e unità organizzative con AWS CDK

Creato dal dott. Rahul Sharad Gaikwad (AWS)

Repository di codice: codice di esempio di Amazon DevOps Guru

Ambiente: PoC o pilota

Tecnologie: gestione e governance; CloudNative; Operazioni DevOps; Sicurezza, identità, conformità; Serverless

Servizi AWS: Amazon API Gateway; CDK AWS; Amazon DevOps Guru; Amazon DynamoDB; AWS Organizations

Riepilogo

Questo modello illustra i passaggi per abilitare il servizio Amazon DevOps Guru su più regioni, account e unità organizzative (OU) di Amazon Web Services (AWS) utilizzando l'AWS Cloud Development Kit (AWS CDK) in. TypeScript Puoi utilizzare AWS CDK stacks per distribuire AWS dall'account CloudFormation StackSets AWS amministratore (primario) per abilitare DevOps Amazon Guru su più account, invece di accedere a ciascun account e DevOps abilitare Guru singolarmente per ogni account.

Amazon DevOps Guru offre funzionalità operative di intelligenza artificiale (AIOps) per aiutarti a migliorare la disponibilità delle tue applicazioni e risolvere più rapidamente i problemi operativi. DevOps Guru riduce il lavoro manuale applicando consigli basati sull'apprendimento automatico (ML), senza richiedere alcuna esperienza di machine learning. DevOps Guru analizza le tue risorse e i tuoi dati operativi. Se rileva anomalie, fornisce metriche, eventi e consigli per aiutarti a risolvere il problema.

Questo modello descrive tre opzioni di distribuzione per abilitare Amazon DevOps Guru:

  • Per tutte le risorse, raggruppa le risorse su più account e regioni

  • Per tutte le risorse dello stack tra le unità organizzative

  • Per risorse di stack specifiche su più account e regioni

Prerequisiti e limitazioni

Prerequisiti

Versioni del prodotto

  • AWS CDK Toolkit versione 1.107.0 o successiva

  • npm versione 7.9.0 o successiva

  • Node.js versione 15.3.0 o successiva

Architettura

Tecnologie

L'architettura di questo modello include i seguenti servizi:

Stack CDK AWS

Il modello utilizza i seguenti stack AWS CDK: 

  • CdkStackSetAdminRole— Crea un ruolo di amministratore di AWS Identity and Access management (IAM) per stabilire una relazione di fiducia tra l'amministratore e gli account di destinazione.

  • CdkStackSetExecRole— Crea un ruolo IAM per fidarsi dell'account amministratore.

  • CdkDevopsGuruStackMultiAccReg— Abilita DevOps Guru su più regioni AWS e account per tutti gli stack e configura le notifiche Amazon Simple Notification Service (Amazon SNS).

  • CdkDevopsGuruStackMultiAccRegSpecStacks— Abilita DevOps Guru su più regioni AWS e account per stack specifici e configura le notifiche Amazon SNS.

  • CdkDevopsguruStackOrgUnit— Abilita DevOps Guru su tutte le unità organizzative e configura le notifiche Amazon SNS. 

  • CdkInfrastructureStack— Implementa componenti applicativi serverless di esempio come API Gateway, Lambda e DynamoDB nell'account amministratore per dimostrare l'iniezione di errori e la generazione di approfondimenti.

Architettura applicativa di esempio

Il diagramma seguente illustra l'architettura di un'applicazione serverless di esempio che è stata distribuita su più account e regioni. Il modello utilizza l'account amministratore per distribuire tutti gli stack CDK AWS. Inoltre, utilizza l'account amministratore come uno degli account di destinazione per la configurazione di Guru. DevOps

  1. Quando DevOps Guru è abilitato, prima elabora il comportamento di ogni risorsa e poi acquisisce i dati operativi dalle metriche fornite. CloudWatch

  2. Se rileva un'anomalia, la mette in correlazione con gli eventi generati e genera un'analisi approfondita. CloudTrail

  3. L'analisi fornisce una sequenza di eventi correlata insieme a raccomandazioni prescritte per consentire all'operatore di identificare la risorsa responsabile.

  4. Amazon SNS invia messaggi di notifica all'operatore.

Un'applicazione serverless di esempio che è stata distribuita su più account e regioni.

Automazione e scalabilità

Il GitHub repository fornito con questo modello utilizza AWS CDK come strumento Infrastructure as Code (IaC) per creare la configurazione per questa architettura. AWS CDK ti aiuta a orchestrare le risorse e abilitare DevOps Guru su più account AWS, regioni e unità organizzative.

Strumenti

Servizi AWS

  • AWS CDK — AWS Cloud Development Kit (AWS CDK) ti aiuta a definire la tua infrastruttura cloud come codice in uno dei cinque linguaggi di programmazione supportati: TypeScript, JavaScript Python, Java e C#.

  • AWS CLI — AWS Command Line Interface (AWS CLI) è uno strumento unificato che fornisce un'interfaccia a riga di comando coerente per interagire con i servizi e le risorse AWS.

Codice

Il codice sorgente di questo pattern è disponibile nel GitHub repository Amazon DevOps Guru CDK Samples. Il codice CDK AWS è scritto in TypeScript. Per clonare e utilizzare il repository, segui le istruzioni nella sezione successiva.

Importante: alcune delle storie di questo modello includono esempi di comandi AWS CDK e AWS CLI formattati per Unix, Linux e macOS. Per Windows, sostituisci il carattere di continuazione della barra rovesciata (\) alla fine di ogni riga con un accento circonflesso (^).

Epiche

AttivitàDescrizioneCompetenze richieste

Configura i profili denominati AWS.

Configura i tuoi profili denominati AWS come segue per distribuire gli stack in un ambiente con più account.

Per l'account amministratore:

$aws configure --profile administrator AWS Access Key ID [****]: <your-administrator-access-key-ID> AWS Secret Access Key [****]: <your-administrator-secret-access-key> Default region name [None]: <your-administrator-region> Default output format [None]: json

Per l'account di destinazione:

$aws configure --profile target AWS Access Key ID [****: <your-target-access-key-ID> AWS Secret Access Key [****]: <your-target-secret-access-key> Default region name [None]: <your-target-region> Default output format [None]: json

Per ulteriori informazioni, consulta Using named profiles nella documentazione AWS CLI.

DevOps ingegnere

Verifica le configurazioni dei profili AWS.

(Facoltativo) Puoi verificare le configurazioni del tuo profilo AWS nei config file credentials and seguendo le istruzioni in Impostare e visualizzare le impostazioni di configurazione nella documentazione dell'interfaccia a riga di comando di AWS.

DevOps ingegnere

Verifica la versione di AWS CDK.

Verifica la versione di AWS CDK Toolkit eseguendo il seguente comando:

$cdk --version

Questo modello richiede la versione 1.107.0 o successiva. Se disponi di una versione precedente di AWS CDK, segui le istruzioni nella documentazione di AWS CDK per aggiornarla.

DevOps ingegnere

Clona il codice del progetto.

Clona il GitHub repository per questo pattern usando il comando:

$git clone https://github.com/aws-samples/amazon-devopsguru-cdk-samples.git
DevOps ingegnere

Installa le dipendenze dei pacchetti e compila i TypeScript file.

Installa le dipendenze del pacchetto e compila TypeScript i file eseguendo i seguenti comandi:

$cd amazon-devopsguru-cdk-samples $npm install $npm fund

Questi comandi installano tutti i pacchetti dal repository di esempio.

Importante: in caso di errori relativi ai pacchetti mancanti, usa uno dei seguenti comandi:

$npm ci

oppure

$npm install -g @aws-cdk/<package-name>

Puoi trovare l'elenco dei nomi e delle versioni dei pacchetti nella Dependencies sezione del /amazon-devopsguru-cdk-samples/package.json file. Per ulteriori informazioni, vedere npm ci e npm install nella documentazione di npm.

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Configura un indirizzo e-mail per le notifiche di Amazon SNS.

Segui questi passaggi per fornire un indirizzo e-mail per le notifiche di Amazon SNS:

  1. Modifica i file /amazon-devopsguru-cdk-samples/lib/cdk-devopsguru-multi-acc-reg-stack.ts e. /amazon-devopsguru-cdk-samples/lib/cdk-devopsguru-org-uni-stack.ts

  2. Nella Subscription sezioneDevOpsGuruTopic, aggiorna il Endpoint parametro con il tuo indirizzo email.

  3. Salva e chiudi i file.

DevOps ingegnere

Costruisci il codice del progetto.

Crea il codice del progetto e sintetizza gli stack eseguendo il comando:

npm run build && cdk synth

Verrà visualizzato un output simile al seguente: 

$npm run build && cdk synth > cdk-devopsguru@0.1.0 build > tsc Successfully synthesized to ~/amazon-devopsguru-cdk-samples/cdk.out Supply a stack id (CdkDevopsGuruStackMultiAccReg,CdkDevopsGuruStackMultiAccRegSpecStacks, CdkDevopsguruStackOrgUnit, CdkInfrastructureStack, CdkStackSetAdminRole, CdkStackSetExecRole) to display its template.

Per ulteriori informazioni e passaggi, consulta La tua prima app AWS CDK nella documentazione di AWS CDK.

DevOps ingegnere

Elenca gli stack CDK AWS.

Esegui il comando seguente per elencare tutti gli stack CDK AWS:

$cdk list

Il comando visualizza il seguente elenco:

CdkDevopsGuruStackMultiAccReg CdkDevopsGuruStackMultiAccRegSpecStacks CdkDevopsguruStackOrgUnit CdkInfrastructureStack CdkStackSetAdminRole CdkStackSetExecRole
DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Implementa gli stack CDK AWS per creare ruoli IAM.

Questo modello utilizza AWS CloudFormation StackSets per eseguire operazioni di stack su più account. Se stai creando il tuo primo set di stack, devi creare i seguenti ruoli IAM per ottenere le autorizzazioni richieste nei tuoi account AWS:

  • AWSCloudFormationStackSetAdministrationRole

  • AWSCloudFormationStackSetExecutionRole

Nota: i ruoli devono avere questi nomi esatti.

  1. Crea il AWSCloudFormationStackSetAdministrationRole ruolo IAM nell'account amministratore (primario) eseguendo il seguente comando CLI:

    $cdk deploy CdkStackSetAdminRole --profile administrator
  2. Crea il AWSCloudFormationStackSetExecutionRole ruolo IAM in tutti gli account di destinazione in cui desideri eseguire le istanze dello stack. Per creare questo ruolo, esegui questi comandi CLI:

    $cdk deploy CdkStackSetExecRole \ --parameters AdministratorAccountId=<administrator-account-ID> \ --profile administrator   $cdk deploy CdkStackSetExecRole \ --parameters AdministratorAccountId=<administrator-account-ID> \ --profile target

Per ulteriori informazioni, consulta Concedere autorizzazioni autogestite nella documentazione CloudFormation AWS.

DevOps ingegnere

Implementa lo stack AWS CDK per abilitare DevOps Guru su più account.

Lo CdkDevopsGuruStackMultiAccReg stack CDK di AWS crea set di stack per distribuire istanze di stack su più account e regioni. Per distribuire lo stack, esegui il seguente comando CLI con i parametri specificati:

$cdk deploy CdkDevopsGuruStackMultiAccReg \ --profile administrator \ --parameters AdministratorAccountId=<administrator-account-ID> \ --parameters TargetAccountId=<target-account-ID> \ --parameters RegionIds="<region-1>,<region-2>"

Attualmente Amazon DevOps Guru è disponibile nelle regioni AWS elencate nelle domande frequenti su DevOps Guru.

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Estrai gli ID OU.

Sulla console AWS Organizations, identifica gli ID delle unità organizzative in cui desideri abilitare DevOps Guru.

DevOps ingegnere

Abilita le autorizzazioni gestite dal servizio per le unità organizzative.

Se utilizzi AWS Organizations per la gestione degli account, devi concedere le autorizzazioni gestite dal servizio per abilitare Guru. DevOps Invece di creare i ruoli IAM manualmente, utilizza ruoli di accesso affidabile e ruoli collegati ai servizi (SLR) basati sull'organizzazione.

DevOps ingegnere

Implementa lo stack AWS CDK per abilitare DevOps Guru su tutte le unità organizzative.

Lo CdkDevopsguruStackOrgUnit stack CDK AWS abilita il servizio DevOps Guru su tutte le unità organizzative. Per distribuire lo stack, esegui il seguente comando con i parametri specificati:

$cdk deploy CdkDevopsguruStackOrgUnit \ --profile administrator \ --parameters RegionIds="<region-1>,<region-2>" \ --parameters OrganizationalUnitIds="<OU-1>,<OU-2>"
DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Implementa gli stack CDK AWS per creare ruoli IAM.

Se non hai ancora creato i ruoli IAM richiesti mostrati nella prima opzione, fallo prima:

  1. Crea il AWSCloudFormationStackSetAdministrationRole ruolo IAM nell'account amministratore (primario) eseguendo il seguente comando CLI:

    $cdk deploy CdkStackSetAdminRole --profile administrator
  2. Crea il AWSCloudFormationStackSetExecutionRole ruolo IAM in tutti gli account di destinazione in cui desideri eseguire le istanze dello stack. Per creare questo ruolo, esegui i comandi CLI:

    $cdk deploy CdkStackSetExecRole \ --parameters AdministratorAccountId=<administrator-account-ID> \ --profile administrator $cdk deploy CdkStackSetExecRole \ --parameters AdministratorAccountId=<administrator-account-ID> \ --profile target

Per ulteriori informazioni, consulta Concedere autorizzazioni autogestite nella documentazione CloudFormation AWS.

DevOps ingegnere

Elimina le pile esistenti.

Se hai già utilizzato la prima opzione per abilitare DevOps Guru per tutte le risorse dello stack, puoi eliminare il vecchio stack usando il seguente comando:

$cdk destroy CdkDevopsGuruStackMultiAccReg --profile administrator

In alternativa, puoi modificare il  RegionIds parametro quando ridistribuisci lo stack per evitare che si verifichi un errore Stacks already exist.

DevOps ingegnere

Aggiorna lo stack CDK AWS con un elenco di stack.

  1. Modificare il file /amazon-devopsguru-cdk-samples/lib/cdk-devopsguru-multi-acc-reg-spec-stack.ts.

  2. SottoResources,, CloudFormationStackNames, elenca gli stack per i quali desideri abilitare Guru. DevOps A scopo dimostrativo, il parametro specifica lo CdkInfrastructureStack stack, ma puoi modificare questa voce in base alle tue esigenze.

  3. Salva e chiudi il file.

  4. Per sintetizzare e aggiornare il modello dello stack, esegui:

     $cdk synth
Ingegnere dei dati

Implementa lo stack AWS CDK per abilitare DevOps Guru per risorse stack specifiche su più account.

Lo CdkDevopsGuruStackMultiAccRegSpecStacks stack AWS CDK consente a DevOps Guru di utilizzare risorse stack specifiche su più account. Per distribuire lo stack, esegui il seguente comando:

$cdk deploy CdkDevopsGuruStackMultiAccRegSpecStacks \ --profile administrator \ --parameters AdministratorAccountId=<administrator-account-ID> \ --parameters TargetAccountId=<target-account-ID> \ --parameters RegionIds="<region-1>,<region-2>"

Nota: se in precedenza hai distribuito questo stack per l'opzione 1, modifica il RegionIds parametro (assicurandoti di scegliere tra le regioni disponibili) per evitare che gli stack esistano già.

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Implementa lo stack di infrastruttura serverless di esempio.

Lo CdkInfrastructureStack stack CDK di AWS implementa componenti serverless come API Gateway, Lambda e una tabella DynamoDB per illustrare le intuizioni di Guru. DevOps Per distribuire lo stack, esegui il seguente comando: 

$cdk deploy CdkInfrastructureStack --profile administrator
DevOps ingegnere

Inserisci record di esempio in DynamoDB.

Esegui il comando seguente per popolare la tabella DynamoDB con record di esempio. Fornisci il percorso corretto per lo script. populate-shops-dynamodb-table.json

$aws dynamodb batch-write-item \ --request-items file://scripts/populate-shops-dynamodb-table.json \ --profile administrator

Il comando visualizza il seguente output:

{ "UnprocessedItems": {} }
DevOps ingegnere

Verifica i record inseriti in DynamoDB.

Per verificare che la tabella DynamoDB includa populate-shops-dynamodb-table.json i record di esempio del file, accedi all'URL dell'API, che viene pubblicato come output ListRestApiEndpointMonitorOperator dello stack CDK di AWS. Puoi trovare questo URL anche nella scheda Outputs della CloudFormation console AWS per lo CdkInfrastructureStack stack. L'output di AWS CDK sarebbe simile al seguente:

CdkInfrastructureStack.CreateRestApiMonitorOperatorEndpointD1D00045 = https://oure17c5vob.execute-api.<your-region>.amazonaws.com/prod/ CdkInfrastructureStack.ListRestApiMonitorOperatorEndpointABBDB8D8 = https://cdff8icfrn4.execute-api.<your-region>.amazonaws.com/prod/
DevOps ingegnere

Attendi che le risorse completino la linea di base.

Questo stack serverless ha poche risorse. Ti consigliamo di attendere 2 ore prima di eseguire i passaggi successivi. Se hai distribuito questo stack in un ambiente di produzione, potrebbero essere necessarie fino a 24 ore per completare la baseline, a seconda del numero di risorse che hai selezionato per il monitoraggio in Guru. DevOps

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Aggiorna lo stack di infrastruttura AWS CDK.

Per provare DevOps Guru Insights, puoi apportare alcune modifiche alla configurazione per riprodurre un tipico problema operativo.

  1. Modificare il file /amazon-devopsguru-cdk-samples/lib/infrastructure-stack.ts.

  2. Nella DDB Table sezione, modifica la capacità di lettura per la tabella DynamoDB da 5 a 1.

  3. Salva e chiudi il file.

  4. Esegui i seguenti comandi per sintetizzare e distribuire lo stack di infrastruttura AWS CDK aggiornato:

    $cdk synth $cdk deploy CdkInfrastructureStack --profile administrator
DevOps ingegnere

Inietta le richieste HTTP sull'API.

Inietta il traffico in ingresso sotto forma di richieste HTTP sull'API: ListRestApiMonitorOperatorEndpointxxxx

  1. Modifica lo script Python. /amazon-devopsguru-cdk-samples/scripts/sendAPIRequest.py

  2. Aggiorna la url variabile con il link API perListRestApiMonitorOperatorEndpointxxxx. Puoi trovare questo URL nell'output del comando AWS CDK deploy o nella console AWS Cloudformation, nella scheda Outputs dello stack.

  3. Salva e chiudi il file.

  4. Esegui lo script Python usando il comando:

    $python sendAPIRequest.py
  5. Assicurati di ottenere un codice di stato 200.

  6. Potrebbe essere necessario eseguire lo script su più terminali (preferibilmente quattro) per immettere traffico a una velocità elevata.

  7. Dopo che lo script è stato eseguito per circa 10 minuti in un ciclo, puoi visualizzare una panoramica operativa sulla console DevOps Guru.

DevOps ingegnere

Rivedi le informazioni su DevOps Guru.

In condizioni standard, la dashboard di DevOps Guru mostra zero nel contatore delle informazioni in corso. Se rileva un'anomalia, genera un avviso sotto forma di intuizione. Nel riquadro di navigazione, scegli Insights per visualizzare i dettagli dell'anomalia, tra cui una panoramica, metriche aggregate, eventi pertinenti e consigli. Per ulteriori informazioni sulla revisione degli approfondimenti, consulta il post del blog Gathering operating insights with AIOps using Amazon DevOps Guru.

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Pulisci ed elimina le risorse.

Dopo aver seguito questo schema, dovresti rimuovere le risorse che hai creato per evitare di incorrere in ulteriori addebiti. Esegui questi comandi:

$cdk destroy CdkDevopsGuruStackMultiAccReg --profile administrator $cdk destroy CdkDevopsguruStackOrgUnit --profile administrator $cdk destroy CdkDevopsGuruStackMultiAccRegSpecStacks --profile administrator $cdk destroy CdkInfrastructureStack --profile administrator $cdk destroy CdkStackSetAdminRole --profile administrator $cdk destroy CdkStackSetExecRole --profile administrator $cdk destroy CdkStackSetExecRole --profile target
DevOps ingegnere

Risorse correlate