Melhore o desempenho operacional habilitando o Amazon DevOps Guru em várias regiões, contas e OUs da AWS com o AWS CDK - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Melhore o desempenho operacional habilitando o Amazon DevOps Guru em várias regiões, contas e OUs da AWS com o AWS CDK

Criado pelo Dr. Rahul Sharad Gaikwad (AWS)

Repositório de código: exemplo de código do Amazon DevOps Guru

Ambiente: PoC ou piloto

Tecnologias: Gestão e governança CloudNative; DevOps; Operações; Segurança, identidade, conformidade; Sem servidor

Serviços da AWS: Amazon API Gateway; AWS CDK; Amazon DevOps Guru; Amazon DynamoDB; AWS Organizations

Resumo

Esse padrão demonstra as etapas para habilitar o serviço Amazon DevOps Guru em várias regiões, contas e unidades organizacionais (OUs) da Amazon Web Services (AWS) usando o AWS Cloud Development Kit (AWS CDK) em. TypeScript Você pode usar pilhas de CDK da AWS para implantar a AWS a CloudFormation StackSets partir da conta administrativa (primária) da AWS para habilitar o Amazon DevOps Guru em várias contas, em vez de fazer login em cada conta e ativar o DevOps Guru individualmente para cada conta.

O Amazon DevOps Guru fornece recursos de operações de inteligência artificial (AIOps) para ajudar você a melhorar a disponibilidade de seus aplicativos e resolver problemas operacionais com mais rapidez. DevOps O Guru reduz seu esforço manual aplicando recomendações baseadas em aprendizado de máquina (ML), sem exigir nenhum conhecimento de ML. DevOps O Guru analisa seus recursos e dados operacionais. Se detectar alguma anomalia, ele fornece métricas, eventos e recomendações para ajudar a resolver o problema.

Esse padrão descreve três opções de implantação para habilitar o Amazon DevOps Guru:

  • Para todos os recursos de pilha em várias contas e regiões

  • Para todos os recursos de pilha nas UOs

  • Para recursos de pilha específicos em várias contas e regiões

Pré-requisitos e limitações

Pré-requisitos

Versões do produto

  • AWS CDK Toolkit versão 1.107.0 ou superior

  • npm versão 7.9.0 ou superior

  • Node.js versão 15.3.0 ou superior

Arquitetura

Tecnologias

A arquitetura para esse padrão inclui os seguintes serviços:

Pilhas do AWS CDK

O padrão usa as seguintes pilhas do AWS CDK: 

  • CdkStackSetAdminRole: cria uma função de administrador do AWS Identity and Access Management (IAM) para estabelecer uma relação de confiança entre as contas de administrador e de destino.

  • CdkStackSetExecRole: cria um perfil do IAM para confiar na conta do administrador.

  • CdkDevopsGuruStackMultiAccReg— Ativa o DevOps Guru em várias regiões e contas da AWS para todas as pilhas e configura as notificações do Amazon Simple Notification Service (Amazon SNS).

  • CdkDevopsGuruStackMultiAccRegSpecStacks— Habilita o DevOps Guru em várias regiões e contas da AWS para pilhas específicas e configura notificações do Amazon SNS.

  • CdkDevopsguruStackOrgUnit— Ativa o DevOps Guru em todas as OUs e configura as notificações do Amazon SNS. 

  • CdkInfrastructureStack: implanta amostras de componentes de aplicativos com tecnologia sem servidor, como API Gateway, Lambda e DynamoDB, na conta do administrador para demonstrar a injeção de falhas e a geração de insights.

Arquitetura de aplicativo de exemplo

O diagrama a seguir mostra a arquitetura de um aplicativo de exemplo com tecnologia sem servidor que foi implantado em várias contas e regiões. O padrão usa a conta do administrador para implantar todas as pilhas do AWS CDK. Ele também usa a conta de administrador como uma das contas de destino para configurar o DevOps Guru.

  1. Quando o DevOps Guru está ativado, ele primeiro define o comportamento de cada recurso e, em seguida, ingere dados operacionais das métricas fornecidas. CloudWatch

  2. Se ele detecta uma anomalia, ela a correlaciona com os eventos e gera uma CloudTrail visão.

  3. O insight fornece uma sequência correlacionada de eventos junto com as recomendações prescritas para permitir que o operador identifique o recurso culpado.

  4. O Amazon SNS envia mensagens de notificação para o operador.

