Cloud 운영 제품군 소개

1. 소개

최종 업데이트: 2023년 7월 28일

Google Cloud 운영 제품군이란 무엇인가요?

Google Cloud 운영 제품군은 Google Cloud 환경에서 애플리케이션 성능을 모니터링하고 문제를 해결하며 개선할 수 있는 플랫폼입니다. Cloud 운영 제품군의 핵심 요소에는 Cloud Monitoring, Cloud Logging, Cloud Tracing이 있습니다.

동영상에서 Google Cloud 운영에 대한 대략적인 개요를 확인할 수 있습니다.

빌드할 항목

이 Codelab에서는 Google Cloud에 샘플 API를 배포합니다. 그런 다음 API를 통해 Cloud Monitoring의 여러 기능을 탐색하고 구성합니다.

학습할 내용

  • Google Cloud의 Cloud Shell을 사용하여 Cloud Run에 샘플 애플리케이션을 배포합니다.
  • 대시보드, 알림, 업타임 체크, SLI/SLO 모니터링 등과 같은 Google Cloud Monitoring 기능 사용

필요한 항목

  • 최신 버전의 Chrome (74 이상)
  • Google Cloud 계정 및 Google Cloud 프로젝트

2. 설정 및 요구사항

자습형 환경 설정

아직 Google 계정(Gmail 또는 Google Apps)이 없으면 계정을 만들어야 합니다. Google Cloud Platform Console(console.cloud.google.com)에 로그인하고 새 프로젝트를 만듭니다.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

c20a9642aaa18d11.png

  • 프로젝트 이름은 이 프로젝트 참가자의 표시 이름입니다. 이는 Google API에서 사용하지 않는 문자열이며 언제든지 업데이트할 수 있습니다.
  • 프로젝트 ID는 모든 Google Cloud 프로젝트에서 고유해야 하며 변경할 수 없습니다 (설정된 후에는 변경할 수 없음). Cloud 콘솔이 고유한 문자열을 자동으로 생성합니다. 보통은 그게 뭔지 상관하지 않습니다. 대부분의 Codelab에서는 프로젝트 ID (일반적으로 PROJECT_ID로 식별됨)를 참조해야 합니다. 생성된 ID가 마음에 들지 않으면 무작위로 다른 ID를 생성할 수 있습니다. 또는 직접 시도해 보고 사용 가능한지 확인할 수도 있습니다. 이 단계 이후에는 변경할 수 없으며 프로젝트 기간 동안 유지됩니다.
  • 참고로 세 번째 값은 일부 API에서 사용하는 프로젝트 번호입니다. 이 세 가지 값에 대한 자세한 내용은 문서를 참고하세요.

주의: 프로젝트 ID는 전역적으로 고유해야 하며 선택한 후에는 다른 사람이 사용할 수 없습니다. 해당 ID의 유일한 사용자입니다. 프로젝트가 삭제되더라도 ID는 다시 사용할 수 없습니다.

  1. 다음으로 Cloud 리소스/API를 사용하려면 Cloud 콘솔에서 결제를 사용 설정해야 합니다. 이 Codelab 실행에는 많은 비용이 들지 않습니다. 이 튜토리얼이 끝난 후에 요금이 청구되지 않도록 리소스를 종료하려면 만든 리소스를 삭제하거나 전체 프로젝트를 삭제하면 됩니다. Google Cloud 새 사용자에게는 미화 $300 상당의 무료 체험판 프로그램에 참여할 수 있는 자격이 부여됩니다.

Google Cloud Shell 설정

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

Cloud 콘솔에서 Cloud Shell을 활성화하려면 'Cloud Shell 활성화'를 클릭하기만 하면 됩니다. 환경을 프로비저닝하고 연결하는 데 몇 분 정도 걸립니다.

30c26f30d17b3d46.png

이전에 Cloud Shell을 시작한 적이 없는 경우 기능을 설명하는 중간 화면 (스크롤해야 볼 수 있는 부분)이 표시됩니다. 이 경우 계속을 클릭하면 다시 표시되지 않습니다. 이 일회성 화면은 다음과 같습니다.

92662c6a846a5c.png

