Stackdriver의 모니터링 및 로깅을 사용하여 애플리케이션 상태를 더 잘 파악하기

이 Codelab에서는 Stackdriver를 사용하여 Google Cloud Platform 서비스 및 VM의 성능 측정항목과 로그를 모니터링하고 검토하는 방법을 알아봅니다.

이 Codelab에서는 다음 작업을 합니다.

  • Stackdriver 홈페이지를 숙지합니다.
  • 대시보드와 차트를 이해합니다.
  • 업타임 체크를 만듭니다.
  • 간단한 알림 정책을 만듭니다.
  • 알림 인시던트 작업
  • 로그 뷰어를 탐색합니다.

Stackdriver 사용 경험은 어떠신가요?

모니터링이란 무엇인가요? Stackdriver를 사용한 적은 없지만 애플리케이션 모니터링 경험이 있습니다. Stackdriver를 대략적으로 살펴봤지만 자세히 살펴보지는 않았습니다.

자습형 환경 설정

아직 Google 계정 (Gmail 또는 Google Apps)이 없으면 계정을 만들어야 합니다.

Google Cloud Platform 콘솔 (console.developers.google.com)에 로그인하고 새 프로젝트를 만듭니다.

모든 Google Cloud 프로젝트에서 고유한 이름인 프로젝트 ID를 기억해 두세요. 이 ID는 나중에 이 Codelab에서 PROJECT_ID라고 부릅니다.

매우 중요 - Compute Engine API를 사용 설정하려면 Compute Engine 페이지를 방문하세요.

그런 다음 Compute → Compute Engine → VM 인스턴스를 선택합니다.

처음으로 이 작업을 실행하면 'Compute Engine을 준비하는 중입니다. 1분 이상 걸릴 수 있습니다'라는 메시지가 표시됩니다. 아래에서 Google Cloud Shell에 계속 로그인할 수 있지만 이 작업이 완료될 때까지는 VM을 만들 수 없습니다.

클라우드에서 실행되는 명령줄 환경Google Cloud Shell에서 대부분의 작업을 수행합니다. 이 Debian 기반 가상 머신에는 필요한 모든 개발 도구가 로드되어 있으며 영구 5GB 홈 디렉터리를 제공합니다. 화면 오른쪽 상단의 아이콘을 클릭하여 Google Cloud Shell을 엽니다.

마지막으로 Cloud Shell을 사용하여 기본 영역 및 프로젝트 구성을 설정합니다.

$ gcloud config set compute/zone us-central1-b
$ gcloud config set compute/region us-central

다른 영역을 선택할 수도 있습니다. 리전 및 영역 문서에서 영역에 관해 자세히 알아보세요.

이 섹션에서는 Cloud Launcher를 사용하여 nginx+를 실행하는 Compute Engine 인스턴스를 만듭니다. 모니터링 및 알림을 시연하려면 이러한 인스턴스가 필요합니다. 그래픽 콘솔 또는 명령줄에서 Compute Engine 인스턴스를 만들 수 있습니다. 이 실습에서는 명령줄을 안내합니다.

이제 시작해 보겠습니다.

gcloud를 사용하여 프로젝트 ID를 설정합니다.

$ gcloud config set project PROJECT_ID



그런 다음 다음을 그대로 복사하여 붙여넣습니다.

$ for i in {1..3}; do \
gcloud compute instances create "nginx-plus-$i" \
--machine-type "n1-standard-1" \
--metadata  "google-cloud-marketplace-solution-key=nginx-public:nginx-plus" \
--maintenance-policy "MIGRATE" --scopes default="https://www.googleapis.com/auth/cloud-platform" \
--tags "http-server","google-cloud-marketplace" \
--image "https://www.googleapis.com/compute/v1/projects/nginx-public/global/images/nginx-plus-ubuntu1404-v20150916-final" \
--boot-disk-size "10" --boot-disk-type "pd-standard" \
--boot-disk-device-name "nginx-plus-$i"; done

디스크 크기에 관한 경고 메시지가 표시되고 각 VM이 생성되면 다음 출력이 표시됩니다.

NAME         ZONE          MACHINE_TYPE  PREEMPTIBLE INTERNAL_IP EXTERNAL_IP     STATUS
nginx-plus-1 us-central1-b n1-standard-2                X.X.X.X  X.X.X.X      RUNNING
...

EXTERNAL_IP를 기록해 둡니다. 나중에 중요합니다.

이 작업을 완료하는 데 몇 분 정도 걸릴 수 있습니다.

기본적으로 Google Cloud Platform은 몇 개의 포트 액세스만 허용합니다. 곧 Nginx에 액세스할 것이므로 방화벽 구성에서 포트 80을 사용 설정해 보겠습니다.

