- cloud-monitoringcompute-enginegcp-vmgoogle-cloudgoogle-ops-agent
Google Cloud Compute Engine 무료 VM 생성과 Ops Agent 모니터링
Agentic AI의 등장으로 애플리케이션 구현 자체는 매우 쉬워졌다. 하지만 실제 서비스로 활용하려면 인터넷에 공개된 서버 환경에 배포(deployment) 하는 과정이 필요하다. 이 글에서는 Google Cloud Platform(GCP)이 제공하는 IaaS 서비스인 Google Compute Engine(GCE)를 이용해
- VM 인스턴스를 생성하고
- 무료 티어로 운영하며
- Ops Agent를 통해 서버 상태를 모니터링하는 방법 을 단계별로 설명한다.
Google Cloud 프로젝트 생성
GCP에서는 VM을 포함한 모든 리소스를 프로젝트 단위로 관리한다. 먼저 프로젝트를 생성하면 <프로젝트_ID> 가 함께 발급되며, 이후 CLI나 API를 사용할 때 이 ID를 기준으로 리소스를 식별한다.
curl -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/project/project-id
# 프로젝트 ID 출력 됨
# glassy-sky-450603-f6Google Cloud 무료 VM Instance
프로젝트 생성 후 Compute Engine 에서 VM 인스턴스를 생성한다. 무료 티어 조건은 다음과 같다.
- e2-micro: vCPU 2개, 메모리 1GB
- 부팅디스크: 30GB 표준 영구 디스크
- us-east1, us-central1, us-west1-a 리전 중 하나
위 조건으로 단일 인스턴스를 운영하면 월 과금 기준을 넘지 않아 무료 사용이 가능하다. (단 북미 외 지역으로 데이터 전송은 월 1GB 이내여야 함, 무료기준 안내문서) 간단한 웹앱이나 API 서버로 충분한 사양이다.
생성한 VM은 여러가지 방법으로 접속할 수 있다.
- GCP 콘솔 대시보드에서 SSH 연결: 24시간 유효한 SSH key 자동 생성 및 전달
- 직렬 콘솔 연결
- 로컬PC에서 SSH로 직접연결
- Google Cloud Console(Web Shell)
아래 예시는 Ubuntu 기반 VM을 기준으로 설명한다.
Google Cloud Observability Agent (Ops Agent) 설치
서버의 CPU, 디스크, 메모리, 네트워크 상태를 모니터링하려면 Google Cloud Observability Agent(Ops Agent) 를 설치하는 것이 편리하다. Ops Agent를 사용하기 위해서는 서비스 계정을 만들어서 VM에 연결하고, ops agent 를 설치한다.
서비스 계정 생성 및 권한지정 (ops agent 실행 용)
GCP 콘솔에서 다음 경로로 이동해 서비스 계정을 생성한다. 프로젝트 → IAM 및 관리자 → 서비스 계정 → 서비스 계정 만들기 생성되는 서비스 계정의 형식은 다음과 같다. <서비스계정명>@<프로젝트ID>.iam.gserviceaccount.com
서비스 계정은 RBAC(Role Based Access Control) 방식으로 동작하며,
부여된 역할 범위 내에서만 GCP 리소스에 접근할 수 있다.
Ops Agent에 필요한 역할
Ops Agent 실행을 위해 다음 두 가지 역할을 부여한다.
- Monitoring Metric Writer:
roles/monitoring.metricWriter - Logs Writer:
roles/logging.logWriter
⚠️ VM에 서비스 계정을 할당하려면 VM을 중지한 상태에서 수정(Edit) 화면을 통해 연결해야 한다.
VM에서 서비스 계정의 접근 범위 확인
# 현재 서비스 계정의 scopes 확인
curl --silent --connect-timeout 1 -f -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scopes
# 아래 출력이면 접근범위가 충분하다.
# https://www.googleapis.com/auth/cloud-platform
# 아래처럼 출력되는 경우도 접근범위가 충분하다.
# https://www.googleapis.com/auth/logging.write 또는
# https://www.googleapis.com/auth/logging.admin
# https://www.googleapis.com/auth/monitoring.write 또는
# https://www.googleapis.com/auth/monitoring.admin
# 현재 서비스 계정 확인(참고)
curl -H "Metadata-Flavor: Google" \
http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/email개별 VM 인스턴스에서 Ops Agent 설치
서비스 계정 설정이 완료되면, VM에 접속해 Ops Agent를 설치한다.
# 개별 VM에 운영 에이전트 설치
curl -sSO https://dl.google.com/cloudagents/add-google-cloud-ops-agent-repo.sh
sudo bash add-google-cloud-ops-agent-repo.sh --also-install실행상태 확인(Active 확인)
sudo systemctl status google-cloud-ops-agent
# Active 이면 정상 동작운영 에이전트 제거(참고)
sudo bash add-google-cloud-ops-agent-repo.sh --uninstallVM 동작상태 관리
서버 운영 중에는 로그와 시스템 자원 사용량을 주기적으로 확인하고, 문제를 일으키는 프로세스를 정리하는 작업이 필요하다.
syslog 확인
# 로그 파일을 확인한다.
vi /var/log/syslog
# 실시간 로그
tail -f /var/log/syslog
# 최근 apt 이력 확인
cat /var/log/apt/history.log | tail -100
메모리 사용량 및 프로세스 정리
# 메모리 사용량 확인
free -h
top -o %MEM
# 메모리 사용량 상위 프로세스
ps aux --sort=-%mem | head -20문제 프로세스 종료 예시
# 예: ddclint가 계속 에러를 발생시키고 있음
# 서비스 중지
sudo systemctl stop ddclient
# 자동 실행 비활성화
sudo systemctl disable ddclient
# 서비스 상태 확인
sudo systemctl status ddclient
# 패키지 제거(옵션)
sudo apt remove --purge google-cloud-ops-agent
# 시스템 재부팅
sudo reboot(끝)