Implemente alarmes do AWS CloudWatch com o GitLab

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 das pÔginas sobre a arquitetura do ImageLabeller e a implementação do ImageLabeller com o GitLab 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 GitLab. Neste exemplo, o ID do item do Jira é GI-6.

Captura de tela do painel de GI

Acesse o GitLab e crie um novo projeto. Atualize o URL do projeto para usar o grupo que vocĆŖ vinculou ao Jira. Clique em Criar projeto.

captura de tela de criar projeto no gitlab

Em seu terminal, acesse seu repositório CloudWatchAlarms e execute o seguinte para enviar seu arquivo template.yml do AWS CloudFormation para o GitLab.

git add --all
git commit -m "IM-6 add CloudWatchAlarms repository to gitlab"
git remote add origin git@gitlab.com:pmmquickstartguides/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.

.gitlab-ci.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.

git checkout -b IM-6

Crie o arquivo .gitlab-ci.yml com o seguinte yaml. Isso define um fluxo de trabalho de implementação para seus ambientes de teste, staging e produção.

stages:
  - merge-request
  - test-us-west-1
  - test-us-east-2
  - production-us-west-2
  - production-us-east-1
  - production-ca-central-1

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-6 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 GitLab e acompanhar o que estÔ acontecendo em seu projeto.

git add --all
git commit -m "IM-6 .gitlab-ci.yml to CloudWatchAlarms repo"
git push -u origin IM-6

Clique em IC/CD e, em seguida, em Pipelines para ver o pipeline em execução.

Crie uma solicitação de mesclagem

Crie uma solicitação de mesclagem para implementar em seus ambientes de produção após as implementações do GitLab em seus ambientes de teste.

capturas de tela de criar solicitaƧƵes de mesclagem

Mescle as alterações na linha principal após a conclusão do pipeline de solicitação de mesclagem. Clique em IC/CD e, em seguida, em Pipelines para ver o pipeline de produção em execução.

captura de tela de pipelines de mesclagem

Como testar o alarme

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

captura de tela do teste de alarme

Verifique o Slack para ver se a notificação apareceu.

captura de tela da notificação do slack

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