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

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

이 Codelab 정보

subject최종 업데이트: 7월 7, 2023
account_circle작성자: Aron Eidelman

1. 소개

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

가용성 업타임 체크 알림

업타임 체크 알림을 사용하면 서비스에 영향을 줄 수 있는 문제를 빠르게 식별하고 해결할 수 있습니다. 서비스 중단에 대한 알림을 받으면 사용자와 고객에게 미치는 영향을 최소화하기 위한 조치를 취할 수 있습니다.

업타임 체크는 일정 간격으로 발생하며, 이 중 최단 시간은 60초입니다. 60초 이상의 세부 정보가 필요한 경우 비가용성의 추가 지표로 로그 기반 알림을 통해 오류 코드를 동적 이벤트로 모니터링하는 것도 유용할 수 있습니다. 60초 이상의 간격이 허용되는 경우 업타임 체크를 사용하면 추가 구성 없이 서비스를 쉽게 측정할 수 있습니다.

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

업타임 체크를 사용해야 하는 경우에 대한 자세한 내용은 Google Cloud 리소스의 업타임 보장을 참조하세요.

알림 채널로서의 Pub/Sub 주제

Pub/Sub 주제를 Google Cloud Monitoring 알림 채널로 사용하여 Pub/Sub 구독에 알림을 전송할 수 있습니다. 이렇게 하면 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 엔드포인트를 노출하는 간단한 Inventory 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://&lt;somehost&gt;/inventory

[ { &quot;I-1&quot;: 10, &quot;I-2&quot;: 20, &quot;I-3&quot;: 30 }]

https://&lt;somehost&gt;/inventory/I-1

{ &quot;productid&quot;: &quot;I-1&quot;, &quot;qty&quot;: 10}

https://&lt;somehost&gt;/inventory/I-2

{ &quot;productid&quot;: &quot;I-2&quot;, &quot;qty&quot;: 20}

https://&lt;somehost&gt;/inventory/I-200

{ &quot;productid&quot;: I-200, &quot;qty&quot;: -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] 가 사용 설정되지 않았습니다[613162942481]. 사용 설정하고 다시 시도하시겠습니까 (몇 분 정도 소요됨)? (y/N)? Y
  3. 리전을 지정하세요. 31 (us-west-1)을 선택하세요.
  4. 프로젝트에서 API [artifactregistry.googleapis.com] 이 사용 설정되지 않았습니다[613162942481]. 사용 설정하고 다시 시도하시겠습니까 (몇 분 정도 소요됨)? (y/N)? Y
  5. 소스에서 배포하려면 빌드된 컨테이너를 저장할 Artifact Registry Docker 저장소가 필요합니다. [us-west1] 리전에 [cloud-run-source-deploy] 라는 이름의 저장소가 생성됩니다.
  6. Do you want to continue (Y/n)? Y
  7. [my-inventory-api] (예/아니요)에 대한 인증되지 않은 호출을 허용하시겠습니까? Y

결국 소스 코드를 가져와 컨테이너화하여 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 엔드포인트의 다음 URL 3개에 액세스합니다.
  3. <SERVICE_URL>/inventory
  4. <SERVICE_URL>/inventory/I-1
  5. <SERVICE_URL>/inventory/I-100

이전 섹션에서 샘플 API 요청 및 응답과 함께 제공했던 사양에 부합해야 합니다.

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

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

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

2633965c4bc957cc.png

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

33042ae64322ce07.png

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

이제 Google Cloud 운영 제품군부터 살펴보겠습니다.

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. 호스트 이름 : Cloud Run 서비스 URL 부분을 https 없이 입력합니다. 아래 화면에 샘플이 있습니다. 서비스 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에 알림을 보내도록 업타임 체크를 구성했습니다.