🚀 프로메테우스 실습 준비 가이드

📑 목차


1. 다음 강의 미리보기

수업 진행 순서

이론 학습 완료 → 이제 실습으로 직접 체험하는 단계

🎯 예상 실습 흐름

📋 강의 로드맵 (수업 자료 기반)

1강: 쿠버네티스에게 프로메테우스란? ✅ 완료
  → 학습 내용: 문제 정의, 모니터링의 필요성
 
2강: 모니터링 파이프라인 개념 ✅ 완료  
  → 학습 내용: 파이프라인 이해, 메트릭 vs 로그
 
3강: 왜 프로메테우스인가? ✅ 완료
  → 학습 내용: 도구 비교, 선택 근거
 
4강: Vagrant로 쿠버네티스 배포하기 ← 다음 강의!
  → 실습 시작: 클러스터 구축
 
5강 이후 예상:
  - Node-exporter 설치 및 설정
  - Prometheus 설치 및 설정  
  - Grafana 대시보드 구성
  - 실제 모니터링 시나리오 체험

💻 실습 환경 구성도

Vagrant로 구축할 환경:
 
┌─────────────────────────────────────────┐
│               Host Machine               │
│              (macOS/Windows)             │
│  ┌─────────────────────────────────────┐ │
│  │           VirtualBox                │ │
│  │  ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐   │ │
│  │  │ M1  │ │ W1  │ │ W2  │ │ W3  │   │ │
│  │  │마스터│ │워커1│ │워커2│ │워커3│   │ │
│  │  └─────┘ └─────┘ └─────┘ └─────┘   │ │
│  └─────────────────────────────────────┘ │
└─────────────────────────────────────────┘
 
구성 예상:
- 마스터 노드 1개: 쿠버네티스 컨트롤 플레인
- 워커 노드 3개: 애플리케이션 실행
- 각 노드: Ubuntu 20.04 LTS, 2CPU, 2GB RAM

2. 실습 환경 요구사항

💡 하드웨어 요구사항

📊 권장 스펙

구성요소최소 요구사항권장 사항설명
RAM8GB16GB 이상가상머신 4개 동시 실행
CPU4코어8코어 이상가상화 성능
디스크50GB100GB 이상VM 이미지 + 데이터
네트워크안정적 인터넷유선 권장ISO 다운로드, 패키지 설치

⚠️ 리소스 분배

총 16GB RAM 기준 분배:
  Host OS: 8GB (macOS/Windows)
  마스터 노드: 2GB
  워커 노드 1: 2GB  
  워커 노드 2: 2GB
  워커 노드 3: 2GB
 
총 8GB RAM인 경우:
  Host OS: 4GB
  마스터 노드: 1.5GB
  워커 노드: 각 1GB (3개)
  → 성능 제약 있음, 학습용으로는 가능

🛠️ 소프트웨어 요구사항

📋 필수 설치 도구

1. VirtualBox:
   버전: 7.0 이상
   용도: 가상머신 실행 엔진
   다운로드: https://www.virtualbox.org/
 
2. Vagrant:
   버전: 2.3 이상  
   용도: 가상머신 자동 관리
   다운로드: https://www.vagrantup.com/
 
3. Git (선택사항):
   용도: Vagrantfile 저장소 클론
   macOS: 기본 설치됨
   Windows: https://git-scm.com/

💻 설치 확인 명령어

# VirtualBox 설치 확인
VBoxManage --version
# 출력 예시: 7.0.12r159484
 
# Vagrant 설치 확인  
vagrant --version
# 출력 예시: Vagrant 2.3.7
 
# Git 설치 확인
git --version
# 출력 예시: git version 2.39.0

3. Vagrant 기본 설정

💡 Vagrant 기초 이해

Vagrant란?

가상머신을 코드로 관리하는 도구. Infrastructure as Code의 한 형태.

📋 기본 개념

Vagrantfile:
  역할: 가상머신 설정을 코드로 정의
  언어: Ruby DSL (사용하기 쉬움)
  위치: 프로젝트 루트 디렉토리
 
