본문 바로가기

컨테이너/Prometheus

[Prometheus] helm으로 프로메테우스 스택 설치하기

 

❖ Any Kubernetes 환경에서 프로메테우스 설치하는 방법

https://themapisto.tistory.com/44?category=950753

 

 

✅ Helm을 통한 고가용성을 고려한 Prometheus Stack 설치

 

  • Helm 저장소 추가 
# helm repo add <저장소> https://{{ 다운로드 받을 helm chart}}


helm repo add prometheus-community https://prometheus-community.github.io/helm-charts

 

  • 설치 
# 모니터링
kubectl create ns monitoring
watch kubectl get pod,pvc,svc,ingress -n monitoring

# 사용 리전의 인증서 ARN 확인
CERT_ARN=`aws acm list-certificates --query 'CertificateSummaryList[].CertificateArn[]' --output text`
echo "alb.ingress.kubernetes.io/certificate-arn: $CERT_ARN"

# 설치
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts

# 파라미터 파일 생성
cat <<EOT > ~/monitor-values.yaml
alertmanager:
  ingress:
    enabled: true
    ingressClassName: alb
    annotations:
      alb.ingress.kubernetes.io/scheme: internet-facing
      alb.ingress.kubernetes.io/target-type: ip
      alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]'
      alb.ingress.kubernetes.io/certificate-arn: $CERT_ARN
      alb.ingress.kubernetes.io/success-codes: 200-399
      alb.ingress.kubernetes.io/group.name: "monitoring"
    hosts:
      - alertmanager.$CLUSTER_NAME
    paths:
      - /*

grafana:
  defaultDashboardsTimezone: Asia/Seoul
  adminPassword: prom-operator
  ingress:
    enabled: true
    ingressClassName: alb
    annotations:
      alb.ingress.kubernetes.io/scheme: internet-facing
      alb.ingress.kubernetes.io/target-type: ip
      alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]'
      alb.ingress.kubernetes.io/certificate-arn: $CERT_ARN
      alb.ingress.kubernetes.io/success-codes: 200-399
      alb.ingress.kubernetes.io/group.name: "monitoring"
    hosts:
      - grafana.$CLUSTER_NAME
    paths:
      - /*

prometheus:
  ingress:
    enabled: true
    ingressClassName: alb
    annotations:
      alb.ingress.kubernetes.io/scheme: internet-facing
      alb.ingress.kubernetes.io/target-type: ip
      alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]'
      alb.ingress.kubernetes.io/certificate-arn: $CERT_ARN
      alb.ingress.kubernetes.io/success-codes: 200-399
      alb.ingress.kubernetes.io/group.name: "monitoring"
    hosts:
      - prometheus.$CLUSTER_NAME
    paths:
      - /*
  prometheusSpec:
    serviceMonitorSelectorNilUsesHelmValues: false
    retention: 5d
    retentionSize: "10GiB"
EOT

# 배포
helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack --version 45.0.0 -f monitor-values.yaml --namespace monitoring

# 확인
## alertmanager-0 : 사전에 정의한 정책 기반(예: 노드 다운, 파드 Pending 등)으로 시스템 경고 메시지를 생성 후 경보 채널(슬랙 등)로 전송
## grafana : 프로메테우스는 메트릭 정보를 저장하는 용도로 사용하며, 그라파나로 시각화 처리
## prometheus-0 : 모니터링 대상이 되는 파드는 ‘exporter’라는 별도의 사이드카 형식의 파드에서 모니터링 메트릭을 노출, pull 방식으로 가져와 내부의 시계열 데이터베이스에 저장
## node-exporter : 노드익스포터는 물리 노드에 대한 자원 사용량(네트워크, 스토리지 등 전체) 정보를 메트릭 형태로 변경하여 노출
## operator : 시스템 경고 메시지 정책(prometheus rule), 애플리케이션 모니터링 대상 추가 등의 작업을 편리하게 할수 있게 CRD 지원
## kube-state-metrics : 쿠버네티스의 클러스터의 상태(kube-state)를 메트릭으로 변환하는 파드
helm list -n monitoring
kubectl get pod,pvc,svc,ingress -n monitoring
kubectl get-all -n monitoring
kubectl get prometheus,alertmanager -n monitoring
kubectl get prometheusrule -n monitoring
kubectl get servicemonitors -n monitoring
kubectl krew install df-pv && kubectl df-pv

 

프로메테우스


https://themapisto.tistory.com/55

 

[프로메테우스](4) CPU / 메모리 사용률 계산하기

프로메테우스는 PromQL을 사용하여 시계열 메트릭을 수집한다. Pod 와 서비스 단위의 모니터링을 개발해야 할때, 프로메테우스에서는 container_cpu_seconds_total 데이터와 container_memory_work_bytes 데이터를

themapisto.tistory.com

프로메테우스 설치 후에는 이것저것 뽑고 싶은 데이터를 뽑아보면 좋다.

이를 기반으로 그라파나를 구성해야 할것이다.

 

 

 

 

그라파나


그라파나(Grafana)는 시각화 및 대시보드 도구로, 여러 데이터 소스에서 가져온 데이터를 사용자에게 시각적으로 표현해준다. 다양한 데이터 소스를 지원하며, 그래프, 표, 알림 등 다양한 방식으로 데이터를 표현할 수 있다. 그라파나는 사용자 친화적인 인터페이스와 다양한 주요 기능을 제공한다.

---------[주요 기능]---------

- 다양한 데이터 소스 연동: 그라파나는 여러 데이터 소스와 연동하여 데이터를 가져올 수 있다. 
예를 들어, 프로메테우스, 그래파이트, 인플럭스DB 등의 데이터 소스를 지원한다.


- 유연한 대시보드 구성: 그라파나를 사용하면 사용자가 원하는 대시보드를 유연하게 구성할 수 있다. 
그래프, 표, 알림, 템플릿 등을 사용하여 데이터를 시각화하고 원하는 형태로 표현할 수 있다.


- 시각화 기능: 그라파나는 다양한 시각화 옵션을 제공하여 데이터를 직관적으로 이해할 수 있게 도와준다. 
그래프, 게이지, 히트맵 등 다양한 시각화 형식을 지원한다.


- 대시보드 공유 및 협업: 그라파나에서는 대시보드를 다른 사용자와 공유하고 협업할 수 있다. 
대시보드를 공유 링크로 전달하거나 팀원과 함께 대시보드를 편집할 수 있다.


- 경고 및 알림 기능: 그라파나는 데이터에 기반한 경고 및 알림 기능을 제공한다. 
사용자가 설정한 조건에 따라 경고를 생성하고, 이를 이메일, 메신저 등으로 알림으로 받을 수 있다.


- 템플릿 기능: 그라파나에서는 템플릿 기능을 제공하여 대시보드를 유연하게 구성할 수 있다. 
템플릿을 사용하여 동일한 형식의 여러 대시보드를 쉽게 생성하고 관리할 수 있다.
[**Kubernetes / Views / Global**] Dashboard → New → Import → 15757 입력 후 Load ⇒ 
데이터소스(Prometheus 선택) 후 Import 클릭

[**1 Kubernetes All-in-one Cluster Monitoring KR**] Dashboard → New → Import → 
13770 or 17900 입력 후 Load ⇒ 데이터소스(Prometheus 선택) 후 Import 클릭

[**Node Exporter Full**] Dashboard → New → Import → 1860 입력 후 Load ⇒ 
데이터소스(Prometheus 선택) 후 Import 클릭

[****Node Exporter for Prometheus Dashboard based on 11074] 15172**
kube-state-metrics-v2 가져와보자 : Dashboard ID copied! (13332) 클릭 - 링크

[kube-state-metrics-v2] Dashboard → New → Import → 13332 입력 후 Load ⇒ 
데이터소스(Prometheus 선택) 후 Import 클릭

[Amazon EKS] **AWS CNI Metrics 16032

 

  • 굉장히 간단하게 Grafana의 기본 대쉬보드를 사용할수 있다.

 


이렇게 간단하게 helm을 사용해서 Prometheus 스택을 설치해봤다.

EKS 물론 다양한 k8s 세트에서 사용가능 하기 때문에 편리하게 설치해서 사용할수 있다.