알림: Pub/Sub 주제에 대한 업타임 체크

1. 소개

최종 업데이트: 2023년 6월 21일

가용성 업타임 체크 알림

업타임 체크에 대한 알림을 통해 서비스에 영향을 미칠 수 있는 문제를 신속하게 파악하고 해결할 수 있습니다. 서비스 중단 알림을 받으면 사용자 및 고객에게 미치는 영향을 최소화하기 위한 조치를 취할 수 있습니다.

가동시간 확인은 간격으로 발생하며 가장 짧은 간격은 60초입니다. 60초 이상의 세부사항이 필요한 경우 로그 기반 알림을 통해 오류 코드를 동적 이벤트로 모니터링하여 사용할 수 없음을 나타내는 추가 지표로 활용하는 것이 유용할 수 있습니다. 60초 이상의 간격이 허용되는 경우 업타임 체크는 추가 구성이 거의 없이 서비스를 측정하는 간단한 방법입니다.

서비스를 사용할 수 없는 경우 트래픽이 없더라도 업타임 체크에서 문제를 감지합니다. 반면 트래픽은 유지보수, 업그레이드, 심지어 시스템 외부 요인(예: 악천후 또는 사용을 방해하는 스포츠 이벤트)의 영향을 받을 수 있습니다.

가동시간 확인을 사용해야 하는 경우에 대한 자세한 내용은 Google Cloud 리소스의 가동시간 보장을 참고하세요.

Pub/Sub 주제를 알림 채널로 사용

Pub/Sub 주제는 Pub/Sub 구독에 알림을 보내는 Google Cloud Monitoring 알림 채널로 사용할 수 있습니다. 이를 통해 Cloud Monitoring 알림을 서드 파티 알림 서비스를 비롯한 다른 시스템과 통합할 수 있습니다.

Pub/Sub 주제를 알림 채널로 사용하려면 먼저 Pub/Sub 주제와 Pub/Sub 구독을 만들어야 합니다. 그런 다음 Pub/Sub 주제를 대상으로 사용하는 Cloud Monitoring 알림 채널을 만들어야 합니다.

알림이 트리거되면 Cloud Monitoring에서 Pub/Sub 주제로 메시지를 전송합니다. 그러면 Pub/Sub 구독의 구독자가 메시지를 처리하고 적절한 조치를 취할 수 있습니다.

빌드할 항목

이 Codelab에서는 앱을 배포하고, Pub/Sub 주제를 만들고, Pub/Sub 주제를 알림 채널로 사용하는 앱의 업타임 체크 알림을 만듭니다.

학습할 내용

  • Pub/Sub 주제를 만드는 방법
  • 업타임 체크 및 알림을 만드는 방법

이 Codelab에서는 업타임 체크 알림을 만드는 데 중점을 둡니다. 관련 없는 개념과 애플리케이션 코드는 간단히 넘어가고 복사하여 붙여넣을 수 있도록 제공됩니다.

필요한 항목

  • 다음 권한이 있는 Google Cloud 계정
  • Cloud Run 애플리케이션 배포
  • Pub/Sub 주제 만들기
  • 업타임 체크 만들기
  • 알림 만들기

2. 설정

Google Cloud 프로젝트 선택 또는 만들기

기존 프로젝트를 선택하려면 드롭다운을 사용하세요.

b35bf95b8bf3d5d8.png

Google Cloud에서 새 프로젝트를 만들려면 다음 단계를 따르세요.

  1. Google Cloud Platform 콘솔로 이동합니다.
  2. 프로젝트 만들기 버튼을 클릭합니다.
  3. 프로젝트 이름을 입력하세요.
  4. 프로젝트의 결제 계정을 선택합니다.
  5. 만들기 버튼을 클릭합니다.

프로젝트가 생성되고 프로젝트 대시보드로 이동합니다. 여기에서 Google Cloud 서비스 사용을 시작할 수 있습니다.