$ gcloud compute firewall-rules create allow-80 --allow tcp:80 --target-tags "http-server"
Created [...].
NAME     NETWORK SRC_RANGES RULES  SRC_TAGS TARGET_TAGS
allow-80 default 0.0.0.0/0  tcp:80 http-server

이렇게 하면 다음과 같은 기본값이 있는 allow-80이라는 방화벽 규칙이 생성됩니다.

  • 인바운드 연결을 만들 수 있도록 허용된 IP 주소 블록 목록 (--source-ranges)이 0.0.0.0/0 (모든 곳)으로 설정됩니다.
  • 인바운드 연결을 수락할 수 있는 네트워크의 인스턴스 집합을 나타내는 인스턴스 태그 목록이 none으로 설정되어 있습니다. 즉, 방화벽 규칙이 모든 인스턴스에 적용됩니다.

gcloud compute firewall-rules create --help를 실행하여 모든 기본값을 확인합니다.

첫 번째 인스턴스가 생성된 후 http://EXTERNAL_IP/ 로 이동하여 nginx가 실행되고 액세스 가능한지 테스트할 수 있습니다. 여기서 EXTERNAL_IPnginx-plus-1의 공개 IP이며 Nginx 페이지가 표시됩니다.

다음을 입력하여 실행 중인 인스턴스를 확인할 수도 있습니다.

$ gcloud compute instances list

Google Stackdriver는 클라우드 기반 애플리케이션의 모니터링 및 분석을 용이하게 하는 다양한 도구를 통합하는 강력한 모니터링 솔루션입니다. Stackdriver를 사용하면 중앙 위치에서 성능 측정항목을 확인하고, 알림을 설정하고 수신하고, 자체 맞춤 대시보드와 측정항목을 추가하고, 로그와 트레이스를 확인하고, 통합 대시보드를 설정할 수 있습니다.

다음 단계에서는 Stackdriver를 사용 설정하고 콘솔을 사용하는 방법을 안내합니다.

기본적으로 Google Stackdriver는 현재 베타 버전이며 새 프로젝트에서 사용 설정되어 있지 않습니다. 이 기능을 사용 설정하려면 왼쪽 탐색 메뉴로 이동하여 '모니터링'을 클릭합니다(이 옵션을 보려면 아래로 스크롤해야 할 수도 있음).

다음 화면에서 '모니터링 사용 설정'을 클릭하고 1분 정도 기다려 사용 설정합니다.

이 기능을 사용 설정하면 콘텐츠가 변경되고 아래 텍스트가 표시됩니다. '모니터링으로 이동'을 클릭하여 탐색을 시작하세요. Google로 로그인하면 프로젝트의 Stackdriver 콘솔로 이동합니다. 여기에서 모니터링 관련 작업을 수행하고 분석합니다.

홈페이지를 살펴보겠습니다.

  1. 상단 메뉴: 다양한 뷰 / 컨텍스트를 선택하고 사용 가능한 모든 Stackdriver 작업에 액세스하는 데 사용합니다.
  2. 대시보드: 모니터링되는 측정항목 및 이벤트의 대시보드입니다. 처음에는 프로젝트의 리소스를 기반으로 사전 정의된 시스템 대시보드가 표시되지만 자체 맞춤 대시보드를 작성할 수도 있습니다.
  3. 업타임 체크: 사용자 대상 리소스의 가용성을 주기적으로 확인하고, 사용할 수 없게 되면 알림을 사용 설정합니다.
  4. 그룹 목록: 그룹은 속성과 특성을 공유하는 리소스를 그룹화하여 모니터링 및 알림과 같은 작업을 위해 그룹 또는 클러스터로 처리할 수 있도록 하는 데 사용됩니다. 이러한 측정항목은 자동 검색될 수도 있고 사용자가 정의할 수도 있습니다.
  5. 이슈 창: 이슈 창은 알림 이슈를 추적합니다. 알림 정책을 정의하기 전에는 여기에 아무것도 표시되지 않습니다.
  6. 이벤트 로그: 모니터링되는 리소스와 관련된 이벤트(예: 인스턴스 변경, 인시던트 이벤트 등)를 나열합니다.

차트를 살펴보기 전에 초기 인스턴스 초기화 후 대부분의 선이 평탄해진 것을 알 수 있습니다. 인스턴스 중 하나에 부하를 생성하여 일부를 '평탄화' 해제할 수 있는지 확인해 보겠습니다.

Cloud Shell 명령줄에서 인스턴스로 SSH하려면 다음 단계를 따르세요.

