1. 소개
최종 업데이트: 2023년 7월 28일
Google Cloud 작업 제품군이란 무엇인가요?
Google Cloud 운영 제품군은 Google Cloud 환경에서 애플리케이션 성능을 모니터링하고 문제를 해결하며 개선할 수 있는 플랫폼입니다. Cloud Operations Suite의 핵심 요소는 Cloud Monitoring, Cloud Logging, Cloud Tracing입니다.
이 동영상을 시청하여 Google Cloud Operations의 개요를 간략히 살펴보세요.
빌드할 항목
이 Codelab에서는 Google Cloud에 샘플 API를 배포합니다. 그런 다음 Cloud Monitoring에서 API와 관련된 여러 기능을 살펴보고 구성합니다.
학습할 내용
- 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)에 로그인하고 새 프로젝트를 만듭니다.
- 프로젝트 이름은 이 프로젝트 참가자의 표시 이름입니다. 이는 Google API에서 사용하지 않는 문자열이며 언제든지 업데이트할 수 있습니다.
- 프로젝트 ID는 모든 Google Cloud 프로젝트에서 고유해야 하며, 변경할 수 없습니다 (설정된 후에는 변경할 수 없음). Cloud 콘솔은 고유한 문자열을 자동으로 생성합니다. 일반적으로는 신경 쓰지 않아도 됩니다. 대부분의 Codelab에서는 프로젝트 ID (일반적으로 PROJECT_ID로 식별됨)를 참조해야 합니다. 생성된 ID가 마음에 들지 않으면 다른 ID를 임의로 생성할 수 있습니다. 또는 직접 시도해 보고 사용 가능한지 확인할 수도 있습니다. 이 단계 이후에는 변경할 수 없으며 프로젝트 기간 동안 유지됩니다.
- 참고로 세 번째 값은 일부 API에서 사용하는 프로젝트 번호입니다. 이 세 가지 값에 대한 자세한 내용은 문서를 참고하세요.
주의: 프로젝트 ID는 전역적으로 고유해야 하며 선택한 후에는 다른 사람이 사용할 수 없습니다. 해당 ID의 유일한 사용자입니다. 프로젝트가 삭제되더라도 ID는 다시 사용할 수 없습니다.
- 다음으로 Cloud 리소스/API를 사용하려면 Cloud 콘솔에서 결제를 사용 설정해야 합니다. 이 Codelab 실행에는 많은 비용이 들지 않습니다. 이 튜토리얼이 끝난 후에 요금이 청구되지 않도록 리소스를 종료하려면 만든 리소스 또는 전체 프로젝트를 삭제하면 됩니다. Google Cloud 새 사용자에게는 미화 $300 상당의 무료 체험판 프로그램에 참여할 수 있는 자격이 부여됩니다.
Google Cloud Shell 설정
Google Cloud 및 Google Cloud Trace를 노트북에서 원격으로 실행할 수 있지만, 이 Codelab에서는 Cloud에서 실행되는 명령줄 환경인 Google Cloud Shell을 사용합니다.
Cloud Console에서 Cloud Shell을 활성화하려면 Cloud Shell 활성화를 클릭합니다. 환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다.
이전에 Cloud Shell을 시작하지 않았다면 Cloud Shell에 대한 설명이 포함된 중간 화면 (스크롤해야 볼 수 있는 부분)이 표시됩니다. 이 경우 '계속'을 클릭합니다 (이후 다시 표시되지 않음). 이 일회성 화면은 다음과 같습니다.
Cloud Shell을 프로비저닝하고 연결하는 데 몇 분 정도만 걸립니다.
이 가상 머신에는 필요한 개발 도구가 모두 포함되어 로드됩니다. 영구적인 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 엔드포인트를 노출하는 간단한 인벤토리 API 애플리케이션입니다.
API를 배포하고 https://<somehost>에 호스팅된다고 가정하면 다음과 같이 API 엔드포인트에 액세스할 수 있습니다.
- https://<somehost>/inventory
그러면 재고 인벤토리 수준이 있는 모든 제품 항목이 표시됩니다.
- https://<somehost>/inventory/{productid}
이렇게 하면 해당 제품의 제품 ID 및 재고 수준이 포함된 단일 레코드가 제공됩니다.
반환되는 응답 데이터는 JSON 형식입니다.
샘플 데이터 및 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 아이콘을 클릭합니다.
환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다. 완료되면 다음과 같이 표시됩니다.
가상 머신에는 필요한 개발 도구가 모두 들어있습니다. 영구적인 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에서 애플리케이션 실행
다음 단계에 따라 로컬에서 애플리케이션을 실행할 수 있습니다.
- 터미널에서 다음 명령어를 통해 API의 Python 버전으로 이동합니다.
$ cd cloud-code-sample-repository
$ cd python-flask-api
- 터미널에서 다음 명령어를 제공합니다. 작성 시점을 기준으로 Cloud Shell에는 Python 3.9.x가 설치되어 있으며 여기서는 기본 버전을 사용합니다. 노트북에서 로컬로 실행하려는 경우 Python 3.8 이상을 사용하면 됩니다.
$ python app.py
- 다음 명령어를 실행하여 Python 서버를 로컬에서 시작할 수 있습니다.
- 이렇게 하면 포트 8080에서 서버가 시작되며 Cloud Shell의 웹 미리보기 기능을 통해 로컬에서 테스트할 수 있습니다. 아래와 같이 웹 미리보기 버튼을 클릭합니다.
포트 8080에서 미리보기를 클릭합니다.
- 그러면 브라우저 창이 열립니다. 404 오류가 표시되지만 괜찮습니다. URL을 수정하여 호스트 이름 뒤에 /inventory만 포함되도록 변경합니다.
예를 들어 내 컴퓨터에서는 다음과 같이 표시됩니다.
https://8080-cs-557561579860-default.cs-asia-southeast1-yelo.cloudshell.dev/inventory
이렇게 하면 앞에서 설명한 대로 인벤토리 항목 목록이 표시됩니다.
- 이제 터미널로 이동하여 Ctrl-C를 눌러 서버를 중지할 수 있습니다.
애플리케이션 배포
이제 이 API 애플리케이션을 Cloud Run에 배포합니다. 이 프로세스에는 glcoud 명령줄 클라이언트를 활용하여 Cloud Run에 코드를 배포하는 명령어를 실행하는 작업이 포함됩니다.
터미널에서 다음 gcloud 명령어를 실행합니다.
$ gcloud run deploy --source .
이 과정에서 여러 가지 질문 (승인을 요청하는 경우 계속 진행)을 해야 하며, 몇 가지 요점이 아래에 설명되어 있습니다. 구성 및 Google Cloud 프로젝트에서 특정 API를 이미 사용 설정했는지에 따라 모든 질문이 표시되지 않을 수도 있습니다.
- 서비스 이름 (python-flask-api): 이 기본값을 사용하거나 my-inventory-api와 같은 이름을 선택합니다.
- API [run.googleapis.com] not enabled on project [project-number]. 사용 설정하고 다시 시도하시겠어요? 이 작업에는 몇 분 정도 걸립니다. (y/N)? Y
- 지역 지정: 숫자를 지정하여 원하는 지역을 선택하세요.
- API [artifactregistry.googleapis.com] not enabled on project [project-number]. 사용 설정하고 다시 시도하시겠어요? 이 작업에는 몇 분 정도 걸립니다. (y/N)? Y
- 소스에서 배포하려면 빌드된 컨테이너를 저장할 Artifact Registry Docker 저장소가 필요합니다. [us-west1] 리전에 [cloud-run-source-deploy] 라는 저장소가 생성됩니다.
Do you want to continue (Y/n)? Y
- [my-inventory-api]에 인증되지 않은 호출 허용(y/N)? Y
그러면 소스 코드를 가져와 컨테이너화하고 Artifact Registry에 푸시한 후 Cloud Run 서비스 + 버전을 배포하는 프로세스가 시작됩니다. 이 프로세스는 3~4분 정도 걸릴 수 있으므로 기다려 주세요. 프로세스가 완료되면 서비스 URL이 표시됩니다.
샘플 실행은 다음과 같습니다.
애플리케이션 테스트
이제 애플리케이션을 Cloud Run에 배포했으므로 다음과 같이 API 애플리케이션에 액세스할 수 있습니다.
- 이전 단계의 서비스 URL을 기록해 둡니다. 예를 들어 제 설정에서는
https://my-inventory-api-bt2r5243dq-uw.a.run.app
로 표시됩니다. 이를 <SERVICE_URL>(이)라고 하겠습니다. - 브라우저를 열고 API 엔드포인트의 다음 3개 URL에 액세스합니다.
- <SERVICE_URL>/inventory
- <SERVICE_URL>/inventory/I-1
- <SERVICE_URL>/inventory/I-100
이전 섹션의 샘플 API 요청 및 응답과 함께 제공된 사양에 따라야 합니다.
Cloud Run에서 서비스 세부정보 가져오기
서버리스 컴퓨팅 환경인 Cloud Run에 API 서비스를 배포했습니다. 언제든지 Google Cloud 콘솔을 통해 Cloud Run 서비스를 방문할 수 있습니다.
기본 메뉴에서 Cloud Run으로 이동합니다. Cloud Run에서 실행 중인 서비스 목록이 표시됩니다. 방금 배포한 서비스가 표시됩니다. 선택한 이름에 따라 다음과 같이 표시됩니다.
서비스 이름을 클릭하여 세부정보를 확인합니다. 샘플 세부정보는 아래와 같습니다.
URL을 확인합니다. 이 URL은 브라우저에 입력하여 방금 배포한 Inventory API에 액세스할 수 있는 서비스 URL입니다. 측정항목 및 기타 세부정보를 살펴보세요.
이제 Google Cloud Operations Suite를 시작해 보겠습니다.
4. 대시보드 설정
Cloud Monitoring에서 제공하는 편리한 기능 중 하나는 Google Cloud의 여러 리소스에 걸쳐 즉시 사용 가능한 (OOTB) 대시보드입니다. 이렇게 하면 표준 측정항목으로 대시보드를 빠르고 편리하게 초기 설정할 수 있습니다.
방금 Cloud Run에 배포한 API 서비스에 대해 이를 수행하는 방법을 살펴보겠습니다.
YouTube 서비스용 맞춤 대시보드
API 서비스를 Cloud Run에 배포했으므로 서비스 지연 시간 등 다양한 측정항목을 시각화하는 데 도움이 되는 대시보드를 설정하는 방법을 알아보겠습니다.
먼저 아래와 같이 콘솔에서 Monitoring(모니터링) → Overview(개요)로 이동합니다.
개요에는 대시보드, 알림, 업타임 체크 등 모니터링에서 구성한 여러 항목이 표시됩니다.
지금은 측면 기본 메뉴에서 대시보드를 클릭하겠습니다. 그러면 다음 화면이 표시됩니다.
샘플 라이브러리를 클릭합니다 . 그러면 Google Cloud에서 여러 리소스에 걸쳐 사용할 수 있는 기본 제공 (OOTB) 대시보드 목록이 표시됩니다. 구체적으로는 아래와 같이 목록 아래로 스크롤하여 Google Cloud Run을 선택합니다.
그러면 Google Cloud Run에서 사용할 수 있는 표준 대시보드 목록이 표시됩니다. 저희는 Cloud Run에 서비스를 배포해 왔기 때문에 이 부분에 관심이 있습니다.
Cloud Run 모니터링을 위한 대시보드가 하나 표시됩니다. 미리보기 링크를 클릭하여 Cloud Run 모니터링에 사용할 수 있는 표준 차트 (측정항목) 목록을 확인합니다. 샘플 대시보드 가져오기를 클릭하기만 하면 이러한 차트를 모두 커스텀 대시보드로 가져올 수 있습니다. 그러면 아래와 같이 이름이 미리 채워진 대시보드 화면이 표시됩니다.
왼쪽 상단의 대시보드 이름 왼쪽에 있는 왼쪽 화살표를 클릭하여 돌아갈 수 있습니다. 그러면 대시보드 목록이 표시되며 여기에서 방금 만든 새 대시보드를 확인할 수 있습니다.
이 대시보드 링크를 클릭하면 즉시 사용할 수 있는 여러 측정항목을 모니터링할 수 있습니다. 이러한 측정항목에는 지연 시간, 요청 수, 컨테이너 측정항목 등이 포함됩니다.
아래와 같이 별표 아이콘을 선택하여 대시보드를 즐겨찾기로 표시할 수도 있습니다.
이렇게 하면 대시보드가 Monitoring의 개요 화면에 추가되며 자주 사용하는 대시보드로 쉽게 이동할 수 있습니다.
좋습니다. Cloud Run 서비스를 모니터링하기 위한 맞춤 대시보드가 추가되었습니다. 잘했습니다.
5. 업타임 체크
이 섹션에서는 배포한 API 서비스의 가동 시간 확인을 설정합니다. 공개 업타임 체크는 전 세계 여러 위치에서 공개적으로 사용 가능한 URL 또는 Google Cloud 리소스로 요청을 실행하고 리소스가 응답하는지 확인할 수 있습니다.
이 경우 리소스는 Cloud Run에 배포한 API 서비스입니다. URL은 API 서비스에서 서비스 상태를 나타내기 위해 노출하는 특정 엔드포인트입니다.
샘플 API 서비스 코드에서 문자열 값 'All Izz Well'을 반환하는 /healthy 엔드포인트를 노출했습니다. 따라서 https://<SERVICE_URL>/healthy와 같이 연결되고 "All Izz Well" 문자열이 반환되는지 확인하는 가동 시간 확인을 정의하기만 하면 됩니다.
알림 채널 만들기
가동 시간 확인을 만들기 전에 먼저 알림 채널을 구성해야 합니다. 알림 채널은 모니터링하는 리소스에 이슈가 발생하면 알림을 받을 수 있는 매체입니다. 알림 채널의 예로는 이메일이 있으며 알림 등이 있으면 이메일을 받게 됩니다.
지금은 시스템에서 발생하고 구성할 알림이 있는 경우 알림을 받을 수 있도록 이메일 알림 채널을 구성하고 이메일 주소로 구성하겠습니다.
알림 채널을 만들려면 다음 단계를 따르세요.
아래와 같이 Google Cloud 콘솔의 기본 메뉴에서 모니터링 → 알림으로 이동합니다.
그러면 알림, 정책 등이 포함된 페이지가 표시됩니다. 현재 상단에 알림 채널 수정이라는 링크가 표시됩니다. 클릭합니다.
그러면 아래와 같이 다양한 알림 채널 목록이 표시됩니다.
이메일 섹션을 찾아 해당 행에서 새로 추가를 클릭합니다. 그러면 아래와 같은 이메일 구성 세부정보가 표시됩니다.
아래와 같이 이메일 주소와 표시 이름을 입력합니다. 저장을 클릭합니다.
이로써 이메일 알림 채널 생성이 완료됩니다. 계속해서 업타임 체크를 구성해 보겠습니다.
가동시간 확인 만들기
Google Cloud 콘솔의 기본 메뉴에서 모니터링 → 가동 시간 확인으로 이동합니다. 상단에 CREATE UPTIME CHECK(업타임 체크 생성) 링크가 표시됩니다. 클릭합니다.
그러면 업타임 체크를 구성하는 데 필요한 일련의 단계가 표시됩니다.
첫 번째 단계는 배포한 Cloud Run 서비스에 대한 정보인 타겟 세부정보를 설정하는 것입니다. 작성된 양식은 다음과 같습니다.
다음과 같이 다양한 값을 선택할 수 있습니다.
- 프로토콜 : HTTPS
- 리소스 유형 : Cloud Run 서비스를 선택합니다. 지원되는 다른 리소스와 이러한 리소스에 업타임 체크를 설정할 수 있는지 확인합니다.
- Cloud Run 서비스 : my-inventory-api 또는 Cloud Run 서비스에 지정한 특정 이름을 선택합니다.
- 경로는 /healthy입니다. 문자열 'All Izz Well'을 반환하고 이를 확인하려고 하기 때문입니다.
계속을 클릭하여 다음 단계로 이동합니다. 다음 단계는 아래와 같이 응답 유효성 검사 단계입니다.
'콘텐츠 일치' 확인을 사용 설정한 다음 /healthy 엔드포인트에서 반환된 응답이 'All Izz Well'이 되도록 설정되어 있는 것을 볼 수 있습니다. 계속을 클릭하여 다음 단계로 이동합니다. 이 단계에서는 업타임 확인에 실패할 경우 알림을 보내야 하는 알림 채널과 알림을 구성합니다.
이 단계에서는 알림 이름을 지정합니다. 저는 Inventory API Uptime Check failure(인벤토리 API 업타임 확인 실패)로 선택했지만 원하는 이름을 선택해도 됩니다. 여기서 중요한 것은 이전에 구성한 목록에서 올바른 알림 채널을 선택하는 것입니다.
마지막 단계로 검토를 클릭하여 구성한 업타임 확인을 검토합니다.
마지막 단계에서는 업타임 체크에 이름을 지정합니다 (예: Inventory API Uptime Check). 그런 다음 체크가 올바르게 구성되었는지 테스트할 수도 있습니다. TEST 버튼을 클릭합니다.
계속해서 프로세스를 완료합니다 (왼쪽의 만들기 버튼 클릭). Google Cloud는 여러 리전에 구성된 가동 시간 확인 프로브에 URL을 핑하도록 지시하고 이러한 응답이 수집됩니다. 몇 분 후에 모니터링 → 업타임 확인 섹션을 방문하면 URL이 여러 프로브에서 연결될 수 있음을 나타내는 녹색 신호가 모두 표시되는 것이 이상적입니다.
구성 가능한 일정 기간 동안 프로브가 실패하면 구성한 이메일 채널에 알림이 전송됩니다.
업타임 체크 설정에 관한 섹션을 마쳤습니다. 잘했습니다.
6. 측정항목 탐색기
Cloud Monitoring은 여러 Google Cloud 제품의 수천 개의 표준 측정항목을 노출합니다. 이러한 측정항목을 조사, 쿼리, 차트로 변환, 대시보드에 추가, 알림을 발생시키는 등의 작업에 사용할 수 있습니다.
이 섹션의 목표는 다음과 같습니다.
- 다양한 측정항목을 확인하는 방법을 알아본 후 API 서비스의 특정 측정항목 (지연 시간)을 조사해 보겠습니다.
- 이 측정항목을 차트 및 맞춤 대시보드로 변환하여 언제든지 측정항목을 시각화하는 데 사용할 수 있습니다.
Inventory API 서비스의 지연 시간 측정항목 살펴보기
Google Cloud 콘솔의 기본 메뉴에서 모니터링 → 측정항목 탐색기로 이동합니다. 그러면 측정항목 탐색기 화면으로 이동합니다. 측정항목 선택을 클릭합니다. 이제 측정항목이 생성된 여러 활성 리소스를 탐색할 수 있습니다.
여기에서는 Cloud Run 서비스를 다루고 있으므로 Cloud Run 버전을 클릭한 다음 아래와 같이 Request Latency라는 카테고리와 특정 측정항목을 클릭합니다.
적용을 클릭합니다. 그러면 차트에 요청 지연 시간이 표시됩니다. 아래와 같이 오른쪽의 디스플레이 설정에서 위젯 유형을 선 차트로 변경할 수 있습니다.
그러면 아래와 같이 지연 시간 차트가 표시됩니다.
차트 및 커스텀 대시보드 만들기
계속해서 이 차트를 저장해 보겠습니다. 차트 저장을 클릭하고 아래와 같이 세부정보를 사용합니다.
기존 대시보드에 저장하는 대신 새 대시보드를 만들고 있습니다. 저장 버튼을 클릭합니다. 그러면 새로 만든 대시보드가 아래와 같이 대시보드 목록에 추가됩니다.
세부정보를 보려면 만든 특정 대시보드를 클릭합니다.
이제 측정항목 탐색기를 통해 다양한 측정항목을 조사하고 맞춤 대시보드를 만드는 방법에 관한 섹션이 완료되었습니다.
7. Cloud Logging
이 섹션에서는 Cloud Logging을 살펴봅니다. Cloud Logging에는 다양한 Google 서비스 및 자체 애플리케이션에서 생성된 로그를 탐색하고 살펴볼 수 있는 로그 탐색기 인터페이스가 제공됩니다.
이 섹션에서는 로그 탐색기에 대해 알아보고 로그 기반 측정항목이라는 기능을 통해 검색하고 측정항목으로 변환할 수 있는 몇 가지 로그 메시지를 시뮬레이션합니다.
로그 탐색기
아래와 같이 기본 Google Cloud 콘솔에서 Logging →로그 탐색기를 통해 로그 탐색기를 방문할 수 있습니다.
그러면 로그 인터페이스가 표시되며 여기에서 로그 수준과 함께 다양한 리소스 (프로젝트, Google Cloud 리소스, 서비스 이름 등)를 구체적으로 선택/선택 해제하여 필요에 따라 로그 메시지를 필터링할 수 있습니다.
위에 표시된 로그 목록은 배포한 Cloud Run 버전(Cloud Run 서비스)의 로그 목록입니다. 구성한 /healthy 엔드포인트에 가동 시간 확인 요청이 여러 번 접속합니다.
경고 검색
I-1, I-2, I-3 중 하나가 아닌 제품 ID를 제공하여 인벤토리 서비스에 대한 몇 가지 잘못된 요청을 시뮬레이션합니다. 예를 들어 잘못된 요청은 다음과 같습니다.
https://<SERVICE_URL>/inventory/I-999
이제 쿼리에 잘못된 제품 ID가 제공된 경우 API에서 생성된 모든 경고를 검색합니다.
쿼리 상자에 다음 쿼리 매개변수를 삽입합니다.
resource.type="cloud_run_revision"
textPayload =~ "잘못된 productid의 인벤토리 요청이 접수되었습니다"
예를 들면 다음과 같습니다.
쿼리 실행을 클릭합니다. 그러면 접수된 모든 요청과 이 문제가 있는 요청이 표시됩니다.
로그 기반 측정항목
이러한 오류를 추적할 맞춤 로그 측정항목을 만들어 보겠습니다. 잘못된 제품 ID로 호출이 많이 발생하는지 확인하고자 합니다.
위의 측정항목을 오류 측정항목으로 변환하려면 로그 탐색기에 표시된 측정항목 만들기 버튼을 클릭하세요.
그러면 측정항목 정의를 만들기 위한 양식이 표시됩니다. 카운터 측정항목을 사용하여 아래와 같이 측정항목 이름(inventory_lookup_errors) 및 설명에 대한 세부정보를 입력하고 측정항목 만들기를 클릭합니다.
그러면 카운터 측정항목이 생성되고 아래와 같은 메시지가 표시됩니다.
기본 메뉴에서 로깅 → 로그 기반 측정항목으로 이동하면 다음과 같이 사용자 정의 측정항목 목록에서 정의한 맞춤 측정항목을 확인할 수 있습니다.
이 항목 끝에 세 개의 수직 점이 있습니다. 이 점을 클릭하면 이 맞춤 측정항목에서 수행할 수 있는 작업이 표시됩니다. 목록은 아래와 유사합니다. 측정항목 탐색기에서 보기 옵션을 클릭합니다.
그러면 이전 섹션에서 알아본 측정항목 탐색기로 이동합니다. 단, 이제는 사전 입력되어 있습니다.
차트 저장을 클릭합니다. 차트 저장 옵션에는 다음 값을 사용합니다.
이제 인벤토리 검색 오류를 볼 수 있는 새 대시보드가 생성되며 대시보드 목록에서 사용할 수 있습니다.
좋습니다. 이제 로그에서 맞춤 측정항목을 만들고 이를 맞춤 대시보드에 있는 차트로 변환했습니다. 이렇게 하면 잘못된 제품 ID를 사용하는 호출 수를 추적하는 데 도움이 됩니다.
8. 알림 정책
이 섹션에서는 생성한 맞춤 측정항목을 사용하고 임곗값에 대한 데이터를 모니터링합니다. 즉, 오류 수가 특정 임곗값을 초과하면 알림이 발생합니다. 즉, 알림 정책을 설정합니다.
알림 정책 만들기
인벤토리 검색 대시보드로 가보겠습니다. 그러면 아래와 같이 인벤토리 조회 오류를 기록하기 위해 만든 차트가 표시됩니다.
그러면 현재 측정항목 데이터가 표시됩니다. 먼저 아래와 같이 측정항목을 수정합니다 (수정 버튼 클릭).
그러면 측정항목 세부정보가 표시됩니다. 오류율을 보여주는 차트를 합계(즉, 오류 수)로 변환해 보겠습니다. 변경할 필드는 다음과 같습니다.
오른쪽 상단의 적용을 클릭하면 측정항목 화면으로 돌아가지만 이번에는 정렬 기간의 총 오류 수를 오류 비율과 비교하여 확인할 수 있습니다.
오류 수가 기준점을 초과할 경우 알림을 보낼 수 있는 알림 정책을 만들어 보겠습니다. 차트의 오른쪽 상단에 있는 점 3개를 클릭하고 위 그림과 같이 옵션 목록에서 알림 차트로 변환을 클릭합니다.
아래와 같은 화면이 표시됩니다.
다음을 클릭하면 설정할 수 있는 기준 값이 표시됩니다. 여기서 사용한 샘플 기준점은 5이지만 원하는 대로 선택할 수 있습니다.
다음을 클릭하여 알림 양식을 표시합니다.
알림 채널을 앞에서 만든 이메일 채널로 선택했습니다. 문서 (알림이 제기되는 알림의 일부로 제공됨)와 같은 기타 세부정보를 작성할 수 있습니다. 다음을 클릭하여 요약을 확인하고 절차를 완료합니다.
이 알림 정책을 만들면 아래와 같이 알림 정책 목록에 표시됩니다. 모니터링 → 알림으로 이동하여 알림 정책 목록을 확인할 수 있습니다. 페이지에서 정책 섹션을 검색하여 지금까지 구성한 정책 목록을 확인합니다.
좋습니다. 이제 Inventory API를 조회하는 동안 오류율이 증가하면 알림을 보내는 맞춤 알림 정책을 구성했습니다.
9. Service Monitoring (선택사항)
이 섹션에서는 사이트 안정성 엔지니어링 (SRE) 원칙에 따라 서비스의 SLI/SLO를 설정합니다. Cloud Monitoring을 사용하면 Cloud Run에 배포한 서비스를 자동으로 검색하고 오류 예산 계산과 함께 가용성, 지연 시간과 같은 주요 SLI를 자동으로 계산할 수 있으므로 더 쉽게 작업할 수 있습니다.
API 서비스의 지연 시간 SLO를 설정해 보겠습니다.
인벤토리 서비스의 지연 시간 SLO 설정
Cloud 콘솔의 기본 메뉴에서 Monitoring → 서비스를 클릭합니다. 그러면 Service Monitoring용으로 구성된 서비스 목록이 표시됩니다.
현재 SLI/SLO 모니터링을 위해 설정된 서비스가 없으므로 목록이 비어 있습니다. 먼저 상단의 서비스 정의 링크를 클릭하여 서비스를 정의 / 식별합니다.
이렇게 하면 SLO 모니터링의 후보인 서비스가 자동으로 검색됩니다. Cloud Run 서비스를 검색할 수 있으므로 Cloud Run에 배포된 Inventory API 서비스가 목록에 표시됩니다.
표시되는 표시 이름은 다를 수 있으며 Cloud Run에 서비스를 배포할 때 선택한 이름에 따라 달라집니다. 제출 버튼을 클릭합니다. 그러면 아래와 같은 화면이 표시됩니다.
SLO 만들기를 클릭하면 됩니다. 이렇게 하면 자동으로 계산된 SLI 중에서 선택할 수 있습니다.
시작으로 지연 시간 SLI를 선택합니다. 계속을 클릭합니다. 다음으로 이 서비스의 현재 실적과 일반적인 지연 시간이 표시된 화면이 표시됩니다.
기준 값으로 300ms 값을 입력합니다. 이 값은 달성하고자 하는 수치입니다. 원하는 경우 다른 값을 선택할 수 있지만 적절하게 정의하는 오류 예산에 영향을 미친다는 점에 유의하세요. 계속을 클릭합니다.
이제 아래와 같이 SLO (타겟 및 측정 기간)를 설정합니다.
즉, 측정 기간을 순환 유형으로 선택하여 7일에 걸쳐 측정합니다. 마찬가지로 타겟의 경우 90%의 목표를 선택했습니다. 즉, API 서비스에 대한 요청의 90% 가 300ms 이내에 완료되어야 하며, 이는 7일 동안 측정해야 합니다.
계속을 클릭합니다. 그러면 요약 화면이 표시되며 SLO 업데이트 버튼을 클릭하여 확인할 수 있습니다.
이렇게 하면 SLO 정의가 저장되고 오류 예산이 자동으로 계산됩니다.
다음을 시도해 보세요.
- 여러 호출을 통해 API를 실행하고 서비스의 성능과 나머지 오류 예산에 미치는 영향을 확인합니다.
- 일부 호출에서 무작위로 추가 지연 (절전)을 도입하도록 소스 코드를 수정합니다. 이렇게 하면 여러 호출의 지연 시간이 늘어나 오류 예산에 부정적인 영향을 미칩니다.
10. 축하합니다
수고하셨습니다. 샘플 애플리케이션을 Google Cloud에 성공적으로 배포하고 Google Cloud 운영 제품군을 사용하여 애플리케이션 상태를 모니터링하는 방법을 배웠습니다.
학습한 내용
- Google Cloud Run에 서비스 배포
- Google Cloud Run 서비스의 대시보드 설정
- 업타임 체크
- 맞춤 로그 측정항목 및 이를 기반으로 한 대시보드/차트 설정
- 측정항목 탐색기 탐색 및 대시보드/차트 설정
- 알림 정책 설정
- Google Cloud에서 서비스 모니터링의 SLI/SLO 설정
참고: 자체 계정과 Google Cloud 프로젝트를 사용하여 Codelab을 실행한 경우 할당된 리소스에 계속 요금이 청구될 수 있습니다. 따라서 실습이 끝나면 프로젝트와 리소스를 삭제하세요.
다음 단계
이 Cloud Skills Boost 퀘스트를 확인하여 Google Cloud 운영 제품군에 대해 자세히 알아보세요.