Cloud Shell을 프로비저닝하고 연결하는 데 몇 분 정도만 걸립니다.

9f0e51b578fecce5.png

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

Cloud Shell에 연결되면 인증이 완료되었고 프로젝트가 해당 프로젝트 ID로 이미 설정된 것을 볼 수 있습니다.

Cloud Shell에서 다음 명령어를 실행하여 인증되었는지 확인합니다.

Cloud Shell에 연결되면 사용자 인증이 이미 완료되었고 프로젝트가 내 PROJECT_ID에 설정되어 있음을 확인할 수 있습니다.

gcloud auth list

명령어 결과

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

명령어 결과

[core]
project = <PROJECT_ID>

어떤 이유로든 프로젝트가 설정되지 않았으면 다음 명령어를 실행하면 됩니다.

gcloud config set project <PROJECT_ID>

또한 Cloud Shell은 기본적으로 이후 명령어를 실행할 때 유용할 수 있는 몇 가지 환경 변수를 설정합니다.

echo $GOOGLE_CLOUD_PROJECT

명령어 결과

<PROJECT_ID>

샘플 애플리케이션

이 프로젝트에 필요한 모든 것을 Git 저장소에 넣었습니다. 저장소에는 몇 가지 샘플 애플리케이션이 포함되어 있으며, 이 실습에서 이러한 애플리케이션을 사용할 수 있습니다.

Git 저장소 링크: https://github.com/rominirani/cloud-code-sample-repository

3. API 애플리케이션 배포

샘플 애플리케이션 또는 API의 주제는 무엇인가요?

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

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

  • https://&lt;somehost&gt;/inventory

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

  • https://&lt;somehost&gt;/inventory/{productid}

이렇게 하면 해당 제품의 productid 및 보유 중인 인벤토리 수준이 포함된 단일 기록이 제공됩니다.

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

샘플 데이터 및 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 서버를 로컬에서 시작할 수 있습니다.

26570f586acaeacf.png

  1. 이렇게 하면 포트 8080에서 서버가 시작되고 Cloud Shell의 웹 미리보기 기능을 통해 로컬에서 테스트할 수 있습니다. 아래와 같이 웹 미리보기 버튼을 클릭합니다.

675d9b3097a6209c.png

포트 8080에서 미리보기를 클릭합니다.

  1. 그러면 브라우저 창이 열립니다. 404 오류가 표시되지만 괜찮습니다. URL을 수정한 후 호스트 이름 뒤에 /inventory가 오도록 변경합니다.

예: 를 입력하면 다음과 같이 표시됩니다.

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

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

ef6afb0184c58870.png

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

애플리케이션 배포

이제 이 API 애플리케이션을 Cloud Run에 배포합니다. 이 프로세스에는 glcoud 명령줄 클라이언트를 활용하여 Cloud Run에 코드를 배포하는 명령어를 실행하는 작업이 포함됩니다.

터미널에서 다음 gcloud 명령어를 지정합니다.

$ gcloud run deploy --source .

이 과정에서 여러 개의 질문을 받게 되며 (승인을 요청하는 경우 계속 진행) 몇 가지 사항이 아래에 설명되어 있습니다. 구성에 따라, 그리고 Google Cloud 프로젝트에서 특정 API를 이미 사용 설정했는지 여부에 따라 질문이 일부만 제공될 수도 있습니다.

  1. 서비스 이름 (python-flask-api): 이 기본값을 사용하거나 my-inventory-api와 같은 이름을 선택합니다.
  2. 프로젝트 [project-number] 에서 API [run.googleapis.com]이 사용 설정되지 않았습니다. 사용 설정하고 다시 시도하시겠습니까 (몇 분 정도 소요됨)? (y/N)? Y
  3. 지역 지정: 숫자를 지정하여 원하는 지역을 선택하세요.
  4. 프로젝트 [project-number] 에서 API [artifactregistry.googleapis.com]이 사용 설정되지 않았습니다. 사용 설정하고 다시 시도하시겠습니까 (몇 분 정도 소요됨)? (y/N)? Y
  5. 소스에서 배포하려면 빌드된 컨테이너를 저장할 Artifact Registry Docker 저장소가 필요합니다. [us-west1] 리전에 [cloud-run-source-deploy] 라는 이름의 저장소가 생성됩니다.

