이 문서는 프로메테우스 헬름 차트를 설치하는 방법을 소개합니다. 설치에 사용된 yaml파일 예제는 https://github.com/choisungwook/portfolio/tree/master/kubernetes/helm/prometheus-charts에서 확인할 수 있습니다.
영상: https://youtu.be/qHIgk547SVA
1. 프로메테우스란?
프로메테우스는 시계열 데이터베이스이며 쿠버네티스에서는 metric을 수집할 때 많이 사용됩니다.
다른 데이터베이스와 다르게 pull방식으로 데이터를 수집합니다. 예를 들어 EFK시스템에서는 컨테이너 로그를 puhs방식으로 엘라스틱서치에 전송합니다.
반면, 프로메테우스는 직접 수집할 대상의 데이터를 수집해갑니다. 이 방식을 pull식이라고 합니다. push방법도 존재하지만 디폴트로 pull방법을 사용합니다.
프로메테우스 컴퍼넌트
● exporter: 프로메테우스가 수집할 대상과 수집정보
● prometheus server: 프로메테우스 데이터베이스
● promql: 프로메테우스 sql
● alertmanager: 프로메테우에서 설정한 경계값이 트리거되면 알림을 전송
● Grafana: 프로메테우스 데이터 시각화
프로메테우스 헬름 핵심 쿠버네티스 리소스
프로메테우스 헬름에 가장 핵심 컴퍼넌트는 오퍼레이터(operator)입니다. 오퍼레이터는 servicemonitor 리소스를 자동감지하여 프로메테우스를 쿠버네티스럽게 사용할 수 있도록 합니다.
servicemonitor는 프로메테우스 익스포터를 오퍼레이터가 찾을 수 있도록 연결고리를 담당합니다.
2. 헬름차트 설치
저희가 사용할 헬름차트는 kube-prometheus-stack입니다. 해당 차트는 이름 그대로 사용자가 바로 프로메테우스를 사용할 수 있도록 모든 프로메테웃 stack(컴퍼넌트)을 설치합니다.
※ helm chart git: https://github.com/prometheus-community/helm-charts
헬름에서 여러 설정이 있고 이 문서는 데이터를 영구적으로 저장하기 위해 persistent volumeclaim과 도메인 설정을 위한 ingress 설정을 다룹니다.
헬름 차트 추가
프로메테우스 헬름차트 저장소를 추가합니다.
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
persistent volumeclaim 설정
동적 프로비저닝 기능이 비활성화 되어 있다면 persistentvolume을 먼저 생성합니다.
apiVersion: v1
kind: PersistentVolume
metadata:
name: prometheus-pv
labels:
app: my-example-prometheus
spec:
capacity:
storage: 20Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/prometheus"
volumeMode: Filesystem
그리고 override_values.yaml파일을 생성하고 claimtemplate을 수정합니다. 매칭되는 persistentvolume을 지정해야 하는데 selector을 사용합니다.
prometheus:
# change here
prometheusSpec:
storageSpec:
volumeClaimTemplate:
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 5Gi
selector:
matchLabels:
app: my-example-prometheus
프로메테우스 ingress 설정
도메인 경로를 routeprefix에 설정합니다.
prometheus:
# change here
prometheusSpec:
routePrefix: /prom
ingress를 활성화 하고 hosts에 도메인, path에 접속할 path를 설정합니다. 아래 예제는 choilab.com/prom에 접속하면 프로메테우스에 접속하게 하는 설정입니다.
prometheus:
ingress:
enabled: true
# change here
hosts:
- choilab.com
# change here
paths:
- /prom
그라파나 ingress 설정
그라파나 path를 변경하기 위해서 grafana.ini을 수정해야 합니다. 그리고 nginx rewrite를 설정해야 합니다.
grafana:
ingress:
enabled: true
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
# change here
path: /test(/|$)(.*)
hosts:
- choilab.com
grafana.ini:
server:
# change here
domain: choilab.com
root_url: http://choilab/test/
serve_from_sub_path: true
그라파나 비밀번호 설정
그라파나 대시보드에 접속할 때, 최초 admin 비밀번호를 설정합니다.
grafana:
adminPassword: password1234
설치
네임스페이스를 생성하고 설정한 values.yaml을 사용하여 헬름차트를 설치합니다. 아래 예제는 promtest네임스페이스에 헬름차트를 설치합니다.
kubectl create ns promtest
helm install -n promtest -f prometheus_values.yaml promtest prometheus-community/kube-prometheus-stack
설치확인
설정한 ingress에 접속되는지 확인합니다.
'전공영역 공부 기록' 카테고리의 다른 글
cert-manager로 self-signed 인증서 생성 (0) | 2021.05.09 |
---|---|
공식 gitlab helm 설치 (2) | 2021.05.09 |
AWS OTP활성화 방법 (0) | 2021.04.05 |
테라폼으로 EC2 인스턴스 생성 (0) | 2021.02.18 |
쿠버네티스 관리자 serviceaccount 생성 (0) | 2021.02.04 |