[GCP-13] Stackdriver

2022. 1. 23. 16:55카테고리 없음

0. 지난 글

[GCP-1] 구글 클라우드 기본 개념

https://ejtag.tistory.com/23

[GCP-2] 구글 클라우드 실습 준비

https://ejtag.tistory.com/24

[GCP-3] 구글 클라우드 IAM - 권한

https://ejtag.tistory.com/25

[GCP-4] Compute Engine - 서버

https://ejtag.tistory.com/26 

[GCP-5] VPC - 네트워크 및 보안장비

https://ejtag.tistory.com/27

[GCP-6] Cloud Load Balancing - 부하분산

https://ejtag.tistory.com/29

[GCP-7] Google Cloud Storage - DB

https://ejtag.tistory.com/30

[GCP-8] Cloud SQL - DB

https://ejtag.tistory.com/31

[GCP-9] BigQuery - DB & 응용 & 빅데이터

https://ejtag.tistory.com/33

[GCP-10] Cloud Composer - 워크플로우 관리 (kubernetes)

https://ejtag.tistory.com/35

[GCP-11] source Repositories - 저장소

https://ejtag.tistory.com/36

[GCP-12] cloud Pub / Sub - 구독서비스 & 빅데이터

https://ejtag.tistory.com/38

 

14. Stackdriver

16.1 stackdriver란?

Stackdriver는 googld cloud platform의 대표적인 모니터링/로깅 서비스이다.

측정항목(metrix), 로그, 이벤트를 인프라에서 집계하고 개발자와 운영자에게 제공하여 문제 발생 시 원인 분석에 도움을 준다.

stackdriver는 GCP뿐만 아니라 AWS, 온프레미스, 하이브리드 클라우드 등 실행 환경에 관계없이 모든 클라우드 계정 및 프로젝트 측정 항목, 로그, 메타 데이터를 포괄적으로 볼 수 있다. 

 

16.2 stackdriver 기능 

- 디버거

- 오류보고

- 신속한 발견 

- 가동시간 모니터링

- 스마트 기본값

- 알림

- trace : url별 통계 및 지연 시간 분포 등 google app engine에 지연 시간 샘플링과 보고를 제공한다.

- 대시보드

- 프로파일링 : 리소스 소비에 관한 지속적인 프로파일링을 제공

 

16.3 stackdriver monitoring

stackdriver monitoring은 클라우드 기반의 서비스들의 전반적인 상태에 대한 정보를 제공한다.

stackdriver는 GCP뿐만 아니라 AWS, 온프레미스, 하이브리드 클라우드 등 실행 환경에 관계없이 모든 클라우드 계정 및 프로젝트 측정 항목, 로그, 메타 데이터를 포괄적으로 볼 수 있다. 

이렇게 수집된 데이터는 stackdriver의 대시보드에서 카드 뷰 형태로 확인 가능하며, 알림기능도 제공한다.

 

16.3.1 권한

monitoring을 사용하려명 cloud IAM권한이 필요하다.

API의 REST 메소드 마다 연결된 권한이 하나씩 있는데, 특정 메소드를 사용하려면 해당하는 권한이 있어야 한다. monitoring 쓰기, 알림 등 필요로 하는 권한은 사전에 정의되어 있고 이러한 역할은 아래에 있다.

 

- monitoring.viewer : stackdriver monitoring 콘솔 및 api에 대한 읽기 전용 엑세스 권한을 제공한다.

- monitoring.deitor : stackdriver monitoring 콘솔 및 api에 대한 읽기, 쓰기 전용 엑세스 권한을 제공한다.

- monitoring.admin : 모든 모니터링 기능에 대한 전체 엑세스 권한을 제공한다.

 

- monitoring.metricWriter : 작업공간에 모니터링 데이터를 기록할 수 있다. stackdriver monitoring 콘솔에는 엑세스 불가하다. (서비스 계정용)

 

- monitoring.alertPolicyViewer : 알림정챙게 대한 읽기 전용 엑세스 권한을 제공한다.

- monitoring.alertPolicyEditor : 알림정챙게 대한 쓰기 전용 엑세스 권한을 제공한다.

 

- monitoring.notificationDhannelViewer : 알림 채널에 대한 읽기 전용 엑세스 권한을 제공한다.

- monitoring.notificationDhannelEditor : 알림 채널에 대한 쓰기 전용 엑세스 권한을 제공한다.

 

- viewer : stackdriver monitoring 콘솔 및 api에 대한 읽기 전용 엑세스 권한을 제공한다.

- editor : stackdriver monitoring 콘솔 및 api에 대한 읽기-쓰기 전용 엑세스 권한을 제공한다.

- owner : stackdriver monitoring 콘솔 및 api에 대한 전체 엑세스 권한을 제공한다.

 

16.3.2 측정항목(metrix)