각 단계에 대한 추가 세부정보는 다음과 같습니다.

  • 이름: 프로젝트 이름은 조직 내에서 고유해야 합니다.
  • 결제 계정: 기존 결제 계정을 사용하거나 새 계정을 만들 수 있습니다.
  • 만들기: 필요한 정보를 모두 입력한 후 만들기 버튼을 클릭하여 프로젝트를 만듭니다.

자세한 내용은 프로젝트 생성에 관한 Google Cloud 문서를 참고하세요.

3. API 애플리케이션 배포

샘플 애플리케이션 또는 API는 무엇에 관한 것인가요?

애플리케이션은 인벤토리 항목을 나열하고 특정 항목 인벤토리 수를 가져오는 몇 가지 작업이 있는 REST API 엔드포인트를 노출하는 간단한 인벤토리 API 애플리케이션입니다.

API를 배포하고 https://<somehost>에서 호스팅된다고 가정하면 다음과 같이 API 엔드포인트에 액세스할 수 있습니다.

https://<somehost>/inventory

그러면 재고 수준이 있는 모든 제품 항목이 나열됩니다.

https://<somehost>/inventory/{productid}

이렇게 하면 productid와 해당 제품의 재고 수준이 포함된 단일 레코드가 제공됩니다.

반환된 응답 데이터는 JSON 형식입니다.

참고: 이 API 애플리케이션은 데모용이며 안전하고 강력한 API 구현을 나타내지 않습니다. 이 앱은 Google Cloud 운영이라는 실습의 주요 목적을 살펴볼 수 있도록 빠르게 사용할 수 있도록 설계되었습니다.

샘플 데이터 및 API 요청/응답

애플리케이션은 간단하게 유지하기 위해 백엔드에서 데이터베이스로 구동되지 않습니다. 여기에는 3개의 샘플 제품 ID와 재고 수준이 포함되어 있습니다.

제품 ID

보유 인벤토리 수준

I-1

10

I-2

20

I-3

30

샘플 API 요청 및 응답은 아래와 같습니다.

API 요청

API 응답

https://<somehost>/inventory

[ { "I-1": 10, "I-2": 20, "I-3": 30 }]

https://<somehost>/inventory/I-1

{ "productid": "I-1", "qty": 10}

https://<somehost>/inventory/I-2

{ "productid": "I-2", "qty": 20}

https://<somehost>/inventory/I-200

{ "productid": I-200, "qty": -1}

저장소 클론

Google Cloud를 노트북에서 원격으로 실행할 수 있지만, 이 Codelab에서는 Cloud에서 실행되는 명령줄 환경인 Google Cloud Shell을 사용합니다.

GCP 콘솔에서 오른쪽 상단 툴바의 Cloud Shell 아이콘을 클릭합니다.

bce75f34b2c53987.png

환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다. 완료되면 다음과 같이 표시됩니다.

f6ef2b5f13479f3a.png

이 가상 머신에는 필요한 개발 도구가 모두 포함되어 로드됩니다. 영구적인 5GB 홈 디렉터리를 제공하고 Google Cloud에서 실행되므로 네트워크 성능과 인증이 크게 개선됩니다. 이 실습의 모든 작업은 브라우저만으로 수행할 수 있습니다.

gcloud 설정

Cloud Shell에서 프로젝트 ID를 설정하고 PROJECT_ID 변수로 저장합니다.

PROJECT_ID=[YOUR-PROJECT-ID]

gcloud config set project $PROJECT_ID

이제 다음 명령어를 실행합니다.

$ git clone https://github.com/rominirani/cloud-code-sample-repository.git

이렇게 하면 이 폴더에 cloud-code-sample-repository라는 폴더가 생성됩니다.

(선택사항) Cloud Shell에서 애플리케이션 실행

다음 단계에 따라 로컬에서 애플리케이션을 실행할 수 있습니다.

  1. 터미널에서 다음 명령어를 통해 Python 버전의 API로 이동합니다.

$ cd cloud-code-sample-repository

$ cd python-flask-api

  1. 터미널에서 다음 명령어를 제공합니다. 작성 시점에는 Cloud Shell에 Python 3.9.x가 설치되어 있으며 기본 버전을 사용합니다. 노트북에서 로컬로 실행할 계획이라면 Python 3.8 이상을 사용하면 됩니다.

