Artikelen
Tutorials
Interactieve handleidingen
Implementeer AWS CloudWatch-alarmen met Bitbucket
Warren Marusiak
Senior Technical Evangelist
Om te demonstreren hoe je toepassingen ontwikkelt, implementeert en beheert met behulp van Jira Software en verschillende bijbehorende tools, heeft ons team ImageLabeller aangemaakt, een eenvoudige demotoepassing gebouwd op AWS die gebruikmaakt van machine learning om labels op afbeeldingen aan te brengen.
Op deze pagina wordt beschreven hoe je ImageLabeller monitort met Opsgenie. We raden je aan om, voordat je begint, de pagina ImageLabeller-architectuur te lezen voor meer context.
Voeg een repository voor alarmen toe voor Opsgenie-integratie
Ga naar Jira en maak een nieuwe Jira-issue door de AWS CloudWatch-repository voor alarmen toe te voegen aan Bitbucket. In dit voorbeeld is de Jira-issue-ID IM-9.
Ga naar Bitbucket, klik op Aanmaken en vervolgens op Repository.
Selecteer de juiste Workspace en het juiste Project. Stel de standaardnaam van de branch in op mainline. Klik op Repository aanmaken om verder te gaan.
Ga naar je CloudWatchAlarms-repository in je terminal en voer het volgende uit om je AWS CloudFormation-sjablooncode naar Bitbucket te pushen.
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 voor alarmen
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
Stel het eindpunt van het abonnement op SNS-onderwerpen in op de eindpunt-URL die je van Opsgenie hebt gekopieerd. Het SubmitImageLambdaAlarm monitort één statistiek die wordt uitgezonden door de submitImage AWS Lambda. Als er binnen een minuut meer dan 10 aanroepingen zijn, wordt er alarm geslagen.
bitbucket-pipelines.yml voor implementatie in AWS
Ga naar je CloudWatchAlarms-repository in je terminal en maak een branch aan die vernoemd is naar je Jira-issue-ID.
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
Vergeet niet dat je pipelines moet inschakelen, implementatieomgevingen moet instellen en AWS-toegangssleutels aan de repository moet toevoegen voordat de pipelines uitgevoerd kunnen worden.
Naar een functie-branch pushen
Voer vanaf de opdrachtregel het volgende uit om je wijzigingen naar de IM-9-branch van je CloudWatchAlarms-repository te pushen. Vermeld de Jira-issue-ID in commit-berichten en branchnamen om de Jira Bitbucket-integratie mogelijk te maken om bij te houden wat er in je project gebeurt.
git add --all
git commit -m "IM-9 add bitbucket-pipelines.yml to CloudWatchAlarms"
git push -u origin IM-9
Klik op Pipelines en vervolgens op IM-9 om de lopende pipeline te zien.
Een pull-aanvraag aanmaken
Klik op Pull requests en vervolgens op Pull request aanmaken om een pull request te maken. Voltooi de pull request en klik op Pipelines om de productie-implementatie te bekijken.
Het alarm testen
Genereer een melding door het AWS CloudWatch-alarm te activeren dat je zojuist hebt ingesteld, of door te klikken op Melding aanmaken.
Fantastisch! Het is je gelukt. ImageLabeller is nu actief.
Deel dit artikel
Volgend onderwerp
Aanbevolen artikelen
Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.