아티클
튜토리얼
대화형 가이드
GitLab으로 AWS CloudWatch 알람 배포
![Warren Marusiak 얼굴 사진](https://wac-cdn.atlassian.com/dam/jcr:7509aefb-43e8-401d-90fe-0850cbe6bb13/wmarusiak_headshot%20(1).png?cdnVersion=2501)
Warren Marusiak
선임 기술 에반젤리스트
Jira Software 및 다양한 연결된 도구를 사용하여 애플리케이션을 개발, 배포 및 관리하는 방법을 보여주기 위해 저희 팀에서는 머신러닝을 사용하여 이미지에 레이블을 적용하는 간단한 AWS 기반 데모 애플리케이션인 ImageLabeller를 만들었습니다.
이 페이지에서는 Opsgenie로 ImageLabeller를 모니터링하는 방법을 다룹니다. 시작하기 전에 컨텍스트를 알아보도록 ImageLabeller 아키텍처 및 GitLab으로 ImageLabeller 배포 페이지를 읽어보는 것이 좋습니다.
Opsgenie 통합을 위한 알람 리포지토리 추가
Jira로 이동하여 GitLab에 AWS CloudWatch 알람 리포지토리를 추가하기 위한 Jira 이슈를 만듭니다. 이 예에서 Jira 이슈 ID는 IM-6입니다.
![IM 보드 스크린샷](https://wac-cdn.atlassian.com/dam/jcr:ec07a8ca-d476-402f-a720-a6946dc9d75c/jsw_createissueaddrepocloudwatchalarms.png?cdnVersion=2501)
GitLab으로 이동하여 새 프로젝트를 만듭니다. Jira에 연결한 그룹을 사용하도록 프로젝트 URL을 업데이트합니다. 프로젝트 만들기를 클릭합니다.
![GitLab 스크린샷으로 프로젝트 만들기](https://wac-cdn.atlassian.com/dam/jcr:ddb680ec-de20-47e5-9379-0426b73da91f/gitlab_crearteprojectcloudwatch.png?cdnVersion=2501)
터미널에서 CloudWatchAlarms 리포지토리로 이동하고 다음을 실행하여 AWS CloudFormation template.yml 파일을 GitLab으로 푸시합니다.
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
이전 리포지토리와 마찬가지로 AWS 액세스 키를 추가하고 보호되는 브랜치를 구성하고 배포 환경을 설정해야 합니다.
알람 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
SNS 토픽 구독 엔드포인트를 Opsgenie에서 복사한 엔드포인트 URL로 설정합니다. SubmitImageLambdaAlarm은 SubmitImage AWS Lambda에서 방출되는 단일 메트릭을 모니터링합니다. 호출이 10회 이상이면 1분 동안 알람이 울립니다.
AWS에 배포하기 위한 .gitlab-ci.yml
터미널에 있는 CloudWatchAlarms 리포지토리로 이동하여 Jira 이슈 ID의 이름을 딴 브랜치를 만듭니다.
git checkout -b IM-6
다음 yaml로 .gitlab-ci.yml 파일을 만듭니다. 이것은 테스트, 스테이징, 프로덕션 환경을 위한 배포 워크플로를 정의합니다.
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
기능 브랜치로 푸시
명령줄에서 다음을 실행하여 CloudWatchAlarms 리포지토리의 IM-6 브랜치로 변경 사항을 푸시합니다. 커밋 메시지에 Jira 이슈 ID 및 브랜치 이름을 포함하면 Jira GitLab 통합이 프로젝트 진행 상황을 추적하도록 할 수 있습니다.
git add --all
git commit -m "IM-6 .gitlab-ci.yml to CloudWatchAlarms repo"
git push -u origin IM-6
CI/CD를 클릭한 다음 파이프라인을 클릭하여 파이프라인이 실행되는 것을 확인합니다.
병합 요청 만들기
GitLab이 테스트 환경에 배포한 후에 프로덕션 환경에 배포할 병합 요청을 만듭니다.
![병합 요청 만들기 스크린샷](https://wac-cdn.atlassian.com/dam/jcr:8d4e54c1-e8ad-48ae-8813-ab12a446d9c7/gitlab_mergerequestcloudwatch.png?cdnVersion=2501)
병합 요청 파이프라인이 완료된 후에 변경 사항을 메인 라인에 병합합니다. CI/CD를 클릭한 다음 Pipelines를 클릭하여 프로덕션 파이프라인이 실행되는 것을 확인합니다.
![파이프라인 병합 스크린샷](https://wac-cdn.atlassian.com/dam/jcr:4b89d321-2cc8-4301-bcff-6e707ad8fbf1/gitlab_runningproductionpipelinecloudwatch.png?cdnVersion=2501)
알람 테스트
방금 설정한 AWS CloudWatch 알람을 트리거하거나 알림 만들기를 클릭하여 알림을 생성합니다.
![알람 테스트 스크린샷](https://wac-cdn.atlassian.com/dam/jcr:052db568-f3fb-4119-9ebc-8392bd638ed2/opsgenie_testgitlabalarmsrepo.png?cdnVersion=2501)
알림이 나타났는지 Slack을 확인해 보세요.
![Slack 통합 스크린샷](https://wac-cdn.atlassian.com/dam/jcr:188523f6-38fe-4a02-ace6-dc7443a14d8d/opsgenie_slackintegrationnotification.png?cdnVersion=2501)
축하합니다! 잘 해내셨습니다. ImageLabeller가 이제 실행되고 있습니다.
이 문서 공유
다음 토픽
여러분께 도움을 드릴 자료를 추천합니다.
이러한 리소스에 책갈피를 지정하여 DevOps 팀의 유형에 대해 알아보거나 Atlassian에서 DevOps에 대한 지속적인 업데이트를 확인하세요.
![DevOps 일러스트레이션](https://wac-cdn.atlassian.com/dam/jcr:bd9d8b2c-ca36-444f-8595-719cb1990e64/Devops-community.png?cdnVersion=2501)
DevOps 커뮤니티
![DevOps 일러스트레이션](https://wac-cdn.atlassian.com/dam/jcr:297108ea-d232-4368-af51-b53af230c4fe/Simulation-workshop.png?cdnVersion=2501)
DevOps 학습 경로
![맵 일러스트레이션](https://wac-cdn.atlassian.com/dam/jcr:25f6330a-4191-408f-a4e5-2e24bfba67b4/Maturity-model.png?cdnVersion=2501)