Um exemplo de aplicativo sem servidor que foi implantado em várias contas e regiões.

Automação e escala

O GitHub repositório fornecido com esse padrão usa o AWS CDK como uma ferramenta de infraestrutura como código (IaC) para criar a configuração dessa arquitetura. O AWS CDK ajuda você a orquestrar recursos e habilitar o DevOps Guru em várias contas, regiões e OUs da AWS.

Ferramentas

Serviços da AWS

  • AWS CDK — O AWS Cloud Development Kit (AWS CDK) ajuda você a definir sua infraestrutura de nuvem como código em uma das cinco linguagens de programação compatíveis: TypeScript,, JavaScript Python, Java e C#.

  • AWS CLI: a AWS Command Line Interface (AWS CLI) é uma ferramenta unificada que fornece uma interface de linha de comando consistente para interagir com os serviços e os recursos da AWS.

Código

O código-fonte desse padrão está disponível no GitHub repositório Amazon DevOps Guru CDK Samples. O código do AWS CDK está escrito em TypeScript. Para clonar e usar o repositório, siga as instruções na próxima seção.

Importante: algumas das histórias desse padrão incluem exemplos de comandos do AWS CDK e da AWS CLI formatados para Unix, Linux e macOS. Para Windows, substitua o caractere de continuação Unix de barra invertida (\) no final de cada linha por um circunflexo (^).

Épicos

TarefaDescriçãoHabilidades necessárias

Configure perfis nomeados da AWS.

Configure seus perfis nomeados da AWS da seguinte forma para implantar pilhas em um ambiente de várias contas.

Para a conta de administrador:

$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

Para a conta de destino:

$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

Para obter mais informações, consulte Uso de perfis nomeados na documentação da AWS CLI.

DevOps engenheiro

Verifique as configurações do perfil da AWS.

(Opcional) Você pode verificar suas configurações de perfil da AWS nos arquivos credentials e config seguindo as instruções em Definir e visualizar configurações na documentação da AWS CLI.

DevOps engenheiro

Verifique a versão do AWS CDK.

Verifique a versão do AWS CDK Toolkit executando o seguinte comando:

$cdk --version

Este padrão requer a versão 1.107.0 ou superior. Se você tiver uma versão anterior do AWS CDK, siga as instruções na documentação do AWS CDK para atualizá-la.

DevOps engenheiro

Clone o código do projeto.

Clone o GitHub repositório desse padrão usando o comando:

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

Instale as dependências do pacote e compile os TypeScript arquivos.

Instale as dependências do pacote e compile os TypeScript arquivos executando os seguintes comandos:

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

Esses comandos instalam todos os pacotes do repositório de exemplo.

Importante: se você receber algum erro sobre pacotes ausentes, use um dos comandos a seguir:

$npm ci

—ou—

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

Você pode encontrar a lista de nomes e versões de pacotes na seção Dependencies do arquivo /amazon-devopsguru-cdk-samples/package.json. Para obter mais informações, consulte npm ci e npm install na documentação do npm.

DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Configure um endereço de e-mail para notificações do Amazon SNS.

Siga estas etapas para fornecer um endereço de e-mail para notificações do Amazon SNS:

  1. Edite os arquivos /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. No DevOpsGuruTopic, seção Subscription, atualize o parâmetro Endpoint com seu endereço de e-mail.

  3. Salve e feche os arquivos.

DevOps engenheiro

Crie o código do projeto.

Crie o código do projeto e sintetize as pilhas executando o comando:

npm run build && cdk synth

Você deve ver saída semelhante a: 

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

Para obter mais informações e etapas, consulte Seu primeiro aplicativo do AWS CDK na documentação do AWS CDK.

DevOps engenheiro

Liste as pilhas do AWS CDK.

Execute o comando a seguir para listar todas as pilhas do AWS CDK:

$cdk list

O comando exibe a seguinte lista:

CdkDevopsGuruStackMultiAccReg CdkDevopsGuruStackMultiAccRegSpecStacks CdkDevopsguruStackOrgUnit CdkInfrastructureStack CdkStackSetAdminRole CdkStackSetExecRole
DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Implante as pilhas do AWS CDK para criar perfis do IAM.