Box:
  정의: 가상머신 템플릿
  예시: ubuntu/focal64 (Ubuntu 20.04)
  저장소: Vagrant Cloud
 
Provider:
  정의: 가상화 엔진
  예시: VirtualBox, VMware, AWS

🔧 예상 Vagrantfile 구조

💻 기본 Vagrantfile 템플릿

# Vagrantfile 예시 (실제 강의에서 제공될 내용 예상)
 
Vagrant.configure("2") do |config|
  # 기본 OS 이미지
  config.vm.box = "ubuntu/focal64"
  
  # 마스터 노드
  config.vm.define "master" do |master|
    master.vm.hostname = "k8s-master"
    master.vm.network "private_network", ip: "192.168.56.10"
    master.vm.provider "virtualbox" do |vb|
      vb.memory = 2048
      vb.cpus = 2
    end
  end
  
  # 워커 노드들
  (1..3).each do |i|
    config.vm.define "worker#{i}" do |worker|
      worker.vm.hostname = "k8s-worker#{i}"
      worker.vm.network "private_network", ip: "192.168.56.1#{i}"
      worker.vm.provider "virtualbox" do |vb|
        vb.memory = 2048
        vb.cpus = 2
      end
    end
  end
  
  # 공통 프로비저닝
  config.vm.provision "shell", inline: <<-SHELL
    apt-get update
    apt-get install -y curl wget
    # Docker 설치
    curl -fsSL https://get.docker.com -o get-docker.sh
    sh get-docker.sh
    usermod -aG docker vagrant
    # 쿠버네티스 설치 스크립트 (예상)
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
    echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list
    apt-get update
    apt-get install -y kubelet kubeadm kubectl
  SHELL
end

📋 Vagrant 기본 명령어

💻 실습에서 사용할 명령어들

# 프로젝트 디렉토리 생성
mkdir prometheus-k8s-lab
cd prometheus-k8s-lab
 
# Vagrantfile이 있는 경우 가상머신 시작
vagrant up
 
# 특정 노드만 시작
vagrant up master
vagrant up worker1
 
# 가상머신 상태 확인
vagrant status
 
# SSH 접속
vagrant ssh master
vagrant ssh worker1
 
# 가상머신 중지
vagrant halt
 
# 가상머신 삭제 (주의!)
vagrant destroy

🎯 예상 실습 진행 순서

📋 첫 실습 세션 예상

1단계: 환경 준비 (10분)
  - Vagrantfile 다운로드 또는 작성
  - vagrant up 실행
  - 4개 가상머신 부팅 대기
 
2단계: 쿠버네티스 클러스터 구축 (20분)
  - 마스터 노드에서 kubeadm init
  - 워커 노드들을 클러스터에 조인
  - CNI 플러그인 설치 (Calico/Flannel)
 
3단계: 클러스터 확인 (10분)
  - kubectl get nodes 확인
  - 샘플 Pod 배포 테스트
  - 네트워크 연결성 확인
 
4단계: 모니터링 준비 (10분)
  - node-exporter 설치 준비
  - /metrics 엔드포인트 확인
  - 다음 강의 준비 완료

4. 핵심 개념 체크리스트

✅ 실습 전 반드시 확인할 개념들

📋 1. 파이프라인 개념 이해

[ ] 파이프라인 = 순차적 작업의 연결
[ ] 리눅스 파이프(|) 예시 이해
[ ] 모니터링 파이프라인 3단계 암기:
    1단계: 데이터 수집 (Exporter)
    2단계: 통합 저장 (Prometheus)  
    3단계: 시각화 (Grafana)

📋 2. 메트릭 기본 개념

[ ] 메트릭 = 시스템 상태의 숫자 표현
[ ] Resource 메트릭: CPU, 메모리, 디스크, 네트워크
[ ] Application 메트릭: 응답시간, 처리량, 에러율
[ ] 시계열 데이터: 시간별 변화 추적

📋 3. 프로메테우스 구성요소 역할