$ gcloud compute ssh nginx-plus-1
...
Do you want to continue (Y/n)? Y
...
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): [Hit Enter]
Enter same passphrase again: [Hit Enter]
...

yourusername@nginx-plus-1:~$

간단하죠? 프로덕션에서는 암호를 입력해야 합니다. 암호를 추가하라는 메시지가 표시되지 않을 수도 있습니다.

또는 Compute Engine > VM 인스턴스로 이동하여 SSH를 클릭하여 콘솔에서 직접 인스턴스에 SSH로 연결할 수도 있습니다.

In the SSH window, type:

yourusername@nginx-plus-1:~$ sudo apt-get install rand
yourusername@nginx-plus-1:~$ for i in {1..10}; do dd if=/dev/zero of=/dev/null count=$(rand -M 80)M; sleep 60; done &

이제 인스턴스 nginx-plus-1 CPU가 로드됩니다. Stackdriver 대시보드 탭으로 돌아가 탐색을 시작할 수 있지만 Stackdriver 대시보드 페이지로 돌아가기 전에 Cloud Logging 에이전트를 설치해 보겠습니다.

Fetch and install the script:

yourusername@nginx-plus-1:~$ curl -sS https://dl.google.com/cloudagents/add-logging-agent-repo.sh | sudo bash /dev/stdin --also-install

프로덕션에 설치할 때는 SHA-256 해시를 확인해야 합니다. 설치 과정에 대한 자세한 내용은 여기를 참고하세요.

이제 Google Stackdriver 콘솔로 돌아갈 차례입니다.

시간을 내어 대시보드와 차트를 탐색하고 사용하는 방법을 숙지하세요. 마우스를 사용하여 차트 선 위로 가져가면 어떤 일이 일어나는지 확인합니다. 차트의 시간 길이를 변경합니다 (컨트롤은 오른쪽 상단에 있음). 콘솔의 왼쪽 상단에 있는 Stackdriver 로고를 클릭하여 언제든지 '홈페이지' 뷰로 돌아갈 수 있습니다.

CPU 사용률 차트를 살펴보겠습니다.

차트의 일부 요소는 다음과 같습니다.

  • 강조 표시된 선은 현재 선택된 측정항목입니다 (차트에는 여러 측정항목이 표시될 수 있음).
  • 회색 가로선은 마우스 커서가 가리키는 시점을 나타냅니다.
  • 하단에는 리소스 이름과 선택한 시점의 값이 표시됩니다.
  • 차트 상단에는 이벤트 로그에 자세히 설명된 이벤트를 나타내는 색상 점이 표시됩니다. 이를 클릭하여 이벤트 목록을 확인할 수 있습니다. 참고: 아직 이벤트가 없는 경우 아무것도 표시되지 않을 수 있습니다.
  • 차트 오른쪽 상단에는 다음 세 가지 컨트롤이 있습니다 (왼쪽에서 오른쪽으로).
  • 차트 아래의 측정항목 목록을 숨기거나 표시합니다.
  • 전체 화면 모드 전환
  • 다양한 유용한 기능이 있는 메뉴 (매우 자세한 차트가 있는 경우 X선 모드를 사용해 보세요). '로그 보기' 옵션을 확인하세요. 이 옵션은 나중에 설명합니다.

업타임 체크를 사용하면 웹페이지, 인스턴스 또는 리소스 그룹의 상태를 빠르게 확인할 수 있습니다. 구성된 각 체크는 세계 각지에서 정기적으로 액세스합니다. 업타임 체크는 알림 정책 정의의 조건으로 사용될 수 있습니다.

상단 메뉴에서 알림 > 업타임 체크를 선택하여 체크와 상태를 표시할 수 있습니다. Google Stackdriver 대시보드와 특정 리소스 전용 페이지에도 업타임 체크 섹션이 있습니다. 리소스 그룹을 포함하는 업타임 체크의 경우 체크를 확장하여 그룹의 개별 구성원의 상태를 표시할 수 있습니다.

업타임 체크를 만들어 보겠습니다. Stackdriver 홈 화면에서 업타임 체크 위젯을 찾습니다.

새 팝업이 표시됩니다. 단일 리소스 또는 리소스 그룹에 대한 업타임 체크를 구성하고, 맞춤 헤더와 페이로드를 활용하고, 인증 및 기타 옵션을 추가할 수 있습니다. 지금은 1분마다 자동 생성된 nginx 그룹을 확인하는 기본 http 확인을 사용합니다.

아래 스크린샷을 사용하여 다양한 옵션을 입력하세요.