Do you want to continue (Y/n)? Y

  1. [my-inventory-api] (예/아니요)에 대한 인증되지 않은 호출을 허용하시겠습니까? Y

결국 소스 코드를 가져와 컨테이너화하여 Artifact Registry로 푸시한 다음 Cloud Run 서비스 + 버전을 배포하는 프로세스가 시작됩니다. 이 절차를 완료하는 데 3~4분 정도 소요될 수 있으며, 표시된 서비스 URL과 함께 절차가 완료되는 것을 확인할 수 있습니다.

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

7516696ea5b3004b.png

애플리케이션 테스트

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

  1. 이전 단계의 서비스 URL을 기록해 둡니다. 예: 내 설정에서 https://my-inventory-api-bt2r5243dq-uw.a.run.app로 표시됩니다. 이를 &lt;SERVICE_URL&gt;이라고 하겠습니다.
  2. 브라우저를 열고 API 엔드포인트의 다음 URL 3개에 액세스합니다.
  3. &lt;SERVICE_URL&gt;/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에서 실행 중인 서비스 목록이 표시됩니다. 방금 배포한 서비스가 표시됩니다. 선택한 이름에 따라 다음과 같이 표시됩니다.

10d2c363241d789c.png

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

1ec2c9e45ff1a2db.png

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

Google Cloud 운영 제품군을 시작해 보겠습니다.

4. 대시보드 설정

Cloud Monitoring이 제공하는 편리한 기능 중 하나는 Google Cloud의 여러 리소스에 걸쳐 즉시 사용 가능한 (OOTB) 대시보드입니다. 이렇게 하면 표준 측정항목으로 대시보드의 초기 설정을 빠르고 편리하게 설정할 수 있습니다.

방금 Cloud Run에 배포한 API 서비스에서 이 작업을 수행하는 방법을 살펴보겠습니다.

서비스 맞춤 대시보드

API 서비스를 Cloud Run에 배포했으므로 서비스 지연 시간이 포함된 다양한 측정항목을 시각화하는 데 도움이 되는 대시보드를 설정하는 방법을 살펴보겠습니다.

먼저 Console에서 아래와 같이 모니터링 → 개요로 이동합니다.

c51a5dda4ab72bbf.png

개요에는 대시보드, 알림, 업타임 체크 등 Monitoring에서 구성한 여러 항목이 표시됩니다.

2758f61f1e7f1dca.png

지금은 측면 기본 메뉴에서 대시보드를 클릭합니다. 그러면 다음 화면이 표시됩니다.

c9110b6f065100da.png

샘플 라이브러리를 클릭합니다 . 그러면 여러 리소스에 걸쳐 Google Cloud에서 사용할 수 있는 즉시 사용 가능한 (OOTB) 대시보드 목록이 표시됩니다. 구체적으로는 아래와 같이 목록 아래로 스크롤하여 Google Cloud Run을 선택합니다.

ddac4038d4fa91ae.png

그러면 Google Cloud Run에서 사용할 수 있는 표준 대시보드 목록이 표시됩니다. 저희는 Cloud Run에 서비스를 배포한 이후로 이 기능에 관심이 있습니다.

Cloud Run Monitoring에 대한 대시보드 1개가 표시됩니다. 미리보기 링크를 클릭하면 Cloud Run Monitoring에 사용할 수 있는 표준 차트 (측정항목)의 목록이 표시됩니다. 샘플 대시보드 가져오기를 클릭하면 모든 차트를 맞춤 대시보드로 가져올 수 있습니다. 그러면 아래와 같이 이름이 미리 채워진 대시보드 화면이 표시됩니다.

531cb8434b18193a.png

왼쪽 상단의 대시보드 이름 왼쪽에 있는 왼쪽 화살표를 클릭하면 뒤로 이동할 수 있습니다. 그러면 대시보드 목록이 표시되고 여기서 방금 만든 새 대시보드를 볼 수 있습니다.

