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.

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.

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 mainlineAssim como com os repositórios anteriores, você deve adicionar chaves de acesso da AWS, configurar ramificações protegidas e configurar ambientes de implementação.
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: 10Defina 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-6Crie 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-1Enviando 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-6Clique 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.

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.

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

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

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