Artikelen
Tutorials
Interactieve handleidingen
Implementeer AWS CloudWatch-alarmen met GitLab
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's ImageLabeller-architectuur en ImageLabeller implementeren met GitLab 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 GitLab. In dit voorbeeld is de Jira-issue-ID IM-6.
Ga naar GitLab en maak een nieuw project. Werk de URL van het project bij om de groep te gebruiken die je aan Jira hebt gekoppeld. Klik op Project aanmaken.
Ga in je terminal naar je CloudWatchAlarms-repository en voer het volgende uit om je template.yml-bestand van AWS CloudFormation naar GitLab te pushen.
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
Net als bij eerdere repository's moet je AWS-toegangssleutels toevoegen, beveiligde branches configureren en implementatieomgevingen instellen.
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.
.gitlab-ci.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.
git checkout -b IM-6
Maak een .gitlab-ci.yml-bestand met de volgende yaml. Hierdoor wordt een implementatieworkflow voor je test-, staging- en productieomgevingen gedefinieerd.
stages:
- merge-request
- test-us-west-1
- test-us-east-2
- production-us-west-2
- production-us-east-1
- production-ca-central-1
merge-request-pipeline-job:
stage: merge-request
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
script:
- echo "This pipeline always succeeds and enables merge."
- echo true
deploy-test-us-west-1:
stage: test-us-west-1
environment: test-us-west-1
rules:
- if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE != "merge_request_event"
image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
script:
- export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
- export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
- aws cloudformation deploy --region us-west-1 --template-file template.yml --stack-name OpenDevOpsAlarms
deploy-test-us-east-2:
stage: test-us-east-2
environment: test-us-east-2
rules:
- if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE != "merge_request_event"
image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
script:
- export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
- export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
- aws cloudformation deploy --region us-east-2 --template-file template.yml --stack-name OpenDevOpsAlarms
deploy-production-us-west-2:
stage: production-us-west-2
environment: production-us-west-2
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE != "merge_request_event"
image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
script:
- export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
- export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
- aws cloudformation deploy --region us-west-2 --template-file template.yml --stack-name OpenDevOpsAlarms
deploy-production-us-east-1:
stage: production-us-east-1
environment: production-us-east-1
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE != "merge_request_event"
image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
script:
- export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
- export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
- aws cloudformation deploy --region us-east-1 --template-file template.yml --stack-name OpenDevOpsAlarms
deploy-production-ca-central-1:
stage: production-ca-central-1
environment: production-ca-central-1
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE != "merge_request_event"
image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
script:
- export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
- export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
- aws cloudformation deploy --region us-east-2 --template-file template.yml --stack-name OpenDevOpsAlarms
Naar een functie-branch pushen
Voer vanaf de opdrachtregel het volgende uit om je wijzigingen naar de IM-6-branch van je CloudWatchAlarms-repository te pushen. Vermeld de Jira-issue-ID in commit-berichten en branchnamen om de Jira GitLab-integratie mogelijk te maken om bij te houden wat er in je project gebeurt.
git add --all
git commit -m "IM-6 .gitlab-ci.yml to CloudWatchAlarms repo"
git push -u origin IM-6
Klik op CI/CD en vervolgens op Pipelines om te zien hoe de pipeline draait.
Maak een samenvoegingsverzoek aan
Dien een samenvoegingsverzoek in om te implementeren in je productieomgevingen nadat GitLab in je testomgevingen is geïmplementeerd.
Voeg de wijzigingen samen naar de mainline nadat de pipeline voor samenvoegingsverzoeken is voltooid. Klik op CI/CD en vervolgens op Pipelines om de lopende productiepipeline te zien.
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.
Controleer Slack om te zien of de melding is verschenen.
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.