대시보드 링크를 클릭하면 즉시 사용 가능한 여러 측정항목을 모니터링할 수 있습니다. 이러한 측정항목에는 지연 시간, 요청 수, 컨테이너 측정항목 등이 포함됩니다.

또한 아래에 표시된 대로 별표 아이콘을 선택하여 대시보드를 즐겨찾기로 표시할 수도 있습니다.

fc993d1a17415550.png

그러면 Monitoring의 개요 화면에 대시보드가 추가되어 자주 사용하는 대시보드로 쉽게 이동할 수 있습니다.

2e8f66e2652c55c5.png

1e1dffb5239ab110.png

좋습니다. Cloud Run 서비스 모니터링을 위한 커스텀 대시보드가 추가되었습니다. 잘하셨어요!

5. 업타임 체크

이 섹션에서는 배포한 API 서비스의 업타임 체크를 설정합니다. 공개 업타임 체크는 전 세계 여러 위치에서 공개적으로 사용 가능한 URL 또는 Google Cloud 리소스에 요청을 발행하여 리소스의 응답 여부를 확인할 수 있습니다.

이 경우 리소스는 Cloud Run에 배포한 API 서비스입니다. URL은 API 서비스에서 서비스 상태를 나타내기 위해 노출하는 특정 엔드포인트입니다.

샘플 API 서비스 코드에서 문자열 값 'All Izz Well'을 반환하는 /healthy 엔드포인트를 노출했습니다. 따라서 https://&lt;SERVICE_URL&gt;/healthy와 같은 항목을 조회하여 https://&lt;SERVICE_URL&gt;/healthy 문자열이 반환되는지 확인하는 업타임 체크를 정의하기만 하면 됩니다.

알림 채널 만들기

업타임 체크를 만들기 전에 먼저 알림 채널을 구성하는 것이 중요합니다. 알림 채널은 모니터링되는 리소스에 사고/문제가 발생할 경우 알림을 받는 매체입니다. 알림 채널의 예로는 이메일이 있으며 알림 등이 있으면 이메일을 받게 됩니다.

지금은 시스템에서 수신하고 구성할 알림이 있을 때 알림을 받을 수 있도록 이메일 알림 채널을 구성하고 이메일 주소로 구성하겠습니다.

알림 채널을 만들려면 다음 단계를 따르세요.

아래와 같이 Google Cloud 콘솔의 기본 메뉴에서 모니터링 → 알림으로 이동합니다.

9f87859064c63b63.png

그러면 알림, 정책 등이 포함된 페이지가 표시됩니다. 지금은 상단에 알림 채널 수정 링크가 표시됩니다. 그 버튼을 클릭하세요.

5ab54f42e6f7b99.png

그러면 아래와 같이 다양한 알림 채널 목록이 표시됩니다.

cd89b1ca9e1de87c.png

이메일 섹션을 찾아 해당 행에 대한 새로 추가를 클릭합니다. 그러면 아래와 같은 이메일 구성 세부정보가 표시됩니다.

d6ed98ffd0427fa3.png

아래와 같이 이메일 주소와 표시 이름을 입력합니다. 저장을 클릭합니다.

이메일 알림 채널 생성이 완료되었습니다. 계속해서 업타임 체크를 구성해 보겠습니다.

가동시간 확인 만들기

Google Cloud 콘솔의 기본 메뉴에서 Monitoring → 업타임 체크로 이동합니다. 상단에 CREATE UPTIME CHECK(업타임 체크 생성) 링크가 표시됩니다. 그 버튼을 클릭하세요.

484541aec65e605e.png

그러면 업타임 체크를 구성하기 위해 완료해야 하는 일련의 단계가 표시됩니다.

첫 번째 단계는 대상 세부정보, 즉 배포한 Cloud Run 서비스에 대한 정보를 설정하는 것입니다. 작성된 양식은 아래와 같습니다.

4e2bb9fe022320f7.png

서로 다른 값은 다음과 같이 선택할 수 있습니다.

  • 프로토콜 : HTTPS
  • Resource Type(리소스 유형): Cloud Run 서비스를 선택합니다. 지원하는 다른 리소스와 이 리소스에도 업타임 체크를 설정할 수 있음을 알 수 있습니다.
  • Cloud Run 서비스 : my-inventory-api 또는 Cloud Run 서비스에 지정한 특정 이름을 선택합니다.
  • 경로는 /healthy입니다. 'All Izz Well' 문자열을 반환하고 이를 확인하려고 하기 때문입니다.