$ python app.py

  1. 다음 명령어를 실행하여 Python 서버를 로컬로 시작할 수 있습니다.

1f798fbddfdc2c8e.png 46edf454cc70c5a6.png

포트 8080에서 미리보기를 클릭합니다. 5. 그러면 브라우저 창이 열립니다. 404 오류가 표시되지만 괜찮습니다. URL을 수정하여 호스트 이름 뒤에 /inventory만 오도록 변경합니다.

예를 들어 내 컴퓨터에서는 다음과 같이 표시됩니다.

https://8080-cs-557561579860-default.cs-asia-southeast1-yelo.cloudshell.dev/inventory

그러면 앞에서 설명한 대로 인벤토리 항목 목록이 표시됩니다.

709d57ee2f0137e4.png

  1. 이제 터미널로 이동하여 Ctrl-C를 눌러 서버를 중지할 수 있습니다.

애플리케이션 배포

이제 이 API 애플리케이션을 Cloud Run에 배포합니다. 이 프로세스에서는 gcloud 명령줄 클라이언트를 사용하여 코드를 Cloud Run에 배포하는 명령어를 실행했습니다.

터미널에서 다음 gcloud 명령어를 실행합니다.

$ gcloud run deploy --source .

그러면 여러 질문이 표시되며 아래에 몇 가지 사항이 언급됩니다.

  1. 서비스 이름 (python-flask-api): 이 기본값을 사용하거나 my-inventory-api와 같은 이름을 선택합니다.
  2. API [run.googleapis.com] not enabled on project [613162942481]. 사용 설정하고 다시 시도하시겠어요 (몇 분 정도 걸릴 수 있음)? (y/N)? 예
  3. 리전을 지정하세요. 31 (us-west-1)을 선택하세요.
  4. API [artifactregistry.googleapis.com] not enabled on project [613162942481]. 사용 설정하고 다시 시도하시겠어요 (몇 분 정도 걸릴 수 있음)? (y/N)? 예
  5. 소스에서 배포하려면 빌드된 컨테이너를 저장할 Artifact Registry Docker 저장소가 필요합니다. [us-west1] 리전에 [cloud-run-source-deploy] 라는 저장소가 생성됩니다.
  6. Do you want to continue (Y/n)? 예
  7. 인증되지 않은 호출을 [my-inventory-api]에 허용하시겠습니까? (Y/N) 예

결국 이로 인해 소스 코드를 가져와 컨테이너화하고 Artifact Registry에 푸시한 다음 Cloud Run 서비스 + 버전을 배포하는 프로세스가 시작됩니다. 이 프로세스에는 3~4분이 걸릴 수 있으므로 기다려야 하며, 서비스 URL이 표시되면서 프로세스가 완료되는 것을 확인할 수 있습니다.

샘플 실행은 다음과 같습니다.

87ba8dbf88e8cfa4.png

애플리케이션 테스트

이제 Cloud Run에 애플리케이션을 배포했으므로 다음과 같이 API 애플리케이션에 액세스할 수 있습니다.

  1. 이전 단계의 서비스 URL을 기록해 둡니다. 예를 들어 내 설정에서는 https://my-inventory-api-bt2r5243dq-uw.a.run.app로 표시됩니다. 이를 <SERVICE_URL>라고 하겠습니다.
  2. 브라우저를 열고 API 엔드포인트의 다음 3개 URL에 액세스합니다.
  3. <SERVICE_URL>/inventory
  4. <SERVICE_URL>/inventory/I-1
  5. <SERVICE_URL>/inventory/I-100

이전 섹션에서 샘플 API 요청 및 응답과 함께 제공된 사양을 따라야 합니다.

Cloud Run에서 서비스 세부정보 가져오기

서버리스 컴퓨팅 환경인 Cloud Run에 API 서비스를 배포했습니다. 언제든지 Google Cloud 콘솔을 통해 Cloud Run 서비스를 방문할 수 있습니다.

기본 메뉴에서 Cloud Run으로 이동합니다. 그러면 Cloud Run에서 실행 중인 서비스 목록이 표시됩니다. 방금 배포한 서비스가 표시됩니다. 선택한 이름에 따라 다음과 같이 표시됩니다.

