본문으로 건너뛰기

모니터링 확장 설치

런타임 환경 - 실시간 모니터링 탭

Metrics Server만으로는 부족하신가요? 과거 데이터를 분석하거나, 알림을 설정하거나, 더 상세한 메트릭이 필요하다면 모니터링 확장을 설치하세요. Prometheus와 cAdvisor로 전문적인 모니터링 환경을 구축할 수 있습니다.

언제 모니터링 확장이 필요할까요?
  • 지난 주 대비 리소스 사용량 트렌드를 분석하고 싶을 때
  • CPU가 80%를 넘으면 Slack 알림을 받고 싶을 때
  • Container별 네트워크 사용량을 확인하고 싶을 때

모니터링 구성요소

Metrics Server vs 모니터링 확장

각 도구의 역할과 특징을 비교해 보겠습니다.

  • Metrics Server: 기본 리소스 메트릭을 제공합니다. 실시간 데이터만 저장하며, HPA와 kubectl top 명령에 사용됩니다.
  • cAdvisor: Container별 상세 메트릭을 수집합니다. 실시간 데이터만 저장하며, 상세 모니터링에 활용됩니다.
  • Prometheus: 메트릭을 수집, 저장, 쿼리합니다. 장기 저장이 가능하여 트렌드 분석과 알림에 사용됩니다.
어떤 것을 설치해야 할까요?
  • HPA만 필요하면: Metrics Server만 설치
  • 상세 모니터링이 필요하면: Metrics Server + cAdvisor 설치
  • 히스토리 분석과 알림이 필요하면: 모두 설치

설치 권장 순서

단계별로 설치하면 문제 발생 시 원인을 파악하기 쉽습니다.

  1. Metrics Server (필수): HPA와 kubectl top 명령의 기반입니다 .
  2. cAdvisor (권장): Container별 상세 메트릭을 수집합니다 .
  3. Prometheus (선택): 장기 데이터 저장과 알림이 필요할 때 설치합니다 .

사전 요구사항

  • Kubernetes 클러스터가 KIWI에 등록되어 있어야 합니다 .
  • 충분한 클러스터 리소스 (Prometheus 설치 시)

권한 안내: 이 기능에 접근할 수 없다면 기관 관리자에게 권한을 요청하세요.


cAdvisor 설치

cAdvisor는 각 노드에서 컨테이너 리소스 사용량을 수집합니다.

Step 1: 모니터링 탭 이동

  1. [런타임 환경] 페이지에서 대상 클러스터를 선택합니다 .
  2. 클러스터 상세 페이지에서 모니터링 탭을 클릭합니다 .

Step 2: 사전 검사

  1. 모니터링 확장 버튼을 클릭합니다 .
  2. 사전 검사(Preflight Check)가 자동으로 실행됩니다:
    • 클러스터 연결 상태
    • 노드 접근 가능 여부
    • 기존 설치 여부

Step 3: cAdvisor 설치

  1. cAdvisor 설치 옵션을 선택합니다 .
  2. 설치 옵션을 확인합니다:
    • 포트: 기본값 8080
    • 리소스 제한: CPU/메모리 제한 설정
  3. 설치 버튼을 클릭합니다 .

Step 4: 설치 확인

설치가 완료되면:

  • 각 노드에 cAdvisor DaemonSet이 배포됩니다 .
  • cAdvisor 상태: Running 표시
  • 노드별 컨테이너 메트릭이 수집됩니다 .

Prometheus 설치

Prometheus는 메트릭을 수집하고 장기 보존합니다.

Step 1: Prometheus 설치 선택

  1. 모니터링 확장 모달에서 Prometheus 설치를 선택합니다 .
  2. 설치 옵션을 설정합니다 .

Step 2: 스토리지 설정

Prometheus는 메트릭 데이터를 저장하기 위한 스토리지가 필요합니다:

  • EmptyDir (테스트 환경 권장): 임시 스토리지로, Pod가 재시작되면 모든 데이터가 손실됩니다. 빠른 테스트나 데모 용도로만 사용하세요.
  • PVC (운영 환경 권장): PersistentVolumeClaim을 사용하는 영구 스토리지입니다. Pod가 재시작되어도 데이터가 유지되며, 운영 환경에서 필수적으로 사용해야 합니다. StorageClass와 PV가 사전에 구성되어 있어야 합니다.
  • 외부 스토리지 (대규모 환경 권장): Thanos, Cortex 등 외부 스토리지 시스템과 연동합니다. 대용량 데이터 저장과 고가용성이 필요한 대규모 환경에 적합합니다.