계속을 클릭하여 다음 단계로 이동합니다. 다음 단계는 아래와 같은 응답 유효성 검사 단계입니다.

a6011ac2ab3e0f10.png

보시다시피 '콘텐츠 일치' 검사를 사용 설정하고 있습니다. 그런 다음 /healthy 엔드포인트에서 반환하는 응답이 'All Izz Well'이 되도록 설정합니다. CONTINUE를 클릭하여 업타임 체크에 실패할 경우 알림을 구성하고 알림을 받을 알림 채널을 구성하는 다음 단계로 이동합니다.

d9738670efcb999f.png

이 단계에서는 알림에 이름을 지정합니다. 인벤토리 API 업타임 체크 실패로 선택했지만 이름을 선택하셔도 됩니다. 여기서 중요한 것은 이전에 구성한 목록에서 올바른 알림 채널을 선택하는 것입니다.

마지막 단계에서 검토를 클릭하여 구성한 업타임 체크를 검토합니다.

이 마지막 단계에서 업타임 체크 (예: Inventory API Uptime Check)에 이름을 지정한 다음 확인이 올바르게 구성되었는지도 테스트할 수 있습니다. TEST 버튼을 클릭합니다.

80375bfab97fc313.png

계속해서 프로세스를 완료합니다 (왼쪽의 만들기 버튼을 클릭). Google Cloud가 여러 리전에 구성된 업타임 체크 프로브에 URL을 핑하도록 지시하고 이러한 응답을 수집합니다. 몇 분 후에 모니터링 → 업타임 체크 섹션으로 이동하면 여러 프로브에서 URL에 연결할 수 있음을 나타내는 녹색 신호가 모두 표시되는 것이 이상적입니다.

df17555ddbee1127.png

일정 기간 동안 (구성 가능) 프로브가 실패하면 구성된 이메일 채널에 알림 알림이 전송됩니다.

이것으로 업타임 체크 설정에 관한 섹션을 마칩니다. 잘하셨어요!

6. 측정항목 탐색기

Cloud Monitoring은 여러 Google Cloud 제품의 수천 개의 표준 측정항목을 노출합니다. 이러한 측정항목을 사용하여 조사, 쿼리, 차트로 변환, 대시보드에 추가, 알림 표시 등의 작업을 할 수 있습니다.

이 섹션의 목표는 다음과 같습니다.

  1. 다양한 측정항목을 확인하는 방법을 알아본 다음 API 서비스의 특정 측정항목(지연 시간)을 조사해 보겠습니다.
  2. 이 측정항목을 차트 및 맞춤 대시보드로 변환한 다음 언제든지 측정항목을 시각화하는 데 사용할 수 있습니다.

인벤토리 API 서비스의 지연 시간 측정항목 살펴보기

Google Cloud 콘솔의 기본 메뉴에서 Monitoring → 측정항목 탐색기로 이동합니다. 그러면 측정항목 탐색기 화면으로 이동합니다. 측정항목 선택을 클릭합니다. 이제 측정항목이 생성된 여러 활성 리소스를 탐색할 수 있습니다.

여기에서는 Cloud Run 서비스를 다루고 있으므로 Cloud Run 버전을 클릭한 다음 아래와 같이 Request Latency라는 카테고리와 특정 측정항목을 클릭합니다.

7609d8156c8f1384.png

적용을 클릭합니다. 차트에 요청 지연 시간이 표시됩니다. 아래와 같이 오른쪽에 있는 디스플레이 설정에서 위젯 유형을 선 차트로 변경할 수 있습니다.

46086ac0a8eaf3d7.png

아래와 같이 지연 시간 차트가 표시됩니다.

ad97f749eeacaa95.png

차트 및 커스텀 대시보드 만들기

계속해서 이 차트를 저장해 보겠습니다. 차트 저장을 클릭하고 아래와 같이 세부정보를 사용합니다.