'테스트' 버튼을 클릭하여 엔드포인트에 연결할 수 있는지 확인하고 (녹색 확인 표시 3개가 표시됨) '저장'을 클릭합니다. 참고: 승인을 받지 못하더라도 테스트 확인 타이밍 문제일 수 있으므로 실습을 계속 진행할 수 있습니다.

그런 다음 '업타임 체크 생성됨' 상자가 표시되고 이 체크에 대한 알림 정책을 만들지 묻는 메시지가 표시됩니다. 다음 섹션에서 이 작업을 진행하겠습니다. 아직 아무것도 클릭하지 마세요.

알림 정책을 설정하여 클라우드 서비스와 플랫폼이 정상적으로 작동하는지 여부를 결정하는 조건을 정의할 수 있습니다. Cloud Monitoring은 정책에서 사용할 수 있는 다양한 종류의 측정항목과 상태 점검을 제공합니다.

알림 정책의 조건을 위반하면 이슈가 생성되어 Stackdriver 콘솔의 이슈 섹션에 표시됩니다. 대응자는 알림 수신을 확인하고 문제가 해결되면 이슈를 종료할 수 있습니다.

'알림 정책 만들기'를 클릭하고 정책 구성으로 이동합니다.

이제 다음과 같은 화면이 표시됩니다.

정책 이름을 입력합니다('nginx 그룹의 업타임 체크').

이제 알림 방법 섹션에서 '알림 추가'를 클릭합니다.

Google Cloud 계정과 연결된 이메일 주소를 입력합니다. 화면 하단으로 스크롤하여 '정책 저장'을 클릭합니다.

왼쪽 상단에 있는 로고를 클릭하여 Stackdriver 홈페이지로 돌아갑니다.

이제 대시보드의 업타임 체크 섹션에 만든 업타임 체크가 표시됩니다. 지금은 상태가 녹색이어야 합니다.

아래로 스크롤하여 이벤트 로그를 확인하면 알림 정책이 생성된 이벤트가 표시됩니다.

이제 문제를 만들어 보겠습니다.

Nginx 서비스를 중지하면 어떻게 되는지 살펴보겠습니다.

Cloud Shell 명령줄에서 인스턴스로 다시 SSH합니다.

$ gcloud compute ssh nginx-plus-1

다음을 입력합니다.

yourusername@nginx-plus-1:~$ sudo service nginx stop

이제 만든 업타임 체크가 실패해야 합니다. 따라서 인시던트가 생성되고 위에서 입력한 주소로 알림 이메일이 전송됩니다. 조건이 감지되는 데 1분이 걸립니다 (업타임 체크를 설정할 때 1분이라는 기간을 기억하시나요?). 이제 nginx 그룹 페이지를 살펴보겠습니다.

특정 리소스 그룹의 대시보드로 이동하는 방법에는 여러 가지가 있습니다.

  1. 홈페이지에서 그룹 이름을 클릭하면 됩니다. 이렇게 하면 그룹의 리소스를 모니터링하기 위해 특별히 빌드된 대시보드로 전환됩니다. 이 대시보드를 맞춤설정할 수도 있습니다.



  2. 최상위 메뉴에서 그룹을 선택한 다음 특정 그룹을 찾습니다.

이제 자동 새로고침 버튼을 클릭하여 대시보드가 자동으로 새로고침되는지 확인합니다. 아이콘이 빨간색으로 바뀝니다.

이제 자동으로 생성된 nginx 그룹에 해당하는 대시보드가 표시됩니다. 오른쪽에는 그룹과 관련된 여러 주요 측정항목의 그래프가 표시됩니다. 즉, 이러한 그래프는 nginx 그룹의 모든 리소스 (앞서 만든 3개의 nginx+ VM)와 관련된 측정항목을 보여줍니다.

왼쪽에는 그룹과 관련된 다양한 정보가 표시됩니다.

  • 인시던트 상태
  • 업타임 체크
  • 이벤트 로그
  • 리소스 목록 (인스턴스, 볼륨 등)

이러한 내용은 그룹과만 관련되므로 이벤트 로그에는 그룹의 이벤트만 나열됩니다.

다양한 리소스 또는 하위 그룹을 클릭하여 자체 대시보드로 전환할 수 있습니다. 예를 들어 nginx-plus-1을 클릭하면 해당 인스턴스와 관련된 측정항목과 검사로만 구성된 대시보드로 이동합니다. 직접 해보기:

일련의 알림 조건이 특정 기준을 충족하면 Stackdriver 이슈가 열립니다. 이 경우 nginx-plus-1에서 현재 실패하고 있는 nginx 업타임 체크에 대한 알림을 설정했습니다. 인시던트를 사용하면 현재 상태를 추적하고 문제를 해결할 때 다른 팀 구성원과 공동작업할 수 있습니다.

