Implemente alarmes do AWS CloudWatch com o Bitbucket
![Foto de rosto de Warren Marusiak](https://wac-cdn.atlassian.com/dam/jcr:7509aefb-43e8-401d-90fe-0850cbe6bb13/wmarusiak_headshot%20(1).png?cdnVersion=2545)
Warren Marusiak
Evangelista tecnológico sênior
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](https://wac-cdn.atlassian.com/dam/jcr:c75dad73-8773-4cae-9182-5206f7e50abc/jsw_issueaddawsalarmsbitbucket.png?cdnVersion=2545)
Vá para o Bitbucket e clique em Criar e depois em Repositório.
![captura de tela dos repositórios](https://wac-cdn.atlassian.com/dam/jcr:769bcd52-1077-4816-8574-d5ab7e86ab18/bbc_createrepository1.png?cdnVersion=2545)
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](https://wac-cdn.atlassian.com/dam/jcr:e0007eb5-6c21-4c50-8106-4045ed67887a/bbc_createrepositorycloudwatchalarms.png?cdnVersion=2545)
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](https://wac-cdn.atlassian.com/dam/jcr:f8dcbbc8-b7fe-4e72-9684-b759edbb2fac/bbc_seepipelinecloudwatchalarms.png?cdnVersion=2545)
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](https://wac-cdn.atlassian.com/dam/jcr:f251fcf2-c0a2-4059-b16b-4c88db3b809e/bbc_createpullrequestcloudwatchalarms.png?cdnVersion=2545)
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](https://wac-cdn.atlassian.com/dam/jcr:f06384db-c4a8-493d-813d-f9fe26d5fa56/opsgenie_testawscloudwatchalarms.png?cdnVersion=2545)
Parabéns! Você conseguiu. O ImageLabeller agora está instalado e funcionando.
Compartilhe este artigo
Próximo tópico
Leitura recomendada
Marque esses recursos para aprender sobre os tipos de equipes de DevOps ou para obter atualizações contínuas sobre DevOps na Atlassian.
![Ilustração do DevOps](https://wac-cdn.atlassian.com/dam/jcr:bd9d8b2c-ca36-444f-8595-719cb1990e64/Devops-community.png?cdnVersion=2545)
Comunidade de DevOps
![Ilustração do DevOps](https://wac-cdn.atlassian.com/dam/jcr:297108ea-d232-4368-af51-b53af230c4fe/Simulation-workshop.png?cdnVersion=2545)
Caminho de aprendizagem de DevOps
![Ilustração do mapa](https://wac-cdn.atlassian.com/dam/jcr:25f6330a-4191-408f-a4e5-2e24bfba67b4/Maturity-model.png?cdnVersion=2545)