35d1788d5f0cb3c4.png

기존 대시보드에 저장하지 않고 새 대시보드가 생성됩니다. 저장 버튼을 클릭합니다. 그러면 새로 만든 대시보드가 아래와 같이 대시보드 목록에 추가됩니다.

c9cdcd63d5823abd.png

앞서 만든 특정 대시보드를 클릭하여 세부정보를 확인합니다.

27354d8310d8a2d7.png

이것으로 측정항목 탐색기를 통해 다양한 측정항목을 조사하고 커스텀 대시보드를 만드는 방법을 설명합니다.

7. Cloud Logging

이 섹션에서는 Cloud Logging을 살펴봅니다. Cloud Logging에는 다양한 Google 서비스와 자체 애플리케이션에서 생성된 로그를 탐색하고 살펴볼 수 있는 로그 탐색기 인터페이스가 함께 제공됩니다.

이 섹션에서는 로그 탐색기에 대해 알아보고 로그 기반 측정항목이라는 기능을 통해 몇 가지 로그 메시지를 시뮬레이션한 후 검색하여 측정항목으로 변환할 수 있습니다.

로그 탐색기

아래와 같이 기본 Google Cloud 콘솔에서 Logging →로그 탐색기를 통해 로그 탐색기를 방문할 수 있습니다.

df05f5b33fd5695a.png

그러면 필요에 따라 로그 메시지를 필터링하는 로그 수준과 함께 다양한 리소스 (프로젝트, Google 클라우드 리소스, 서비스 이름 등)를 구체적으로 선택/선택 해제할 수 있는 로그 인터페이스가 표시됩니다.

e7fa15bcf73f3805.png

위에 표시된 Cloud Run 버전(즉, 배포한 Cloud Run 서비스)의 로그 목록입니다. 구성한 /healthy 엔드포인트에 도달하는 여러 업타임 체크 요청이 표시됩니다.

경고 검색

I-1, I-2, I-3 중 하나가 아닌 제품 ID를 제공하여 인벤토리 서비스에 대한 몇 가지 잘못된 요청을 시뮬레이션합니다. 예: 잘못된 요청은 다음과 같습니다.

https://&lt;SERVICE_URL&gt;/inventory/I-999

이제 잘못된 제품 ID가 쿼리에 제공된 경우 API에서 생성된 모든 WARNING을 검색하겠습니다.

쿼리 상자에 다음 쿼리 매개변수를 삽입합니다.

resource.type=&quot;cloud_run_revision&quot;

textPayload =~ "잘못된 productid에 대한 인벤토리 요청을 받음"

예를 들면 다음과 같습니다.

b3ee512a0c9c5c7b.png

'쿼리 실행'을 클릭합니다. 그러면 접수된 모든 요청과 이 문제가 있는 요청이 표시됩니다.

5fdbd7c23bf4694f.png

로그 기반 측정항목

이러한 오류를 추적하기 위한 커스텀 로그 측정항목을 만들어 보겠습니다. 잘못된 제품 ID로 다수의 호출이 발생하는지 확인하고자 합니다.

위의 측정항목을 오류 측정항목으로 변환하려면 로그 탐색기에 표시된 측정항목 만들기 버튼을 클릭하세요.

fa9a5e04922aa412.png

그러면 측정항목 정의를 만들기 위한 양식이 표시됩니다. 카운터 측정항목으로 이동하여 아래와 같이 측정항목 이름(inventory_lookup_errors) 및 설명에 대한 세부정보를 입력하고 측정항목 만들기를 클릭합니다.

70b5719b472d4d02.png

그러면 카운터 측정항목이 생성되고 아래와 같은 메시지가 표시됩니다.

ab9058028185e4d5.png

기본 메뉴에서 로깅 → 로그 기반 측정항목으로 이동하면 다음과 같이 사용자 정의 측정항목 목록에서 정의한 맞춤 측정항목을 확인할 수 있습니다.

7d186e90559cf8e1.png

이 항목의 끝부분에서 세로 점 3개를 클릭하여 이 맞춤 측정항목에 수행할 수 있는 작업을 확인합니다. 아래와 비슷한 목록이 표시됩니다. 측정항목 탐색기에서 보기 옵션을 클릭합니다.