Esse padrão usa CloudFormation StackSets a AWS para realizar operações de pilha em várias contas. Se você estiver criando seu primeiro conjunto de pilhas, deverá criar os seguintes perfis do IAM para obter as permissões necessárias configuradas em suas contas da AWS:

  • AWSCloudFormationStackSetAdministrationRole

  • AWSCloudFormationStackSetExecutionRole

Observação: os perfis devem ter esses nomes exatos.

  1. Crie o perfil AWSCloudFormationStackSetAdministrationRole do IAM na conta do administrador (principal) executando o seguinte comando da CLI:

    $cdk deploy CdkStackSetAdminRole --profile administrator
  2. Crie o perfil AWSCloudFormationStackSetExecutionRole do IAM em todas as contas de destino nas quais você deseja executar as instâncias da pilha. Para criar esse perfil, execute estes comandos da CLI:

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

Para obter mais informações, consulte Conceder permissões autogerenciadas na CloudFormation documentação da AWS.

DevOps engenheiro

Implante a pilha de CDK da AWS para habilitar o DevOps Guru em várias contas.

A pilha CdkDevopsGuruStackMultiAccReg do AWS CDK cria conjuntos de pilhas para implantar instâncias de pilha em várias contas e regiões. Para implantar a pilha, execute o seguinte comando da CLI com os parâmetros especificados:

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

Atualmente, o Amazon DevOps Guru está disponível nas regiões da AWS listadas nas perguntas frequentes do DevOps Guru.

DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Extraia IDs da UO.

No console do AWS Organizations, identifique as IDs das unidades organizacionais nas quais você deseja habilitar o DevOps Guru.

DevOps engenheiro

Ative permissões gerenciadas pelo serviço para UOs.

Se você estiver usando o AWS Organizations para gerenciamento de contas, deverá conceder permissões gerenciadas por serviços para habilitar o DevOps Guru. Em vez de criar os perfis do IAM manualmente, use acesso confiável baseado na organização e perfis vinculados a serviços (SLRs).

DevOps engenheiro

Implante a pilha de CDK da AWS para habilitar o DevOps Guru em todas as OUs.

A CdkDevopsguruStackOrgUnit pilha de CDK da AWS habilita o serviço DevOps Guru em todas as OUs. Para implantar a pilha, execute o seguinte comando com os parâmetros especificados:

$cdk deploy CdkDevopsguruStackOrgUnit \ --profile administrator \ --parameters RegionIds="<region-1>,<region-2>" \ --parameters OrganizationalUnitIds="<OU-1>,<OU-2>"
DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Implante as pilhas do AWS CDK para criar perfis do IAM.

Se você ainda não criou os perfis do IAM necessários mostrados na primeira opção, faça isso primeiro:

  1. Crie o perfil AWSCloudFormationStackSetAdministrationRole do IAM na conta do administrador (principal) executando o seguinte comando da CLI:

    $cdk deploy CdkStackSetAdminRole --profile administrator
  2. Crie o perfil AWSCloudFormationStackSetExecutionRole do IAM em todas as contas de destino nas quais você deseja executar as instâncias da pilha. Para criar esse perfil, execute os comandos da CLI:

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

Para obter mais informações, consulte Conceder permissões autogerenciadas na CloudFormation documentação da AWS.

DevOps engenheiro

Exclua as pilhas existentes.

Se você já usou a primeira opção para habilitar o DevOps Guru para todos os recursos da pilha, você pode excluir a pilha antiga usando o seguinte comando:

$cdk destroy CdkDevopsGuruStackMultiAccReg --profile administrator

Ou você pode alterar o parâmetro  RegionIds ao reimplantar a pilha para evitar um erro de As pilhas já existem.

DevOps engenheiro

Atualize a pilha do AWS CDK com uma lista de pilhas.

  1. Edite o arquivo /amazon-devopsguru-cdk-samples/lib/cdk-devopsguru-multi-acc-reg-spec-stack.ts.

  2. EmResources,, CloudFormationStackNames, liste as pilhas para as quais você deseja habilitar o DevOps Guru. Para fins de demonstração, o parâmetro especifica a pilha CdkInfrastructureStack, mas você pode editar essa entrada com base em seus requisitos.

  3. Salve e feche o arquivo.

  4. Para sintetizar e atualizar o modelo de pilha, execute:

     $cdk synth
Engenheiro de dados