2633965c4bc957cc.png

서비스 이름을 클릭하여 세부정보를 확인합니다. 샘플 세부정보는 아래와 같습니다.

33042ae64322ce07.png

URL을 확인하세요. 브라우저에 입력하여 방금 배포한 인벤토리 API에 액세스할 수 있는 서비스 URL입니다. 측정항목 및 기타 세부정보를 확인하세요.

지금 Google Cloud Operations Suite를 시작해 보겠습니다.

4. 알림 알림을 수신할 Pub/Sub 주제 만들기

Pub/Sub 주제를 만들려면 Google Cloud 콘솔에서 다음 단계를 따르세요.

  1. 검색창에서 Pub/Sub를 검색하고 Pub/Sub로 이동합니다. 935028bd8f6328ef.png
  2. 아직 주제 탭에 있지 않다면 클릭합니다. 7fd8bf91386a88fd.png
  3. 주제 만들기 버튼을 클릭합니다. cd9d197f9023c41b.png
  4. 주제 이름을 입력합니다.

173f313b4a3c4934.png

  1. 만들기 버튼을 클릭합니다. ca9a02477da21a44.png
  2. 복사 아이콘 버튼을 사용하여 주제 이름을 복사합니다. 다음 섹션에서 필요합니다.

20848252ee83df93.png

5. 업타임 체크 만들기

Google Cloud Run 애플리케이션의 업타임 체크를 만들려면 다음 단계를 따르세요.

  1. Google Cloud Platform 콘솔로 이동합니다.
  2. 모니터링 탭을 클릭합니다.
  3. 업타임 체크 탭을 클릭합니다.
  4. 페이지 상단에서 업타임 체크 만들기 버튼을 클릭합니다.

96561799ca500777.png

  1. 다음 값을 사용합니다.
  2. 프로토콜 : HTTPS
  3. 리소스 유형 : URL
  4. 호스트 이름 : https 없이 Cloud Run 서비스 URL 부분을 입력합니다. 샘플은 아래 화면에 나와 있습니다. 서비스 URL을 잘 모르는 경우 기본 Google Cloud 콘솔에서 Cloud Run으로 이동하고 앞에서 설명한 대로 Cloud Run 서비스의 세부정보로 이동하여 서비스 URL을 가져옵니다.
  5. 경로 : healthy
  6. 업타임 체크 빈도: 1분

342865c6d921ff41.png

  1. 계속을 클릭합니다.
  2. 콘텐츠 일치 사용 설정됨으로 전환합니다.
  3. 응답 콘텐츠에 'All Izz Well'을 입력합니다. 이 문자열은 완전한 응답을 전송할 때 애플리케이션에 이미 있습니다.
  4. Keep

6c9ad336b5479478.png

  1. 허용되는 HTTP 응답 코드응답 코드 클래스로 설정하고 2xx를 유일한 응답 코드 클래스로 유지합니다. 이렇게 하면 2xx 응답 코드만 문자열에 대해 평가되고 그 외의 모든 항목은 자동으로 실패한 검사로 간주됩니다. 5a75d8a9e8a11dd4.png
  2. 계속을 클릭합니다.
  3. Cloud Pub/Sub 주제를 알림 채널로 선택하고 확인을 클릭합니다.

d00db9f6ac56d07c.png

  1. 계속을 클릭합니다.
  2. 알아보기 쉬운 제목 추가 d639135da780cce3.png
  3. 테스트 버튼을 클릭합니다.

968753a66ed43a75.png

  1. 준비가 되면 검토하고 만들기 버튼을 클릭합니다. 72e5e2081a36d902.png

업타임 체크가 생성되고 Cloud Run 애플리케이션 모니터링이 시작됩니다. 업타임 체크 탭에서 업타임 체크 상태를 확인할 수 있습니다.

3fd026b0c07ef4ec.png

6. 축하합니다

축하합니다. Pub/Sub에 알림을 전송하도록 업타임 체크를 성공적으로 구성했습니다.