7586f0789a0bdb41.png

그러면 이전 섹션에서 알아본 측정항목 탐색기로 이동합니다. 단, 이 탐색기가 자동 입력되어 있어야 합니다.

7ee7403d0639ce25.png

차트 저장을 클릭합니다. 차트 저장 옵션에 다음 값을 사용합니다.

9009da45f76eb4c5.png

이제 새 대시보드가 생성되어 인벤토리 검색 오류를 확인할 수 있으며, 대시보드 목록에서 확인할 수 있습니다.

201ed66957cb64f9.png

좋습니다. 이제 로그에서 커스텀 측정항목을 만들어 커스텀 대시보드에 있는 차트로 변환했습니다. 이렇게 하면 잘못된 제품 ID를 사용하는 통화 수를 추적하는 데 도움이 됩니다.

8. 알림 정책

이 섹션에서는 Google에서 만든 맞춤 측정항목을 사용하고 기준에 따라 데이터를 모니터링합니다. 즉, 오류 수가 특정 기준점을 초과하면 알림이 전송됩니다. 즉, 알림 정책을 설정합니다.

알림 정책 만들기

인벤토리 검색 대시보드로 가보겠습니다. 그러면 아래와 같이 인벤토리 조회 오류를 기록하기 위해 만든 차트가 표시됩니다.

3591a1dd91a8b9fd.png

그러면 현재 측정항목 데이터가 표시됩니다. 먼저 아래와 같이 측정항목을 수정해 보겠습니다 (수정 버튼 클릭).

5e76fc20d8387984.png

그러면 측정항목 세부정보가 표시됩니다. 차트에서 오류율을 표시하는 것에서 오류의 수 합계로 변환해 보겠습니다. 변경할 필드는 아래와 같습니다.

65ccd1eaca607831.png

오른쪽 상단에서 적용을 클릭하면 측정항목 화면으로 돌아갑니다. 하지만 이번에는 정렬 기간의 총 오류 수와 오류 비율을 비교할 수 있습니다.

오류 수가 기준을 초과하는 경우 알릴 수 있는 알림 정책을 만들겠습니다. 차트의 오른쪽 상단에 있는 점 3개를 클릭하고 위에 표시된 옵션 목록에서 알림 차트로 전환을 클릭합니다.

cc9eec48b9bfbc92.png

아래와 같은 화면이 표시됩니다.

6202ad1e88679a78.png

다음을 클릭하면 설정할 수 있는 기준점 값이 표시됩니다. 여기에서 변경된 샘플 기준은 5이지만 , 원하는 대로 선택할 수 있습니다.

734f809cc802ab78.png

다음을 클릭하여 알림 양식을 표시합니다.

f2d84fb85c2520cb.png

앞서 만든 이메일 채널로 알림 채널을 선택했습니다. 문서 (알림이 제기되는 알림의 일부로 제공됨)와 같은 기타 세부정보를 작성할 수 있습니다. 다음을 클릭하여 요약을 확인하고 절차를 완료합니다.

c670b29da70c4655.png

이 알림 정책을 만들면 아래와 같이 알림 정책 목록에 표시됩니다. 모니터링 → 알림으로 이동하여 알림 정책 목록을 확인할 수 있습니다. 페이지에서 정책 섹션을 검색하여 지금까지 구성한 정책 목록을 확인합니다.

154da627959c54f3.png

좋습니다. 이제 Inventory API를 조회하는 동안 오류율이 증가하는 경우 알림을 제공하는 맞춤 알림 정책을 구성했습니다.

9. Service Monitoring (선택사항)

이 섹션에서는 사이트 안정성 엔지니어링 (SRE) 원칙에 따라 서비스의 SLI/SLO를 설정합니다. Cloud Monitoring을 사용하면 Cloud Run에 배포한 서비스를 자동 탐색하여 보다 쉽게 사용할 수 있으며 오류 예산 계산과 함께 가용성, 지연 시간과 같은 주요 SLI를 자동으로 계산할 수 있습니다.

이제 API 서비스의 지연 시간 SLO를 설정해 보겠습니다.

