GCP Cloud Monitoring
- 1 차트 및 대시보드
- 1.1 대시보드 내보내기
- 2 agent 개요
- 3 agent 설치
- 3.1 JVM 설정
- 4 리소스 그룹
- 5 가동시간 확인 및 알림 정책 만들기
- 5.1 업타임 체크
- 5.2 알림채널
- 5.3 알림채널 google chat 연동하기
- 5.4 알림채널 Slack 연동하기
- 5.5 알림정책
- 6 로그 보기
- 7 메트릭
- 8 참고
Cloud Monitoring: Qwik Start | Google Cloud Skills Boost 자료는 Quickstart: Collect Apache metrics with the Ops Agent | Cloud Monitoring | Google Cloud 의 내용을 기반으로 하였음.
차트 및 대시보드
Cloud Monitoring은 서비스 또는 사용 중인 Google Cloud 리소스의 측정값을 수집하고 시각화 할 수 있는 도구이다. 현재 서비스의 부하나 성능을 확인하려면 차트 및 대시보드 도구를 사용해야 한다. 이 차트 및 대시보드는 기본적으로 생성된 서비스나 리소스에 따라 자동으로 구성되지만 커스텀 대시보드를 생성해 원하는 지표를 선택해 표시할 수 있다.
Cloud Monitoring에서 어떤 지표가 있는지 궁금하다면 아래 문서들을 참고하면 된다.
전체 측정 항목 - Google Cloud metrics | Cloud Monitoring
Ops-Agent 측정 항목 - Ops Agent metrics | Cloud Monitoring | Google Cloud
OpenCensus의 커스텀 측정 항목 - Add custom traces and metrics to your app with OpenTelemetry | Cloud Monitoring | Google Cloud
Monitoring API를 활용한 커스텀 측정 항목 - Create user-defined metrics with the API | Cloud Monitoring | Google Cloud
Cloud Logging 측정 항목 - Google Cloud metrics | Cloud Monitoring
이 외에도 Anthos, AWS, Istio, Knative, k8s, External에 대한 측정 항목도 확인 할 수 있다. 참고로 Monitoring/Logging Agent 측정 항목도 존재하는데 이는 Legacy Agent로 Ops-Agent 사용을 권장하고 있다.
CPU, Memory 등의 경우는 GCP 에서 측정하는 항목(하이퍼바이저)과 작업 에이전트(OS 레벨)에서 수집하는 정보가 다를 수 있다.
Cloud Monitoring에 사용되는 측정 항목에 대한 시계열은 아래와 같은 구조를 가진다.
위 시계열 중 metricKind는 아래 세 가지 값을 가질 수 있다.
GAUGE : 시간별 온도 처럼 특정 시점의 측정 값을 저장
CUMULATIVE : 차량의 주행 거리 처럼 특정 시점의 누적 값을 저장
DELTA : 주식 종목 요약처럼 지정된 기간 동안 측정 된 값의 변화량을 저장
valueType은 INT64, DOUBLE, BOOL, STRING, DISTRIBUTION 중 하나의 값을 가질 수 있다.
위 시계열 데이터를 시각화 한 것이 Cloud Monitoring의 대시보드이다.
Google Cloud 대시보드 : 사용중인 리소스 기반으로 자동 생성되는 대시보드
커스텀 대시보드 : 사용자가 원하는 지표를 추가해 확인할 수 있는 대시보드
이 외에도 측정 항목 탐색기를 사용해 확인할 수도 있다.
대시 보드를 생성하는 방법은 Cloud Console에서 직접 생성하거나 Monitoring API를 사용해 생성하는 방법이 있다. API를 사용하는 방식은 시간이 너무 오래 걸릴 수 있기 때문에 json으로 대시보드 정보를 관리하고 싶다면 Console로 대시 보드 생성 후 API로 대시 보드 정보를 내보내면 된다. 자세한 내용은 아래 문서들을 확인하면 된다.
대시보드 내보내기
대시보드 이름, 화면출력
# 대시보드 name
$ gcloud monitoring dashboards list --format="json" | jq -r '.[].name'
projects/00000000000/dashboards/15116bf5-7e26-4fa3-b792-0956ec7cb860
projects/00000000000/dashboards/1ad7a984-050f-448d-b63d-db936bc037ac
projects/00000000000/dashboards/21be73e9-3d5b-48d7-9945-c08d05dbb203
projects/00000000000/dashboards/28132add-2fbd-43e4-9790-c1f531261a4c
projects/00000000000/dashboards/28ea549d-59c9-4c6f-b99a-bac3dfbf6bb8
....
# displayName
$ gcloud monitoring dashboards describe projects/00000000000/dashboards/15116bf5-7e26-4fa3-b792-0956ec7cb860 --format="json" | jq -r '.displayName'
gw-filestore-monitoring-dev
$ gcloud monitoring dashboards list --format="json" | jq '.[] | {name: .name, displayName: .displayName}'
{
"name": "projects/00000000000/dashboards/15116bf5-7e26-4fa3-b792-0956ec7cb860",
"displayName": "gw-filestore-monitoring-dev"
}
{
"name": "projects/00000000000/dashboards/1ad7a984-050f-448d-b63d-db936bc037ac",
"displayName": "gw-redis-monitoring-dev"
}
대시보드를 내보낼때는 Google Cloud Console, API, gcloud를 사용할 수 있다.
위처럼 대시보드를 json 형식으로 내보냈다면 해당 파일과 아래 명령어를 사용해 대시보드를 다시 생성할 수도 있다.
gcloud monitoring dashboards create | Google Cloud CLI Documentation
대시보드가 많아서 Cloud Storage에 백업해 두었다면 아래와 같이 스크립트를 생성해 일괄 생성할 수도 있다.
agent 개요
Ops Agent overview | Cloud Monitoring | Google Cloud
예전에는 모니터링 agent, 로깅 agent 가 따로 있었지만 현재는 통합되어 ops agent 를 설치하면 모니터링, 로깅 둘다 지원함. 위 문서에서 로깅 기능, 모니터링 기능 확인
측정 세부항목
Ops Agent metrics | Cloud Monitoring | Google Cloud
agent 설치
Install the Ops Agent | Cloud Monitoring | Google Cloud
설치방법은 세가지가 있음.
Agent Policies(GCP에서 제공하는 관리 프로그램) 를 이용. 이 경우에는 사전에 OS 구성 agent 가 설치되어 있어야 한다.
자동화 도구(Ansible, Chef, Puppet 등 이용)
VM에 수동설치. 패키지명은
google-cloud-ops-agent
임. 수동설치도 CLI 를 이용할 수도 있고 GCP console 의 Compute Engine 이나 Cloud Monitoring 의 VM 대시보드를 이용할 수 있다. 윈도우즈 agent는 UI에서 지원이 안된다.
Installing the Ops Agent on individual VMs | Google Cloud Observability
Linux 설치
windows 설치 (Powershell)
작동 확인
agent 설치 후 로그 탐색기에서 해당 VM의 로그를 확인할 수 있다.
JVM 설정
N-GW에서 모니터링 대상 중 하나인 WAS 서버에는 Java로 되어 있는 어플리케이션이 배포 되어 있다. 때문에 JVM에서 측정항목을 수집할 필요가 있다. 해당 내용에 대한 문서는 이 문서를 참고.
JVM에서 측정항목을 수집하기 위해서는 Ops-Agent 2.2.0 이상이 설치되어 있어야 한다.
JDK 1.5부터 모니터링을 위해 JMX라는 API를 제공한다. Ops-Agent는 이 JMX를 사용해 측정항목을 수집한다. JMX는 의 엔드포인트를 노출하려면 아래와 같은 시스템 속성들을 설정해야 한다.
com.sun.management.jmxremote.port
com.sun.management.jmxremote.rmi.port
java.rmi.server.hostname (원격으로 노출할 경우)
rmi.port의 값은 port의 값과 동일하게 설정해야 한다. 그리고 현재 구성하려는 것은 내부 Ops-Agent에서 JMX 엔드포인드에 접근하는 것이기 때문에 java.rmi.server.hostname은 설정할 필요가 없다.
JMX 엔드포인트를 설정했으면 Ops-Agent에서 위 API를 통해 정보를 수집하도록 설정해야한다.
endpoint에 JMX 엔드포인트를 설정하면 된다. java.rmi.server.host를 설정하지 않았으면 localhost로 지정하고, port는 com.sun.management.jmxremote.port 값으로 지정한다. 자세한 수집 구성은 이 문서를 참고하면 된다.
리소스 그룹
모니터링할 리소스들을 그룹으로 묶어서 관리할 수 있다. 이렇게 그룹화 하면 모니터링이나 알림들을 그룹 단위로 설정할 수 있게 된다. 그룹은 하위 그룹으로 최대 6단계 까지 포함 시킬 수 있으며, 이 하위 그룹을 사용하면 물리적/논리적 토폴리지를 관리할 수 있어 프로덕션 리소스 모니터링과 개발 리소스 모니터링을 쉽게 분리할 수 있다.
그룹을 만들면 Monitoring에서 그룹에 대한 대시보드를 만들어 확인할 수 있다. 그룹 대시보드의 경우 표준 대시보드 기준외에 그룹에 대한 기능을 추가로 제공한다. - Configure resource groups | Cloud Monitoring | Google Cloud
그룹 수정/삭제
그룹 종속 알림 정책 관리
하위그룹 생성
이슈/이벤트 확인
그룹 리소스 확인 및 액세스
그룹 기준은 이름, 태그, 리전, 보안그룹, Cloud 계정 및 프로젝트, App Engine 앱, App Engine 서비스 등으로 나눌 수 있다. 이 중에서 선택해서 기준을 만들 수 있으며 한 그룹안에 여러 기준을 포함 시킬 수 있다.
만약에 기준으로 이름이나 태그를 선택할 경우 연산자를 선택해야한다.
이름 선택시 연산자
태그 선택시 연산자
이 그룹은 projects.groups API를 사용해 생성,수정,검색,삭제 등의 작업을 수행할 수 있지만, API를 사용해 만든 그룹은 UI에서 수정이 불가능하다.
참고로 그룹과 업타임 체크는 SDK로 제공하지 않는 것으로 보임.
가동시간 확인 및 알림 정책 만들기
업타임 체크
알림채널
알림채널로는 Mobile, PagerDuty, Slack, Webhooks, Email, SMS, Cloud Pub/Sub이 있다.
https://cloud.google.com/monitoring/alerts/using-channels-api#api-list-channels
API 이용하여 알림채널 추가하기. yaml 형태로 파일 작성.
메일 알림 채널은 그룹 메일도 설정 가능하다.
알림채널 google chat 연동하기
google chat 연동은 잘 사용하지 않기 때문에 slack 연동을 추천
알림채널 Slack 연동하기
알림정책
측정항목을 기준으로 알림 정책을 생성할 수 있다. 알림 정책에서 지정한 기준을 초과하면 정책 생성 시 지정한 알림 채널을 통해 알림 메세지를 보낸다.
알림 정책은 Google Cloud Console에서 쉽게 생성할 수 있다. API와 CLI로도 가능하지만 사전에 알림 정책을 정의해둔 파일을 가지고 있지 않다면 그냥 Cloud Console을 사용할 것을 권장.
Cloud Console로 알림 정책 관리
API 및 CLI로 알림 정책 관리
https://cloud.google.com/monitoring/alerts/using-alerting-api
https://cloud.google.com/sdk/gcloud/reference/alpha/monitoring/policies
만약에 생성한 알림 정책을 파일로 백업해 보관하고 있다면 아래처럼 Script를 사용해 복구할 수 있다.
로그 보기
Cloud Logging에서 로그 보면 됨.
메트릭
참고
Monitoring 코드 샘플 - https://cloud.google.com/monitoring/docs/samples