Close

Implementeer AWS CloudWatch-alarmen met Bitbucket

Profielfoto van Warren Marusiak
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.

Screenshot Opsgenie-alarmen toevoegen

Ga naar Bitbucket, klik op Aanmaken en vervolgens op Repository.

screenshot van de repository's

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.

screenshot repository aanmaken

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.

screenshots IM-9 lopende pipelines

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.

screenshots pull requests aanmaken

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.

screenshot alarmen bekijken

Fantastisch! Het is je gelukt. ImageLabeller is nu actief.

Warren Marusiak
Warren Marusiak

Warren is a Canadian developer from Vancouver, BC with over 10 years of experience. He came to Atlassian from AWS in January of 2021.


Deel dit artikel

Aanbevolen artikelen

Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.

Toelichting DevOps

DevOps-community

Toelichting DevOps

DevOps-leertraject

Afbeelding van kaart

Gratis aan de slag

Meld je aan voor onze DevOps-nieuwsbrief

Thank you for signing up