Implementeer AWS CloudWatch-alarmen met GitLab

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 mainlineNet 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: 10Stel 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-6Maak 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-1Naar 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-6Klik 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.