문제를 조사하고 있음을 다른 팀 구성원에게 알리기 위해 문제를 확인해 보겠습니다.

이렇게 하면 인시던트 상태가 'Open'에서 'Acknowledged'로 변경됩니다. 상황이 아직 진행 중 (알림 정책 조건이 아직 위반됨)이지만 팀원에게 내가 처리하고 있다고 알리는 경우 이 내용은 이벤트 로그에도 기록됩니다.

이슈는 수동으로 해결하거나 자동으로 해결할 수 있습니다. 후자를 확인하려면 nginx-plus-1에 SSH로 연결하여 문제를 해결하세요.

yourusername@nginx-plus-1:~$ sudo service nginx start

이제 가동 시간 확인이 정상으로 돌아오면 인시던트가 자동으로 해결됩니다. '해결' 메뉴 항목을 선택하여 직접 해결할 수도 있습니다.

Cloud Logging은 여러 소스의 로그를 편리하게 중앙에서 보고 쿼리할 수 있는 로깅 서비스 솔루션입니다. 로그를 사용하여 다른 대상 (Google Cloud Storage, Google BigQuery 또는 Google Cloud Pub/Sub)으로 내보낼 수도 있습니다.

Cloud 로그 뷰어에 액세스하려면 Cloud 콘솔 왼쪽 메뉴에서 선택하세요.

로그 뷰어로 이동하면 사전 정의된 쿼리를 사용하거나 자체 맞춤 쿼리를 만들어 저장하고, 클라우드 배포 전반의 여러 리소스에서 제공되는 로그의 실시간 스트림을 가져오고, 로그에서 측정항목을 만들고, 내보내는 등 다양한 작업을 할 수 있습니다.

관련 정보로 빠르게 필터링할 수 있는 유용한 컨트롤이 있습니다.

  1. 리소스 유형별 필터링
  2. 선택한 리소스의 특정 로그 유형으로 필터링
  3. 특정 로그 수준 필터링
  4. 과거 문제를 검토하기 위해 특정 날짜로 필터링
  5. 연속 스트리밍 전환
  6. 텍스트, 라벨 또는 정규 표현식 검색을 위한 검색창

이제 특정 로그로 좁히는 방법을 연습해 보겠습니다.

리소스 유형 선택기 (스크린샷의 1)에서 Compute Engine -> 모든 리소스 유형을 선택합니다.

다음으로 로그 유형 선택기 (스크린샷의 2)에서 nginx-access를 선택하여 모든 액세스 로그를 확인합니다.

이제 연속 스트리밍을 사용 설정 (5)하여 로그가 수신되는 대로 확인합니다. 새 로그가 표시되지 않으면 브라우저에 nginx-plus VM 중 하나의 외부 IP 주소를 입력해 보세요.

이 Codelab에서는 로그를 자세히 다루지 않지만 나중에 정리하기 전에 자유롭게 살펴볼 수 있습니다. 뷰어 탐색에 대한 자세한 내용은 여기를 참고하세요. Cloud Logging을 활용할 수 있는 기능에 대한 자세한 내용은 여기에서 관련 문서의 최상위 디렉터리를 확인하세요.

Codelab 중에 생성된 컴퓨팅 리소스를 해제해 보겠습니다. Cloud Shell에서 다음 명령어를 실행합니다.

$ for i in {1..3}; do \
gcloud -q --user-output-enabled=false compute instances delete nginx-plus-$i ; done

그런 다음 Google Stackdriver 콘솔(Cloud 콘솔 왼쪽 창 메뉴의 'Monitoring')로 이동하여 생성한 업타임 체크 및 알림 정책을 삭제합니다. 상위 메뉴 항목 알림 -> 정책 개요 및 알림 -> 업타임 체크에서 확인할 수 있습니다.

이제 클라우드 기반 애플리케이션을 모니터링할 수 있습니다.

학습한 내용

  • Stackdriver 홈페이지를 숙지합니다.
  • 대시보드 및 차트 이해
  • 업타임 체크를 만듭니다.
  • 간단한 알림 정책 만들기
  • 알림 인시던트 작업
  • 로그 뷰어 탐색

다음 단계

  • 맞춤 대시보드를 만들어 보세요.
  • 알림 정책을 만들 때 다양한 옵션을 살펴봅니다.
  • Cloud Logging을 사용할 때 사용할 수 있는 다양한 옵션을 살펴봅니다.

자세히 알아보기

Google에 의견 보내기

  • 잠시 시간을 내어 간단한 설문조사에 응해주시기 바랍니다.