Step 3: 리소스 설정

Prometheus 리소스 요청을 설정합니다:

  • CPU: 최소 250m이 필요하며, 일반적인 환경에서는 500m을 권장합니다. 대규모 클러스터(20개 이상 노드)에서는 1000m(1 CPU) 이상을 할당하세요.
  • 메모리: 최소 512Mi가 필요하며, 권장값은 1Gi입니다. 메모리가 부족하면 OOM(Out of Memory)으로 Pod가 재시작되므로, 대규모 환경에서는 2Gi 이상을 할당하세요.
  • 스토리지: 보존 기간과 수집 대상에 따라 결정됩니다. 최소 10Gi, 권장 50Gi이며, 장기 보존이 필요한 대규모 환경에서는 100Gi 이상을 확보하세요.

Step 4: 보존 기간 설정

메트릭 데이터 보존 기간을 설정합니다:

  • 15일 (기본): 단기 분석용
  • 30일: 월간 트렌드 분석
  • 90일: 분기별 분석
  • 365일: 연간 분석 (대용량 스토리지 필요)

Step 5: 설치 실행

  1. 설정을 확인하고 설치 버튼을 클릭합니다 .
  2. 설치 진행 상황이 표시됩니다:
    • Prometheus Operator 설치
    • Prometheus 인스턴스 생성
    • ServiceMonitor 구성
  3. 설치 완료 메시지를 확인합니다 .

설치 상태 확인

상태 표시

모니터링 탭에서 각 구성요소의 상태를 확인할 수 있습니다:

  • 미설치: 해당 모니터링 구성요소가 아직 설치되지 않은 상태입니다. 설치 버튼을 클릭하여 설치를 시작할 수 있습니다.
  • 설치 중: 설치가 진행 중인 상태입니다. 완료될 때까지 잠시 기다려주세요. 일반적으로 1-3분 정도 소요됩니다.
  • Running: 구성요소가 정상적으로 작동 중입니다. 메트릭 수집이 진행되고 있으며, 대시보드에서 데이터를 확인할 수 있습니다.
  • Error: 구성요소에 오류가 발생했습니다. 로그를 확인하여 문제를 진단하고, 필요시 재설치를 시도하세요.

실시간 메트릭 확인

설치 완료 후 KIWI에서 확인할 수 있는 메트릭:

노드 수준:

  • CPU 사용률 (%)
  • 메모리 사용량 (GB / %)
  • 디스크 사용량
  • 네트워크 I/O

Pod 수준:

  • 컨테이너별 CPU 사용량
  • 컨테이너별 메모리 사용량
  • 재시작 횟수

클러스터 수준:

  • 총 리소스 용량
  • 할당된 리소스
  • 사용 가능한 리소스

KIWI 대시보드에서 활용

대시보드 위젯

모니터링 확장 설치 후 대시보드에 추가되는 위젯:

  • 클러스터 리소스 현황: CPU/메모리 사용률 게이지
  • 노드 상태: 노드별 리소스 사용량 차트
  • Pod 리소스: 상위 리소스 사용 Pod 목록
  • 트렌드 차트: 시간별 리소스 사용량 그래프

서비스 운영에서 활용

서비스 운영 모달에서 실시간 리소스 확인:

  1. 서비스 목록에서 운영 버튼 클릭
  2. 리소스 탭 선택
  3. 실시간 CPU/메모리 사용량 확인
  4. 히스토리 그래프 확인 (Prometheus 설치 시)

알림 설정 (Prometheus)

Prometheus 설치 시 알림 규칙을 설정할 수 있습니다.

기본 알림 규칙

KIWI는 다음 기본 알림 규칙을 제공합니다:

  • HighCPUUsage (Warning): CPU 사용률이 5분 이상 80%를 초과할 때 발생합니다. 애플리케이션 성능 저하가 예상되므로 리소스 확장이나 최적화를 검토하세요.
  • HighMemoryUsage (Warning): 메모리 사용률이 5분 이상 85%를 초과할 때 발생합니다. OOM 위험이 있으므로 메모리 누수 점검이나 리소스 증가를 고려하세요.
  • PodCrashLooping (Critical): 1시간 내에 Pod가 5회 이상 재시작될 때 발생합니다. 애플리케이션 오류나 설정 문제가 있으므로 즉시 로그를 확인하세요.
  • NodeNotReady (Critical): 노드가 NotReady 상태가 될 때 발생합니다. 해당 노드의 Pod가 스케줄링되지 않으므로 즉시 노드 상태를 점검하세요.

