Skip to main content

Prometheus 서비스 설치 가이드

시스템 모니터링 기능을 사용하려는 On-Premise 환경용 설치 가이드입니다.

개요

본문은 kube-prometheus-stack Helm Chart를 활용한 프로메테우스 설치 가이드를 제공하고 있습니다.

  • kube-prometheus-stack 에 포함되어 있는 서비스 목록
서비스기능필수 여부
prometheus클러스터 메트릭 데이터 수집 및 저장⭕️
prometheus-config-reloaderPrometheus 설정 자동 감지 및 반영⭕️
prometheus-operatorPrometheus와 관련된 리소스 관리 및 자동화⭕️
prometheus-node-exporter노드 시스템 리소스 데이터 제공(CPU, 메모리, 디스크, 네트워크)⭕️
kube-state-metricsKubernetes 클러스터에서 동작하는 리소스 상태 정보를 제공⭕️
alertmanagerPrometheus에서 발생하는 알림 이메일, 웹훅으로 전송
grafanaPrometheus에서 수집한 데이터 시각화하여 대시보드 형태로 제공

설치 방법

  1. 필요한 Docker Image 파일 준비

    • Docker Image Pull

      # prometheus
      docker pull quay.io/prometheus/prometheus:v3.2.1

      # prometheus-operator
      docker pull quay.io/prometheus-operator/prometheus-operator:v0.80.1

      # prometheus-node-exporter
      docker pull quay.io/prometheus/node-exporter:v1.9.0

      # prometheus-config-reloader
      docker pull rancher/mirrored-prometheus-operator-prometheus-config-reloader:v0.59.1

      # kube-state-metrics
      docker pull rancher/mirrored-kube-state-metrics-kube-state-metrics:v2.6.0
    • 폐쇄망 환경 Harbor 경로로 Docker Image 태그 변경

      # prometheus
      docker tag quay.io/prometheus/prometheus:v3.2.1 harbor.local:5050/prometheus/prometheus:v3.2.1

      # prometheus-operator
      docker tag quay.io/prometheus-operator/prometheus-operator:v0.80.1 harbor.local:5050/prometheus/prometheus-operator:v0.80.1

      # prometheus-node-exporter
      docker tag quay.io/prometheus/node-exporter:v1.9.0 harbor.local:5050/prometheus/prometheus-node-exporter:v1.9.0

      # prometheus-config-reloader
      docker tag rancher/mirrored-prometheus-operator-prometheus-config-reloader:v0.59.1 harbor.local:5050/prometheus/prometheus-config-reloader:v0.59.1

      # kube-state-metrics
      docker tag rancher/mirrored-kube-state-metrics-kube-state-metrics:v2.6.0 harbor.local:5050/prometheus/kube-state-metrics:v2.6.0
    • Docker Image .tar 파일로 저장

      # prometheus
      docker save -o prometheus.tar harbor.local:5050/prometheus/prometheus:v3.2.1

      # prometheus-operator
      docker save -o prometheus-operator.tar harbor.local:5050/prometheus/prometheus-operator:v0.80.1

      # prometheus-node-exporter
      docker save -o node-exporter.tar harbor.local:5050/prometheus/prometheus-node-exporter:v1.9.0

      # prometheus-config-reloader
      docker save -o prometheus-config-reloader.tar harbor.local:5050/prometheus/prometheus-config-reloader:v0.59.1

      # kube-state-metrics
      docker save -o kube-state-metrics.tar harbor.local:5050/prometheus/kube-state-metrics:v2.6.0
  2. kube-prometheus-stack Helm Chart 준비

    # helm 저장소 추가
    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
    helm repo update

    # prometheus-operator-crds 다운로드
    helm pull prometheus-community/prometheus-operator-crds

    # kube-prometheus-stack chart 다운로드
    helm pull prometheus-community/kube-prometheus-stack
  3. kube-prometheus-stack 차트 values.yaml 파일 설정 값 수정

    • kube-prometheus-stack 차트 values.yaml

      # values.yaml
      fullnameOverride: "rancher-monitoring"
      prometheusOperator:
      image:
      registry: harbor.local:5050 #로컬 Harbor 주소로 변경 필요
      repository: prometheus/prometheus-operator
      tag: "v0.80.1"
      prometheusConfigReloader:
      image:
      registry: harbor.local:5050 #로컬 Harbor 주소로 변경 필요
      repository: prometheus/prometheus-config-reloader
      tag: "v0.59.1"
      prometheus:
      prometheusSpec:
      scrapeInterval: "30s"
      evaluationInterval: "30s"
      retention: 10d #데이터 보관 주기기
      image:
      registry: harbor.local:5050 #로컬 Harbor 주소로 변경 필요
      repository: prometheus/prometheus
      tag: v3.2.1
      volumeClaimTemplate: #PVC 설정
      spec:
      storageClassName: longhorn
      accessModes: ["ReadWriteOnce"]
      resources:
      requests:
      storage: 10Gi
    • prometheus-node-exporter 서브 차트 values.yaml

      # charts\prometheus-node-exporter\values.yaml
      image:
      registry: harbor.local:5050 #로컬 Harbor 주소로 변경 필요
      repository: prometheus/prometheus-node-exporter
      tag: "v1.9.0"
    • kube-state-metrics 서브 차트 values.yaml

      # charts\kube-state-metrics\values.yaml
      image:
      registry: harbor.local:5050 #로컬 Harbor 주소로 변경 필요
      repository: prometheus/kube-state-metrics
      tag: "v2.6.0"
  4. 수정한 kube-prometheus-stack Helm Chart 패키징

    helm package kube-prometheus-stack # kube-prometheus-stack-69.8.2.tgz 형식의 패키지 파일 생성
  5. 생성한 Docker Image 파일 및 prometheus-operator-crds, kube-prometheus-stack Helm Chart 구축 서버로 복사

  6. Harbor 웹 UI로 로컬 Harbor에 프로젝트 생성

    • Project Name : prometheus
    • Access Level : Public
  7. 구축 서버 로컬 Harbor에 Docker Image load & push

    # prometheus
    docker load -i prometheus.tar
    docker push harbor.local:5050/prometheus/prometheus:v3.2.1

    # prometheus-operator
    docker load -i prometheus-operator.tar
    docker push harbor.local:5050/prometheus/prometheus-operator:v0.80.1

    # prometheus-node-exporter
    docker load -i node-exporter.tar
    docker push harbor.local:5050/prometheus/prometheus-node-exporter:v1.9.0

    # prometheus-config-reloader
    docker load -i prometheus-config-reloader.tar
    docker push harbor.local:5050/prometheus/prometheus-config-reloader:v0.59.1

    # kube-state-metrics
    docker load -i kube-state-metrics.tar
    docker push harbor.local:5050/prometheus/kube-state-metrics:v2.6.0
  8. Prometheus CRDs 설정

    # Namespace : cattle-monitoring-system
    # ReleaseName : prometheus

    helm install prometheus-operator-crds prometheus-operator-crds-20.0.0.tgz -n cattle-monitoring-system --create-namespace
  9. Prometheus 설치

    # Namespace : cattle-monitoring-system
    # ReleaseName : prometheus

    helm install prometheus kube-prometheus-stack-69.8.2.tgz -n cattle-monitoring-system --create-namespace

설치 삭제

Prometheus 설치 삭제가 필요한 경우, 다음 명령어를 통해 삭제할 수 있습니다.

helm uninstall prometheus -n cattle-monitoring-system

추가 설정

관리센터 configMap 설정

관리센터의 시스템 모니터링 기능을 사용하기 위해서 관리센터 프론트엔드/백엔드의 configMap값이 올바르게 설정되어있어야 합니다.

  • Security365 관리센터 프론트엔드 configMap

    VUE_APP_USE_SYSTEM_MONITORING: 시스템 모니터링 기능 사용 여부

    ### portal-web-config
    VUE_APP_USE_SYSTEM_MONITORING: true
  • Security365 관리센터 백엔드 configMap

    CUSTOM_PROMETHEUS_URL: Prometheus 서비스 클러스터 내부 주소

    ### cloud-spsvr-config
    CUSTOM_PROMETHEUS_URL: http://rancher-monitoring-prometheus.cattle-monitoring-system.svc.cluster.local:9090