Bereitstellen von AWS CloudWatch-Warnmeldungen mit Bitbucket
Warren Marusiak
Senior Technical Evangelist
Um zu demonstrieren, wie Anwendungen mit Jira Software und verschiedenen verbundenen Tools entwickelt, bereitgestellt und verwaltet werden können, hat unser Team ImageLabeller entwickelt. Dabei handelt es sich um eine einfache Demo-Anwendung, die auf AWS basiert und maschinelles Lernen nutzt, um Images mit Stichwörtern zu versehen.
Auf dieser Seite wird das Überwachen von ImageLabeller mit Opsgenie behandelt. Wir empfehlen dir, vorab die Seite zur ImageLabeller-Architektur zu lesen, um mehr über den Kontext zu erfahren.
Hinzufügen eines Warnmeldungs-Repositorys für die Opsgenie-Integration
Erstelle in Jira einen neuen Jira-Vorgang für das Hinzufügen eines AWS CloudWatch-Warnmeldungs-Repositorys zu Bitbucket. In diesem Beispiel lautet die Jira-Vorgangs-ID "IM-9".
Klicke in Bitbucket auf Erstellen und dann auf Repository.
Wähle den jeweiligen Arbeitsbereich und das richtige Projekt aus. Lege unter Standard-Branchname den Namen "mainline" fest. Klicke auf Repository erstellen, um fortzufahren.
Wechsle in deinem Terminal zum Repository "CloudWatchAlarms" und führe den folgenden Befehl aus, um deinen AWS CloudFormation-Vorlagencode an Bitbucket zu 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" für Warnmeldungen
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
Setze den Endpunkt für das Abonnement des SNS-Themas auf die Endpunkt-URL, die du aus Opsgenie kopiert hast. "SubmitImageLambdaAlarm" überwacht eine einzelne Metrik, die vom AWS Lambda SubmitImage ausgegeben wird. Wenn mehr als 10 Aufrufe pro Minute erfolgen, wird die Warnmeldung ausgelöst.
"bitbucket-pipelines.yml" für das Bereitstellen in AWS
Wechsle in deinem Terminal zum Repository "CloudWatchAlarms" und erstelle einen Branch, den du nach der Jira-Vorgangs-ID benennst.
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
Denke daran, dass du Pipelines aktivieren, Deployment-Umgebungen einrichten und dem Repository AWS-Zugriffsschlüssel hinzufügen musst, bevor Pipelines ausgeführt werden können.
Pushen an einen Feature Branch
Führe über die Befehlszeile den nachfolgend angegebenen Befehl aus, um deine Änderungen an den Branch "IM-9" des CloudWatchAlarms-Repositorys zu pushen. Füge die Jira-Vorgangs-ID in Commit-Nachrichten und Branch-Namen ein, damit die Integration zwischen Jira und Bitbucket die Änderungen am Projekt verfolgen kann.
git add --all
git commit -m "IM-9 add bitbucket-pipelines.yml to CloudWatchAlarms"
git push -u origin IM-9
Klicke auf Pipelines und dann auf IM-9, um die laufende Pipeline anzuzeigen.
Pull Requests erstellen
Um eine Pull-Anfrage zu erstellen, klicke auf Pull-Anfragen und dann auf Pull-Anfrage erstellen. Schließe die Pull-Anfrage ab und klicke dann auf "Pipelines", um das Produktions-Deployment anzuzeigen.
Testen der Warnmeldung
Generiere eine Warnmeldung, indem du die gerade eingerichtete AWS CloudWatch-Warnmeldung auslöst oder auf "Create alert" (Warnmeldung erstellen) klickst.
Bravo! Du hast es geschafft. ImageLabeller ist jetzt betriebsbereit.
Diesen Artikel teilen
Nächstes Thema
Lesenswert
Füge diese Ressourcen deinen Lesezeichen hinzu, um mehr über DevOps-Teams und fortlaufende Updates zu DevOps bei Atlassian zu erfahren.