Статьи
Обучающие материалы
Интерактивные руководства
Развертывание оповещений AWS CloudWatch с помощью Bitbucket
Уоррен Марусяк
Старший технический эксперт
Чтобы продемонстрировать, как разрабатывать и развертывать приложения, а также управлять ими с помощью Jira Software и различных подключенных инструментов, наша команда создала ImageLabeller — простое демонстрационное приложение на платформе AWS, которое с помощью машинного обучения наносит метки на изображения.
На этой странице мы расскажем, как отслеживать ImageLabeller с помощью Opsgenie. Прежде чем начать, рекомендуем ознакомиться с архитектурой ImageLabeller в качестве контекста.
Добавление репозитория оповещений для интеграции с Opsgenie
Перейдите в Jira и создайте задачу для добавления репозитория оповещений AWS CloudWatch в Bitbucket. В этом примере идентификатор задачи Jira — IM-9.
Перейдите в Bitbucket и нажмите Create (Создать), а затем — Repository (Репозиторий).
Выберите необходимые значения в полях Workspace (Рабочее пространство) и Project (Проект). Задайте mainline в качестве Default branch name (Имя ветки по умолчанию). Нажмите Create repository (Создать репозиторий), чтобы продолжить.
Перейдите в репозиторий CloudWatchAlarms в терминале и выполните следующие команды, чтобы отправить код шаблона AWS CloudFormation в 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
Файл шаблонов оповещений template.yml
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
Задайте скопированный из Opsgenie URL-адрес конечной точки в качестве значения параметра endpoint в разделе subscription для темы SNS. SubmitImageLambdaAlarm отслеживает один показатель от SubmitImage AWS Lambda. Если число вызовов превышает 10 в минуту, срабатывает оповещение.
Файл bitbucket-pipelines.yml для развертывания в AWS
Перейдите в репозиторий CloudWatchAlarms в терминале и создайте ветку с именем, соответствующим идентификатору задачи 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
Помните, что перед запуском конвейеров необходимо включить конвейеры, настроить среды развертывания и добавить ключи доступа AWS в репозиторий.
Отправка в функциональную ветку
Выполните следующие запросы в командной строке, чтобы отправить изменения в ветку IM-9 репозитория CloudWatchAlarms. Включите идентификатор задачи Jira в сообщения о коммитах и имена веток, чтобы позволить интеграции Jira с Bitbucket отслеживать, что происходит в проекте.
git add --all
git commit -m "IM-9 add bitbucket-pipelines.yml to CloudWatchAlarms"
git push -u origin IM-9
Нажмите Pipelines (Конвейеры), а затем — IM-9, чтобы увидеть запущенный конвейер.
Создание запроса pull
Чтобы создать запрос pull, нажмите Pull requests (Запросы pull), а затем — Create pull request (Создать запрос pull). Завершите запрос pull и нажмите Pipelines (Конвейеры), чтобы проследить за развертыванием в рабочую среду.
Тестирование оповещения
Создайте оповещение, вызвав срабатывание только что настроенного оповещения AWS CloudWatch или нажав кнопку Create alert (Создать оповещение).
Браво! Вам удалось настроить ImageLabeller.
Поделитесь этой статьей
Следующая тема
Рекомендуемые статьи
Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.