Implemente alarmes do AWS CloudWatch com o Bitbucket

Para demonstrar como desenvolver, implementar e gerenciar aplicativos usando o Jira Software e vÔrias ferramentas conectadas, nossa equipe criou o ImageLabeller, um aplicativo de demonstração simples gerado na AWS que usa aprendizado de mÔquina para aplicar etiquetas às imagens.

Esta pÔgina aborda como monitorar o ImageLabeller com o Opsgenie. Antes de começar, recomendamos a leitura da pÔgina da arquitetura do ImageLabeller para contextualizar.

Adicione um repositório de alarmes para integração com o Opsgenie

Acesse o Jira e crie um item novo do Jira para adicionar um repositório de alarmes do AWS CloudWatch ao Bitbucket. Neste exemplo, o ID do item do Jira é GI-9.

Captura de tela de adição de alarmes do Opsgenie

VÔ para o Bitbucket e clique em Criar e depois em Repositório.

captura de tela dos repositórios

Selecione a Área de trabalho e o Projeto apropriados. Defina o Nome da ramificação padrão como linha principal. Clique em Criar repositório para continuar.

captura de tela de criar repositório

Acesse seu repositório do CloudWatchAlarms pelo seu terminal e execute o seguinte para enviar seu código de template do AWS CloudFormation para o Bitbucket.

git add --all
git commit -m "IM-9 add CloudWatchAlarms to Bitbucket"
git remote add origin git@bitbucket.org:pmmquickstartguides01/cloudwatchalarms.git
git branch -m mainline
git push -u origin mainline

template.yml de alarmes

Description: 'A description'

Resources:
  OpsGenieSNS:
    Type: AWS::SNS::Topic
    Properties: 
      DisplayName: 'Opsgenie'
      Subscription:
        - Endpoint: 'https://api.opsgenie.com/v1/json/cloudwatch?apiKey=a4449509-6998-4d55-841d-2e6b363520c7'
          Protocol: 'HTTPS'
      TopicName: 'Opsgenie'

  SubmitImageLambdaAlarm:
    Type: AWS::CloudWatch::Alarm
    Properties: 
      AlarmActions:
        - !Ref 'OpsGenieSNS'
      AlarmDescription: 'SubmitImage Too Many Invocations'
      ComparisonOperator: 'GreaterThanThreshold'
      Dimensions:
        - Name: FunctionName
          Value: !ImportValue 'SubmitImageFunctionName'
      EvaluationPeriods: 1
      MetricName: 'Invocations'
      Namespace: 'AWS/Lambda'
      Period: 60
      Statistic: 'Sum'
      Threshold: 10

Defina o endpoint de assinatura do tópico do SNS como o URL do endpoint que você copiou do Opsgenie. O SubmitImageLambdaAlarm monitora uma única métrica emitida pelo submitImage AWS Lambda. Se houver mais de 10 invocações, em um minuto o alarme é disparado.

bitbucket-pipelines.yml para implementação na AWS

Acesse seu repositório CloudWatchAlarms no terminal e crie uma ramificação com o nome do ID de item do Jira.

definitions:
  steps:
    - step: &deploy-test-usw1
        name: Deploy Test us-west-1
        script:
        - pipe: atlassian/aws-cloudformation-deploy:0.10.0
          variables:
            AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
            AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
            AWS_DEFAULT_REGION: 'us-west-1'
            STACK_NAME: 'OpenDevOpsAlarms'
            CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
            WAIT: 'true'
            TEMPLATE: 'template.yml'
    - step: &deploy-staging-use2
        name: Deploy Staging us-east-2
        script:
        - pipe: atlassian/aws-cloudformation-deploy:0.10.0
          variables:
            AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
            AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
            AWS_DEFAULT_REGION: 'us-east-2'
            STACK_NAME: 'OpenDevOpsAlarms'
            CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
            WAIT: 'true'
            TEMPLATE: 'template.yml'
    - step: &deploy-production-usw2
        name: Deploy Production us-west-2
        script:
        - pipe: atlassian/aws-cloudformation-deploy:0.10.0
          variables:
            AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
            AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
            AWS_DEFAULT_REGION: 'us-west-2'
            STACK_NAME: 'OpenDevOpsAlarms'
            CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
            WAIT: 'true'
            TEMPLATE: 'template.yml'
    - step: &deploy-production-use1
        name: Deploy Proudction us-east-1
        script:
        - pipe: atlassian/aws-cloudformation-deploy:0.10.0
          variables:
            AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
            AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
            AWS_DEFAULT_REGION: 'us-east-1'
            STACK_NAME: 'OpenDevOpsAlarms'
            CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
            WAIT: 'true'
            TEMPLATE: 'template.yml'
    - step: &deploy-production-cac1
        name: Deploy Production ca-central-1
        script:
        - pipe: atlassian/aws-cloudformation-deploy:0.10.0
          variables:
            AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
            AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
            AWS_DEFAULT_REGION: 'ca-central-1'
            STACK_NAME: 'OpenDevOpsAlarms'
            CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
            WAIT: 'true'
            TEMPLATE: 'template.yml'
pipelines:
  default:
    - step:
        <<: *deploy-test-usw1
        deployment: Test us-west-1
    - step:
        <<: *deploy-staging-use2
        deployment: Staging us-east-2
  branches:
    mainline:
      - step:
          <<: *deploy-production-usw2
          deployment: Production us-west-2
      - step:
          <<: *deploy-production-use1
          deployment: Production us-east-1
      - step:
          <<: *deploy-production-cac1
          deployment: Production ca-central-1

Lembre-se de que você precisa habilitar pipelines, configurar ambientes de implementação e adicionar chaves de acesso da AWS ao repositório antes que os pipelines sejam executados.

Enviando para uma ramificação de funções

Execute o seguinte na linha de comando para enviar suas alterações para a ramificação GI-9 do seu repositório CloudWatchAlarms. Inclua o ID do item do Jira nas mensagens de commit e nos nomes das ramificações para permitir a integração com o Jira Bitbucket e acompanhar o que estÔ acontecendo em seu projeto.

git add --all
git commit -m "IM-9 add bitbucket-pipelines.yml to CloudWatchAlarms"
git push -u origin IM-9

Clique em Pipelines e depois em GI-9 para ver o pipeline em execução.

Capturas de tela de pipelines em execução do GI-9

Criar uma solicitação pull

Para criar uma solicitação pull, clique em Solicitações pull e depois em Criar solicitação pull. Conclua o solicitação pull e clique em Pipelines para ver a implementação da produção.

capturas de tela da criação de solicitações pull

Como testar o alarme

Gere um alerta acionando o alarme do AWS CloudWatch que vocĆŖ acabou de configurar ou clicando em Criar alerta.

siga a captura de tela dos alarmes

Parabéns! Você conseguiu. O ImageLabeller agora estÔ instalado e funcionando.

Recomendado para vocĆŖ

Comunidade de DevOps

Caminho de aprendizagem de DevOps

Comece de graƧa