[ ] node-exporter: OS 메트릭 → Prometheus 형식 변환
[ ] kube-state-metrics: 쿠버네티스 상태 메트릭  
[ ] Prometheus Server: 중앙 수집기 + 시계열 DB
[ ] Alertmanager: 알람 발송 시스템
[ ] Grafana: 대시보드 및 시각화

📋 4. Pull vs Push 이해

[ ] Pull 방식: Prometheus가 각 서버 방문해서 데이터 수집
[ ] /metrics 엔드포인트: 메트릭 데이터 노출 URL
[ ] 장점: 서버 장애 시에도 복구 후 자동 재연결
[ ] 스크레이핑: 주기적 데이터 수집 과정 (기본 15초)

🎯 실습 중 주의사항

⚠️ 일반적인 문제들

메모리 부족:
  증상: 가상머신이 느리거나 멈춤
  해결: 각 VM 메모리를 1GB로 줄이거나 워커 노드 수 감소
 
네트워크 문제:
  증상: 노드 간 통신 안됨
  해결: VirtualBox 네트워크 어댑터 설정 확인
 
방화벽 문제:
  증상: /metrics 접근 안됨  
  해결: ufw disable 또는 포트 오픈
 
시간 동기화:
  증상: 메트릭 타임스탬프 이상
  해결: VM들의 시간 동기화 확인

📚 학습 리소스 준비

📖 실습 중 참고할 자료

공식 문서:
  - Prometheus: https://prometheus.io/docs/
  - Grafana: https://grafana.com/docs/
  - Kubernetes: https://kubernetes.io/docs/
 
유용한 명령어:
  - kubectl get nodes
  - kubectl get pods -n kube-system
  - curl http://localhost:9100/metrics
  - systemctl status prometheus
 
PromQL 기초:
  - up: 타겟 상태 확인
  - node_cpu_seconds_total: CPU 메트릭
  - rate(node_cpu_seconds_total[5m]): CPU 사용률

🔗 다음 단계 예고

🚀 실습 완료 후 기대 효과

실습 완료 시 경험하게 될 것들:
 
1. 모니터링 파이프라인 실물 확인:
   - /metrics 엔드포인트 직접 확인
   - Prometheus에서 데이터 수집 과정 관찰
   - Grafana 대시보드에서 실시간 그래프 확인
 
2. 장애 시뮬레이션:
   - CPU 부하 테스트 → 그래프 변화 확인
   - Pod 재시작 → 메트릭 변화 관찰
   - 알람 발생 → Slack 알림 수신
 
3. 실무 감각 획득:
   - PromQL 쿼리 직접 작성
   - 대시보드 커스터마이징
   - 알람 규칙 설정
 
결과: "프로메테우스가 실제로 어떻게 작동하는지" 체감

🎓 최종 정리

✅ 준비 완료 체크리스트

환경 준비:

[ ] VirtualBox 7.0+ 설치 완료
[ ] Vagrant 2.3+ 설치 완료  
[ ] 하드웨어 스펙 확인 (RAM 8GB+)
[ ] 네트워크 연결 안정적

개념 이해:

[ ] 모니터링 파이프라인 3단계 숙지
[ ] 메트릭과 로그 차이 이해
[ ] Pull vs Push 방식 차이 이해
[ ] 프로메테우스 구성요소 역할 파악

명령어 숙지:

[ ] Vagrant 기본 명령어 (up, halt, ssh, destroy)
[ ] Kubernetes 기본 명령어 (get nodes, get pods)
[ ] curl을 통한 /metrics 접근 방법

🚀 다음 실습 기대하기

실습의 가치

이론으로 배운 “데이터 수집 → 저장 → 시각화”의 전체 흐름을 직접 눈으로 확인하고 손으로 조작해볼 수 있습니다.

실습을 통해 다음을 경험하게 됩니다:

  • 실제 메트릭 데이터 확인 (숫자로 된 시스템 상태)
  • 실시간 그래프 변화 관찰 (CPU 부하 증가 → 그래프 상승)
  • 알람 시스템 동작 (임계치 초과 → Slack 알림)

📚 관련 문서

이제 이론 학습이 끝났습니다. 다음 실습에서 직접 체험해보세요! 🎯