Google Cloud Platform (GCP)의 모든 서비스에 대한 로깅과 모니터링을 담당하고 있는 Stackdriver에 대한 이해와 사용법에 대해 소개합니다.
뉴스레터 가입
클라우드 관련 최신 소식을 업데이트 받으실 수 있습니다.
1. Stackdriver Concept
1) GCP 환경에 대한 통합 모니터링 및 로깅
Stackdriver는 자체적인 대용량 Message Queueing 인프라를 이용하여, GCP 서비스에 대한 통합 모니터링 및 로깅을 제공합니다. 모든 GCP 서비스와 긴밀하게 결합되어 있으며, VM 인스턴스를 비롯하여 GCP 내 Managed 서비스에서 발생하는 로그의 취합과 성능 모니터링을 담당합니다.
2) 모니터링
각종 서비스로부터 측정된 성능 및 어플리케이션 메트릭을 취합 및 보관하고, 통합 모니터링 콘솔과 정책 기반 알람을 제공합니다. 또한 AWS 환경을 공식 지원하므로 복수의 GCP 프로젝트와 AWS 환경에 대한 통합 모니터링 환경을 구성할 수 있습니다.
3) 로깅
VM 인스턴스에서 발생된 로그는 Stackdriver 로깅 에이전트(Fluentd 기반)를 통해 Stackdriver로 전송됩니다. 또한 AWS EC2 인스턴스를 공식 지원하므로 GCP와 AWS에 대한 통합 로깅 환경을 구성할 수 있습니다. 인스턴스 로그 이외의 기타 GCP 서비스에서 발생되는 로그 또한 동일하게 Stackdriver 로깅 콘솔에서 조회 및 관리가 가능합니다.
4) 로그 Export
Stackdriver를 통해 취합된 로그 중 원하는 로그를 Cloud Storage, Big Query, Pub/Sub로 Export 할 수 있습니다. 이를 통해 로그의 장기 보관뿐만 아니라 Batch 또는 Real-Time 데이터 처리 파이프라인의 소스로 사용할 수 있으며, 최종적으로 데이터 분석에 활용할 수 있습니다.
5) 어플리케이션 Error Reporting 및 Debugger, 성능 측정
GCP 서비스와 긴밀히 통합된 Stackdriver는 클라우드 상에 배포된 App의 오류 집계, 알람과 Debugger를 제공하며, StackTrace를 통해 App Engine의 지연시간 샘플링과 Reporting을 제공합니다.
2. 모니터링
클라우드 콘솔 메뉴의 ‘Monitoring’에 접속함으로써 GCP 프로젝트의 Stackdriver 계정을 활성화 할 수 있습니다. 하나의 Stackdriver 계정에는 복수의 GCP 프로젝트와 AWS 계정을 Merge 함으로써 단일 모니터링 콘솔에서 편리하게 통합 모니터링 환경을 구축할 수 있습니다.
(*복수의 GCP 프로젝트를 운용할 경우, 모니터링용 별도 프로젝트 구성을 권장합니다.)
[Stackdriver 계정과 프로젝트 구조]
1) 메트릭(Metric) 구조
Stackdriver에서 취합되는 모든 메트릭은 custom.googleapis.com/cpu_utilization와 같은 은 ‘Metric type’으로 명명되며, 모두 아래와 같은 JSON 형태로 정의되어 있습니다. 필요 시 해당 형태를 충족하는 Custom 메트릭을 정의할 수 있습니다.
정의된 메트릭들은 Stackdriver 모니터링 에이전트(Collectd)등을 통해 아래 형태의 시계열(Time Series) 데이터로 자동적으로 저장됩니다.
누적된 메트릭 정보들은 Stackdriver 모니터링 콘솔에 접속하여 손쉽게 원하는 메트릭을 조회하고 Dashboard를 구성할 수 있습니다.
2) 모니터링 가능 메트릭
Stackdriver에서 지원하는 메트릭의 종류는 아래와 같습니다.
구분 | 설명 |
---|---|
GCP 메트릭 | 기본 VM 인스턴스 성능 정보, 자동 수집 |
GCP 서비스 메트릭 | 각종 GCP Managed 서비스 메트릭, 자동 수집 |
Stackdriver 모니터링 에이전트 메트릭 | Collectd 기반 VM(GCE, EC2)인스턴스 상세 성능 정보, 에이전트 설치 시 자동 수집 |
Application 메트릭 with 3rd Party Plugin | Collectd 3rd Party Plug-in을 통한 어플리케이션 모니터링, 에이전트 플러그인 추가 설치 필요 |
Custom 메트릭 | 필요한 메트릭을 사용자 정의하여, Stackdriver에 시계열 데이터를 축적함, 커스텀 메트릭 정의 필요 |
로그 기반 메트릭 | Stackdriver에 축적된 로그를 기반으로 메트릭을 정의, 로그 기반 메트릭 정의 시(로깅 부문 참고) |
AWS 서비스 메트릭 | 연동된 AWS Managed 서비스 메트릭(AWS 계정 연결 시 자동 수집) |
3) 메트릭 탐색기
상기된 모든 메트릭은 메트릭 탐색기에서 ‘Metric Type’을 검색함으로서 손쉽게 조회 및 시각화가 가능합니다.
- 클라우드 콘솔 → Monitoring → Resources → Metric Explorer
4) Dashboard
원하는 메트릭을 선택하여, 간편하게 복수의 Dashboard를 구성할 수 있습니다.
- 클라우드 콘솔 → Monitoring → Dashboards
5) 알림 설정
취합된 모든 메트릭에 대하여 원하는 조건을 지정하고, 해당 조건을 충족할 시 운영자에게 복수의 채널로 알림을 제공할 수 있습니다. Email, Hipchat, Pagerduty, Campfire, Webhook, Slack, SMS, Cloud Console Mobile App 에 대한 알림을 제공하고 있습니다.
알림 조건 | 설명 |
---|---|
Metric Threshold/Rate Change/Absence | 메트릭이 지정된 임계값 이상/이하 또는 메트릭의 수집 속도(Rate)의 변화, 수집 중인 메트릭이 일정 시간 이상 수집이 되지 않는 경우 알람 제공 |
Uptime Check Health | 인스턴스의 Up/Down 상태 체크 |
Process Health | VM 인스턴스의 프로세스 유무에 기반하여 알람 제공 |
[알림 지원 조건]
해당 조건이 발생시키는 이벤트에 대하여 Incident를 관리하고, 이력을 조회할 수 있습니다.
- 클라우드 콘솔 → Monitoring → Alerting
3. 로깅
GCP 서비스 내에서 발생하는 모든 로그 프로젝트 단위별로 Stackdriver Logging에 JSON 형태로 수집됩니다. 이를 콘솔에서 조회 및 검색할 수 있으며, Export 기능과 로깅 API를 이용하여 다양한 용도로 활용할 수 있습니다.
[Stackdriver 로그 형태]
1) 로그의 조회 및 검색
Stackdriver의 로깅 콘솔에 접속하면 기본적으로 서비스 카테고리로 구분된 로그를 손쉽게 조회할 수 있습니다. 좀 더 상세한 조건으로 로그를 검색하고자 할 경우 Advanced Filter를 이용할 수 있습니다.
Advanced Filter를 이용하면 카테고리와 무관하게 모든 JSON 값에 대한 조건문을 구현하여 고급 검색이 가능합니다.
로그의 필드를 클릭하면 해당 값에 대한 Filter 자동 완성이 지원되므로 신속하게 Filter 조건을 구성할 수 있습니다.
2) Stackdriver 로깅 에이전트
VM 인스턴스에서 발생하는 각종 로그를 수집하기 위해선 Stackdriver 로깅 에이전트를 필요로 하며, 제공된 설치 스크립트를 이용하여 간편하게 구성을 완료할 수 있습니다. 기본 설치 완료 시, VM에서 발생하는 syslog와 일부 웹, DB들에 대한 로깅 설정이 사전 구성되어 있습니다. 또한 AWS 인스턴스를 공식 지원하므로 필요 시, 통합 로깅 환경을 구성할 수 있습니다.
[로그 에이전트 처리 흐름]
로깅 에이전트는 오픈 소스인 Fluentd를 기반으로 하고 있으므로, Fluentd에서 지원되는 대부분의 In, Out, Filter, Parser, Formatter 플러그인 기능을 사용할 수 있습니다. 따라서 원하는 로그를 필요한 형태로 자유롭게 가공하여 Stackdriver로 전송할 수 있습니다. Fluentd의 환경 설정 파일을 /etc/google-fluentd/config.d 폴더 내에 위치시킨 후 에이전트를 재기동하면 설정이 적용됩니다.
3) 로그 Export
Stackdriver로 수집된 로그는 원하는 로그에 대한 Filter를 적용하여 다양한 경로로 Export를 구성하여 다양한 목적으로 활용할 수 있습니다.
[로그 Export 구성]
4. 가격 정책
Stackdriver는 로깅과 모니터링을 위해 축적되는 데이터의 양을 기준으로 과금이 발생합니다. 단, 기본적으로 월별 무료 할당량이 제공되며, 해당 양을 소진하였을 경우 초과분에 대한 월별 과금이 적용됩니다.
기능 | 가격 | 월별 무료 할당량 |
---|---|---|
Stackdriver 로깅 | $0.50/GB | 프로젝트당 처음 50GB |
Stackdriver 모니터링 | $0.2580/MB: 150~100,000MB $0.1510/MB: 100,000~250,000MB $0.0610/MB: >250,000MB | 모든 GCP 메트릭 항목 GCP 외 측정항목: < 150MB |
Stackdriver Monitoring API | API 호출 1,000개당 $0.01 | 처음 1백만 개의 API 호출 |
[기본 과금 정책]
로깅 데이터는 종류에 따라 과금 정책과 저장 기간에 차이가 있으며, 필터를 적용하여 Stackdriver로 전송된 로그들 중 불필요한 로그를 저장하지 않도록 구성할 수 있습니다. 이를 활용하여 장기 보관 정책을 구성하거나, 요금을 절약합니다.
종류 | 상세 |
---|---|
Admin activity audit 로그 | 클라우드 플랫폼 자체에 대한 행위 log 보관 기간 : 400일 무료, 비활성화 불가능 |
Data access Audit 로그 | 데이터 생성/수정/읽기에 대한 API call log 보관기간 : 30일 기본 비활성화 상태 단, BigQuery data access는 무료 |
일반 로그 | Audit 로그와 Data Access 로그를 제외한 모든 로그 보관 기간 : 30일 |
[로그 종류별 과금 정책]
구글 클라우드 플랫폼(GCP)에 대해 더 알고 싶으세요?
베스핀글로벌의 GCP 전문 엔지니어가 답해드립니다.