Artykuły
Samouczki
Interaktywne przewodniki
Wdrażanie alarmów AWS CloudWatch za pomocą Bitbucket
Warren Marusiak
Starszy propagator techniczny
Aby zademonstrować sposób opracowywania i wdrażania aplikacji oraz zarządzania nimi przy użyciu Jira Software oraz różnych połączonych narzędzi, nasz zespół utworzył ImageLabeller, prostą aplikację demonstracyjną opartą na usłudze AWS, która wykorzystuje uczenie maszynowe do oznaczania etykietami obrazów.
Na tej stronie opisano, jak monitorować aplikację ImageLabeller przy użyciu Opsgenie. Przed rozpoczęciem najlepiej zapoznać się ze stroną na temat architektury aplikacji ImageLabeller, aby uzyskać kontekst.
Dodawanie repozytorium alarmów na potrzeby integracji z Opsgenie
Przejdź do systemu Jira i utwórz nowe zgłoszenie Jira dotyczące dodania repozytorium alarmów AWS CloudWatch do Bitbucket. W tym przykładzie identyfikator zgłoszenia Jira to IM-9.
Przejdź do Bitbucket i kliknij kolejno Create (Utwórz) i Repository (Repozytorium).
Wybierz odpowiednie ustawienia w polach Workspace (Przestrzeń robocza) i Project (Projekt). W polu Default branch name (Nazwa gałęzi domyślnej) wpisz mainline. Kliknij przycisk Create repository (Utwórz repozytorium), aby kontynuować.
W terminalu przejdź do repozytorium CloudWatchAlarms i uruchom poniższe polecenie, aby wypchnąć kod szablonu AWS CloudFormation do Bitbucket.
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
Plik template.yml alarmów
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
Ustaw punkt końcowy subskrypcji tematu SNS na adres URL punktu końcowego skopiowany z Opsgenie. SubmitImageLambdaAlarm monitoruje jeden wskaźnik emitowany przez funkcję AWS Lambda SubmitImage. Jeśli liczba wywołań w ciągu minuty przekroczy 10, zostanie wygenerowany alarm.
Plik bitbucket-pipelines.yml wdrażania w AWS
Przejdź do repozytorium CloudWatchAlarms w terminalu i utwórz gałąź o nazwie zgodnej z identyfikatorem zgłoszenia Jira.
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
Pamiętaj, że przed uruchomieniem pipeline'ów musisz je włączyć, a następnie skonfigurować środowiska wdrożeniowe i dodać klucze dostępu AWS do repozytorium.
Wypychanie do gałęzi funkcji
Wykonaj poniższą instrukcję z poziomu wiersza polecenia, aby wypchnąć zmiany do gałęzi IM-9 repozytorium CloudWatchAlarms. Uwzględnij identyfikator zgłoszenia Jira w komunikatach commita oraz nazwach gałęzi, aby wykorzystać integrację systemu Jira z Bitbucket do śledzenia, co dzieje się z Twoim projektem.
git add --all
git commit -m "IM-9 add bitbucket-pipelines.yml to CloudWatchAlarms"
git push -u origin IM-9
Kliknij Pipelines (Pipeline'y), a następnie IM-9, aby zobaczyć uruchomiony pipeline.
Tworzenie pull requestu
Aby utworzyć pull request, kliknij Pull requests (Pull requesty), a następnie przycisk Create pull request (Utwórz pull request). Zakończ pull request i kliknij Pipelines (Pipeline'y), aby zobaczyć wdrożenie produkcyjne.
Testowanie alarmu
Wygeneruj alert, wyzwalając skonfigurowany przed chwilą alarm AWS CloudWatch lub klikając przycisk Create alert (Utwórz alert).
Brawo! Udało się. Aplikacja ImageLabeller już działa.
Udostępnij ten artykuł
Następny temat
Zalecane lektury
Dodaj te zasoby do zakładek, aby dowiedzieć się więcej na temat rodzajów zespołów DevOps lub otrzymywać aktualności na temat metodyki DevOps w Atlassian.