Stackdriver의 모니터링 및 로깅을 사용하여 애플리케이션 상태 확인

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

이 Codelab에서는 다음 작업을 하게 됩니다.

  • Stackdriver 홈페이지에 대해 숙지합니다.
  • 대시보드 및 차트 이해하기
  • 업타임 체크 만들기
  • 간단한 알림 정책을 만듭니다.
  • 알림 이슈를 처리합니다.
  • 로그 뷰어로 이동합니다.

Stackdriver 사용 경험

모니터링 - 이전에 Stackdriver를 사용한 적이 없지만 애플리케이션을 모니터링한 경험이 있습니다. Stackdriver 타이어를 작동시켰지만 완전히 식은 것은 아닙니다.

자기 보속적 환경 설정

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

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

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

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

그런 다음 Compute → Compute Engine → VM Instance를 선택합니다.

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

대부분의 작업은 Cloud에서 실행되는 명령줄 환경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

그러면 다음 기본값이 있는 방화벽 규칙(80)이 생성됩니다.

  • 인바운드 연결 (--source-ranges)이 허용되는 IP 주소 블록의 목록이 0.0.0.0/0 (모든 위치)로 설정됩니다.
  • 인바운드 연결을 수락할 수 있는 네트워크의 인스턴스 집합을 나타내는 인스턴스 태그 목록이 없음으로 설정되며, 이는 방화벽 규칙이 모든 인스턴스에 적용될 수 있음을 의미합니다.

모든 기본값을 보려면 gcloud compute firewall-rules create --help를 실행합니다.

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

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

$ gcloud compute instances list

Google Stackdriver는 다양한 도구를 통합하여 클라우드 기반 애플리케이션을 모니터링하고 분석할 수 있는 강력한 모니터링 솔루션입니다. Stackdriver를 사용하여 한곳에서 실적 측정항목을 보고, 알림을 설정 및 수신하며, 커스텀 대시보드 및 측정항목을 추가하고, 로그와 trace를 보고, 통합 대시보드를 설정할 수 있습니다.

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

기본적으로 Google Stackdriver는 현재 베타 버전이며 새 프로젝트에서 사용 설정되어 있지 않습니다. 사용 설정하려면 왼쪽 탐색 메뉴로 이동하여 'Monitoring 및 quot;를 클릭하세요. 스크롤해야 할 수 있습니다.

다음 화면에서 '모니터링 사용 설정'을 클릭하고 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:~$

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

또는 콘솔에서 직접 인스턴스에 SSH를 통해 연결할 수도 있습니다. Compute Engine > VM 인스턴스로 이동하고 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 홈 화면에서 업타임 체크 위젯 찾기:

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

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

엔드포인트에 연결할 수 있는지 확인하려면 '테스트' 버튼을 클릭하고 녹색 체크표시가 3개 나타나야 하며 '저장'을 클릭합니다. 참고: 문제가 해결되지 않더라도 테스트 점검 시간 문제일 수 있으므로 실습을 계속 진행하면 됩니다.

다음으로 '업타임 체크가 생성됨' 체크박스와 이 체크에 대한 알림 정책을 만들지 묻는 메시지가 표시됩니다. 다음 섹션에서는 아무 것도 클릭하지 마세요.

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

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

'알림 정책 만들기'를 클릭하면 정책을 구성할 수 있습니다.

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

정책 이름 입력: "nginx 그룹의 업타임 체크"

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

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

Stackdriver 홈페이지로 돌아갑니다 (왼쪽 상단의 로고 클릭).

이제 대시보드의 업타임 체크 섹션에 생성된 업타임 체크가 표시됩니다. 지금은 상태가 녹색입니다.

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

이제 문제가 발생할 수 있습니다.

Ngnix 서비스를 중단하면 어떻게 되는지 알아보겠습니다.

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

$ gcloud compute ssh nginx-plus-1

다음을 입력합니다.

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

이제 생성된 업타임 체크가 실패하게 됩니다. 따라서 이슈가 생성되고 위에 입력한 주소로 알림 알림이 전송됩니다. 조건이 감지되는 데 1분 정도 걸립니다 (업타임 체크를 설정하는 데 1분이 소요됨). Google Cloud에서 nginx 그룹 페이지를 살펴보겠습니다.

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

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



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

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

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

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

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

단, 이는 그룹과만 관련이 있으므로 이벤트 로그에는 그룹의 이벤트만 표시됩니다.

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

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

이슈를 확인하고 다른 팀원에게 조사 중임을 알립니다.

이렇게 하면 이슈의 상태가 진행 중에서 확인됨으로 변경됩니다. 이 상황은 계속 진행 중이지만 알림 정책 조건은 여전히 위반하고 있습니다. 하지만 팀원들에게 문제가 있다고 알립니다. 이 이벤트는 이벤트 로그에도 기록됩니다.

이슈는 수동으로 해결하거나 자동으로 해결될 수 있습니다. 후자를 보려면 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 Console 왼쪽 메뉴에서 다음을 선택합니다.

그러면 로그 뷰어로 이동하여 사전 정의된 쿼리를 사용하거나 커스텀 쿼리를 만들고 저장하고, 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

그런 다음 Cloud Console 왼쪽 창 메뉴에서 Google Stackdriver Console로 이동하여 자신이 만든 업타임 체크와 알림 정책을 삭제합니다. 최상위 메뉴 알림 -> 정책 개요 및 알림 - 업타임 체크에서 이 작업을 수행할 수 있습니다.

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

학습한 내용

  • Stackdriver 홈페이지에 익숙해지기
  • 대시보드 및 차트 이해하기
  • 업타임 체크를 만드는 중입니다.
  • 간단한 알림 정책 만들기
  • 알림 이슈를 처리합니다.
  • 로그 뷰어 탐색

다음 단계

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

More 알아보기

Google에 의견 보내기

  • 잠시 시간을 내어 간단한 설문조사를 작성해 주세요.