측정항목은 어플리케이션이나 서비스 성능을 이해하고 모니터링할때 도움이 되는 여러 유형의 값이다. 

GCP, AWS 등 타사 소프트웨어를 측정항목을 통해 모니터링 가능하다.

개별 측정항목은 각 시계열로 수집이 되며, 각 시계열에는 측정항목 이름, timestamp-value, key-value 형태로 표현된다.

참고 : https://cloud.google.com/monitoring/api/metrixs 

 

16.4 Stackdriver logging

로그 데이터 및 이벤트를 저장, 검색, 분석, 모니터링하고 알림을 받을 수 있다.

주요개념은 아래와 같다.

- 프로젝트  : stackdriver logging은 주로 GCP 프로젝트와 연결되어 로그를 표시한다.

- 로그 항목 : 로그항목이 전달하는 메시지를 페이로드라고 하는데, 이는 간단한 문자열 또는 구조화된 데이터 일수있다.

- 로그 : 

- 보관 기간 : 

- 모니터링 리소스 : 각 로그항목은 모니터링 리소스의 이름으로 그 출처를 표시한다.

- 필터 : 로그 뷰어와 stackdricer logging API에서 로그 항목을 선택하는데 사용한다.

- 로그 싱크 : stackdriver logging이 수신하는 로그 항목을 GCS의 버킷, BigQuery의 데이터세트, Pub/Sub의 주제로 보낼 수 있다. 

- 로그 기반 측정 항목  : 사용자가 지정하는 필터와 일치하는 로그 항목 개수 값

- 감사 로그 : 관리자 활동, 시스테 이벤트, 데이터 엑세스에 관한 정보 로깅

- 엑세스 제어 : cloud IAM을 통해 제어 가능

 

16.4.1 권한

- logging.viewer : 비공개 로그를 제외한 모든 로그 기능에 대한 읽기 전용 엑세스 권한을 제공한다.

- logging.privateLogViewer : logging.viewer 권한에 비공개 로그 읽기 권한을 더한 권한을 제공한다.

- logging.configWriter: 서비스 계정인 구성원에 부여될 수 있으며, 로그를 작성하는 권한은 제공하나 로그 읽기 권한은 부여하지 않는다.

- logging.admin : 모든 로깅기능에 대한 전체 엑세스 권한을 제공한다.

 

- viewer : stackdriver logging 콘솔 및 api에 대한 읽기 전용 엑세스 권한을 제공한다.

- editor : stackdriver logging 콘솔 및 api에 대한 읽기-쓰기 전용 엑세스 권한을 제공한다.

- owner : stackdriver logging 콘솔 및 api에 대한 전체 엑세스 권한을 제공한다.

 

[실습 16.1 - stackdriver Agent 설치]

1. VM 인스턴스 한개를 만든다.

2. 메뉴 > 모니터링 > 대시보드 메뉴에 가면 VM Instances가 있는데 클릭해보면 아까 만든 instance-2를 클릭해보면 CPU 사용량이나, network traffic 같은것들이 보인다.

3. 로깅 기록을 보기 위해 메뉴 - 로그기록 - 로그에 접근한다. 기본적인 로그 필터링을 통해 로그 보기가 가능하다. (그러나 acces log나 error 로그는 볼수없다)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4. 인스턴트에 stackdriver monitoring agent를 설치해보자

4-1. instance-2 VM 이름 옆에 있는 ssh키를 누르면 터미널에 연결된다.

4-2. 특정 인스턴트에 stackdriver의 모니터링, 로깅 에이전트 설치하기

설치 스크립트 받기

curl -sSO https://dl.google.com/cloudagents/install-monitoring-agent.sh 

설치

sudo bash install-monitoring-agent.sh

잘 설치 됬는지 확인 - 에러가 안나타나면 잘 설치된것

sudo service stackdriver-agent restart

stackdriver logging agent 설치

curl -sSO https://dl.google.com/cloudagents/install-logging-agent.sh

설치

sudo bash install-logging-agent.sh

 

4-3. 메뉴 > 모니터링 > instance-2 선택 하면 상단에 agent가 설치된걸 볼 수 있다.

4-4. 아까는 볼 수 없었던 syslog를 볼 수 있게 되었다.

 

[실습 16.2 - 커스텀 측정 항목 만들어서 알람 설정]

1. create policy

2. 알람이름을 정하고 

resource type : VM instance

metric : CPU Usage

filter : intance_id=아까만든 인스턴스아이디

thredhold : 80 (cpu 사용량 80으로 할것이므로)

위와 같이 설정 후 만들기 한다.

알림채널관리를 눌러 이메일을 추가해서 체크한다.

이제 강제로 인스턴스 사용율을 높여보겠다. (stress 란 명령어 사용해서)

sudo apt-get install stress

stress --vm 3 --vm-bytes 1024m --timeout 60s

 

그럼 설정해둔 이메일로 cpu 사용량이 초과되었다고 알람이온다.