인벤토리 서비스의 지연 시간 SLO 설정

Cloud 콘솔의 기본 메뉴에서 Monitoring → 서비스를 클릭합니다. 그러면 Service Monitoring용으로 구성된 서비스 목록이 표시됩니다.

현재 SLI/SLO 모니터링을 위해 설정된 서비스가 없으므로 목록이 비어 있습니다. 상단의 서비스 정의 링크를 클릭하여 먼저 서비스를 정의 / 식별합니다.

42d14515a481213.png

SLO 모니터링의 후보인 서비스가 자동으로 탐색됩니다. Cloud Run 서비스를 검색할 수 있으므로 Cloud Run에 배포된 Inventory API 서비스가 목록에 표시됩니다.

522aaba719f85c54.png

표시되는 표시 이름은 다를 수 있으며 Cloud Run에 서비스를 배포할 때 선택한 이름에 따라 달라집니다. 제출 버튼을 클릭합니다. 그러면 아래와 같은 화면이 표시됩니다.

eca08010ab6858a9.png

SLO 만들기를 클릭하면 됩니다. 이렇게 하면 자동으로 계산된 SLI 중에서 선택할 수 있습니다.

556e49b10d22e5ac.png

지연 시간 SLI를 시작으로 선택합니다. 계속을 클릭합니다. 다음으로 이 서비스의 현재 성능과 일반적인 지연 시간을 보여주는 화면이 표시됩니다.

a9cc6f6778c13b52.png

기준 값으로 300ms 값을 입력합니다. 이 값은 달성하고자 하는 수치입니다. 원하는 경우 다른 값을 선택할 수 있지만 적절하게 정의하는 오류 예산에 영향을 미친다는 점에 유의하세요. 계속을 클릭합니다.

이제 아래와 같이 SLO (타겟 및 측정 기간)를 설정합니다.

e1fc336d4191c08e.png

즉, 측정 기간을 순환 유형으로 선택하여 7일에 걸쳐 측정합니다. 마찬가지로 타겟의 경우 목표도 90%로 선택했습니다. 여기서 말하고자 하는 것은 API 서비스에 대한 요청의 90% 가 300ms 이내에 완료되어야 하며 이는 7일에 걸쳐 측정되어야 한다는 것입니다.

계속을 클릭합니다. 그러면 요약 화면이 표시되며 SLO 업데이트 버튼을 클릭하여 확인할 수 있습니다.

f2540173d9f4a4b7.png

이렇게 하면 SLO 정의가 저장되고 오류 예산이 자동으로 계산됩니다.

76393df0e189104.png

다음을 시도해 볼 수 있습니다.

  1. 여러 호출을 통해 API를 실행하고 서비스의 성능과 나머지 오류 예산에 미치는 영향을 확인합니다.
  2. 소스 코드를 수정하여 일부 호출에서 무작위로 추가 지연 (절전 모드)을 도입합니다. 이렇게 하면 여러 호출에 대한 지연 시간이 늘어나고 오류 예산에 부정적인 영향을 미칩니다.

10. 축하합니다

수고하셨습니다. 샘플 애플리케이션을 Google Cloud에 성공적으로 배포하고 Google Cloud 운영 제품군을 사용하여 애플리케이션 상태를 모니터링하는 방법을 배웠습니다.

학습한 내용

  • Google Cloud Run에 서비스 배포
  • Google Cloud Run 서비스의 대시보드 설정
  • 업타임 체크
  • 커스텀 로그 측정항목 및 이를 기반으로 대시보드/차트 설정
  • 측정항목 탐색기 탐색 및 대시보드/차트 설정
  • 알림 정책 설정
  • Google Cloud에서 서비스 모니터링의 SLI/SLO 설정

참고: 자신의 계정과 Google Cloud 프로젝트를 사용하여 Codelab을 실행했다면 할당된 리소스에 대해 계속 요금이 청구될 수 있습니다. 따라서 실습을 마치면 프로젝트와 리소스를 삭제합니다.

다음 단계

이 Cloud Skills Boost 퀘스트를 확인하여 Google Cloud 운영 제품군에 대해 자세히 알아보세요.

추가 자료