Implante a pilha de CDK da AWS para habilitar o DevOps Guru a usar recursos de pilha específicos em várias contas.

A CdkDevopsGuruStackMultiAccRegSpecStacks pilha de CDK da AWS permite que o DevOps Guru use recursos de pilha específicos em várias contas. Para implantar a pilha, execute o seguinte comando:

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

Observação: se você implantou essa pilha anteriormente para a opção 1, altere o parâmetro RegionIds (certificando-se de escolher entre as regiões disponíveis) para evitar um erro de As pilhas já existem.

DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Implante a pilha de infraestrutura de amostra com tecnologia sem servidor.

O AWS CDK CdkInfrastructureStack stack implanta componentes sem servidor, como API Gateway, Lambda e uma tabela do DynamoDB, para demonstrar os insights do Guru. DevOps Para implantar a pilha, execute o seguinte comando: 

$cdk deploy CdkInfrastructureStack --profile administrator
DevOps engenheiro

Insira registros de amostra no DynamoDB.

Execute o comando a seguir para preencher a tabela do DynamoDB com registros de amostra. Forneça o caminho correto para o script populate-shops-dynamodb-table.json.

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

O comando exibe a seguinte saída:

{ "UnprocessedItems": {} }
DevOps engenheiro

Verifique os registros inseridos no DynamoDB.

Para verificar se a tabela do DynamoDB inclui os registros de amostra do arquivo populate-shops-dynamodb-table.json, acesse a URL da API ListRestApiEndpointMonitorOperator, que é publicada como uma saída da pilha do AWS CDK. Você também pode encontrar esse URL na guia Saídas do CloudFormation console da AWS para a CdkInfrastructureStack pilha. A saída do AWS CDK deverá ser semelhante ao seguinte:

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

Aguarde até que os recursos concluam a linha de base.

Essa pilha com tecnologia sem servidor tem alguns recursos. Recomendamos que você espere 2 horas antes de realizar as próximas etapas. Se você implantou essa pilha em um ambiente de produção, pode levar até 24 horas para concluir a linha de base, dependendo do número de recursos selecionados para monitorar no Guru. DevOps

DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Atualize a pilha de infraestrutura do AWS CDK.

Para experimentar o DevOps Guru Insights, você pode fazer algumas alterações na configuração para reproduzir um problema operacional típico.

  1. Edite o arquivo /amazon-devopsguru-cdk-samples/lib/infrastructure-stack.ts.

  2. Na seção DDB Table, altere a capacidade de leitura da tabela do DynamoDB de 5 para 1.

  3. Salve e feche o arquivo.

  4. Execute os seguintes comandos para sintetizar e implantar a pilha de infraestrutura atualizada do AWS CDK:

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

Injete solicitações de HTTP na API.

Injete tráfego de entrada na forma de solicitações de HTTP na API ListRestApiMonitorOperatorEndpointxxxx:

  1. Edite o script /amazon-devopsguru-cdk-samples/scripts/sendAPIRequest.py do Python.

  2. Atualize a variável url com o link da API para ListRestApiMonitorOperatorEndpointxxxx. Você pode encontrar essa URL na saída do comando de implantação do AWS CDK ou no console do AWS Cloudformation, na guia Saídas da pilha.

  3. Salve e feche o arquivo.

  4. Execute o script do Python usando o comando:

    $python sendAPIRequest.py
  5. Certifique-se de obter um código de status 200.

  6. Talvez seja necessário executar o script em vários terminais (de preferência quatro) para injetar o tráfego em alta velocidade.

  7. Depois que o script for executado em um loop de aproximadamente 10 minutos, você poderá ver uma visão operacional no console do DevOps Guru.

DevOps engenheiro

Analise os insights do DevOps Guru.

Sob condições padrão, o painel do DevOps Guru exibe zero no contador de insights em andamento. Ao detectar uma anomalia, ele emite um alerta na forma de um insight. No painel de navegação, escolha Insights para ver os detalhes da anomalia, incluindo uma visão geral, métricas agregadas, eventos relevantes e recomendações. Para obter mais informações sobre a análise de insights, consulte a postagem do blog Como obter informações operacionais com AIOps usando o Amazon DevOps Guru.

DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Limpe e exclua recursos.

Depois de percorrer esse padrão, você deve remover os recursos criados para evitar cobranças adicionais. Execute estes comandos:

$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 engenheiro

Recursos relacionados