알림 수신 설정

  1. 모니터링 탭에서 알림 설정 버튼 클릭
  2. 알림 수신 방법 선택:
    • Slack: Webhook URL 입력
    • Email: 수신자 이메일 입력
    • Webhook: 커스텀 Webhook URL
  3. 저장 버튼 클릭

문제 해결

cAdvisor 설치 실패

  • DaemonSet 배포가 실패하는 경우: 노드에 충분한 리소스가 없어 cAdvisor Pod를 스케줄링할 수 없습니다. 설치 옵션에서 CPU/메모리 제한을 낮추거나, 노드의 리소스 상황을 확인하세요.
  • 포트 충돌이 발생하는 경우: 기본 포트 8080이 다른 애플리케이션에서 사용 중입니다. 설치 옵션에서 다른 포트(예: 8081)를 지정하세요.
  • 이미지 Pull이 실패하는 경우: cAdvisor 이미지를 다운로드할 수 없습니다. 클러스터 노드의 인터넷 연결 또는 프라이빗 레지스트리 설정을 확인하세요.

Prometheus 설치 실패

  • PVC 생성이 실패하는 경우: 클러스터에 적절한 StorageClass가 없습니다. StorageClass를 먼저 생성하거나, 테스트 목적이라면 스토리지 옵션을 EmptyDir로 변경하세요.
  • OOM(Out of Memory)이 발생하는 경우: Prometheus에 할당된 메모리가 부족합니다. 리소스 설정에서 메모리 제한을 증가시키세요. 권장값은 최소 1Gi입니다.
  • CrashLoopBackOff 상태인 경우: 설정 오류로 Prometheus가 시작되지 못합니다. kubectl logs 명령으로 로그를 확인하고, 문제 해결 후 재설치하세요.

메트릭 수집 안됨

  • 원인 1: cAdvisor/Prometheus Pod가 Running 상태가 아님
  • 원인 2: ServiceMonitor 설정 오류
  • 원인 3: 네트워크 정책으로 차단됨

해결 방법:

  1. Pod 상태 확인: kubectl get pods -n monitoring
  2. 로그 확인: kubectl logs <pod-name> -n monitoring
  3. 네트워크 정책 확인

모니터링 구성요소 삭제

cAdvisor 삭제

  1. 모니터링 탭에서 cAdvisor 상태 옆의 삭제 버튼 클릭
  2. 확인 대화상자에서 삭제 클릭
  3. 각 노드에서 cAdvisor DaemonSet이 제거됩니다 .

Prometheus 삭제

  1. 모니터링 탭에서 Prometheus 상태 옆의 삭제 버튼 클릭
  2. 확인 대화상자에서 삭제 클릭
  3. 관련 리소스가 모두 제거됩니다 .

주의: Prometheus 삭제 시 저장된 메트릭 데이터도 함께 삭제됩니다.


베스트 프랙티스

성공적인 모니터링 환경을 위한 권장 사항입니다.

리소스 계획

클러스터 규모에 따라 Prometheus에 할당할 리소스가 다릅니다.

  • 소규모 (1-5 노드): CPU 500m, 메모리 1Gi를 권장합니다. 개발 및 테스트 환경에 적합합니다.
  • 중규모 (5-20 노드): CPU 1코어, 메모리 2Gi를 권장합니다. 스테이징 또는 소규모 운영 환경에 적합합니다.
  • 대규모 (20+ 노드): CPU 2코어, 메모리 4Gi 이상을 권장합니다. 대규모 운영 환경에 적합합니다.
리소스 부족 징후

Prometheus가 자주 OOM으로 재시작되거나 쿼리가 느려지면 리소스를 늘려야 합니다.

스토리지 계획

대략적인 스토리지 사용량을 참고하여 용량을 계획하세요.

  • 노드당: 약 1-2MB/일
  • Pod당: 약 0.5-1MB/일
  • 예시: 15일 보존, 10노드, 100 Pod = 약 2-3GB

성능 최적화

모니터링 시스템이 오히려 클러스터에 부담이 되지 않도록 주의하세요.

  1. 스크레이프 간격: 기본 15초, 대규모 환경에서는 30초 권장
  2. 보존 기간: 필요한 기간만 설정 (오래 보존할수록 스토리지 필요)
  3. 레이블 제한: 불필요한 레이블은 제거하여 카디널리티 관리
  4. 원격 스토리지: 장기 보존이 필요하면 Thanos 같은 외부 스토리지 활용

관련 가이드