AWS. EKS 프로메테우스 그라파나 모니터링 구축하기

created Oct 09, 2022 | updated Oct 15, 2022

AWS EKS 모니터링을 위해 kube-prometheus-stack을 설치했다. 그라파나는 다른 개발자들도 접속할 수 있도록 LB와 HTTPS 설정을 했고, 프로메테우스와 그라파나의 저장공간은 클러스터의 리소스를 사용하지 않게 AWS EBS 추가 설정을 했다.

본 포스팅은 AWS EKS가 이미 설치된 상황을 가정하고 설명한다.

kube-prometheus 란?


  • kube-prometheus 프로젝트는 쿠버네티스 클러스터를 모니터링하기 위한 것으로, 모든 쿠버네티스 컴포넌트들의 매트릭스를 수집하도록 사전 설정되었고 추가로 대시보드와 알림 규칙의 기본 세트를 제공한다.
  • 이 프로젝트가 포함하는 컴포넌트는 다음과 같다.
    • The Prometheus Operator
    • Highly available Prometheus
    • Highly available Alertmanager
    • Prometheus node-exporter
    • Prometheus Adapter for Kubernetes Metrics APIs
    • kube-state-metrics
    • Grafana
  • Helm Chart 이름은 kube-prometheus-stack이고, 이전 이름은 prometheus-operator 였다.

설치하기


설치 전 준비할 내용

kube-prometheus-stack 설치 커스터마이징 파일

  • 아래 커스터마이징 파일은 다음을 포함한다.
    • 그라파나 서버 접속 HTTPS 적용
    • 그라파나와 프로메테우스 영구 저장소 설정
custom.yaml
alertmanager:
  service:
    type: NodePort
grafana:
  service:
    annotations:
      service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
      service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: '*'
      service.beta.kubernetes.io/aws-load-balancer-ssl-cert: ${ACM_CERT_ARN}
      service.beta.kubernetes.io/aws-load-balancer-ssl-ports: '443'
    type: LoadBalancer
  extraExposePorts:
    - name: https
      port: 443
      targetPort: 3000
  resources:
    limits:
      cpu: 200m
      memory: 256Mi
    requests:
      cpu: 100m
      memory: 128Mi
  persistence:
    type: pvc
    enabled: true
    storageClassName: gp2
    accessModes:
      - ReadWriteOnce
    size: 10Gi
prometheus:
  service:
    type: NodePort
  prometheusSpec:
    retention: 10d
    retentionSize: "45GB"
    resources:
      limits:
        cpu: 500m
        memory: 512Mi
      requests:
        cpu: 200m
        memory: 256Mi
    storageSpec:
      volumeClaimTemplate:
        spec:
          storageClassName: gp2
          accessModes: ["ReadWriteOnce"]
          resources:
            requests:
              storage: 50Gi

kube-prometheus-stack 설치하기

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

# 네임스페이스 생성
kubectl create ns monitoring

# kube-prometheus-stack 설치 
helm install prometheus-stack prometheus-community/kube-prometheus-stack -f ./custom.yaml -n monitoring

# 설치 확인 
kubectl get pods -l "release=prometheus-stack" -n monitoring
helm get values prometheus-stack -n monitoring
kubectl get pvc -n monitoring
kubectl get pv -n monitoring
  • 추가 명령어
# kube-prometheus-stack 업데이트 하기
helm upgrade prometheus-stack prometheus-community/kube-prometheus-stack -f ./custom.yaml -n monitoring

# kube-prometheus-stack 삭제하기
helm uninstall prometheus-stack -n monitoring

그라파나 접속하기


그라파나에 접속하기 위해 주소와 계정 정보를 확인한다.

# 그라파나 접속 주소 확인하기
kubectl get svc prometheus-stack-grafana -o json -n monitoring |jq -r '.status.loadBalancer.ingress[0].hostname'

# 그라파나 계정 확인하기
kubectl get secret prometheus-stack-grafana -o jsonpath="{.data.admin-user}" -n monitoring |base64 -d; echo
kubectl get secret prometheus-stack-grafana -o jsonpath="{.data.admin-password}" -n monitoring |base64 -d; echo

브라우저에서 그라파나에 접속하고 Dashboards와 Alerting 메뉴를 보면 디폴트들이 제공되어 있다.

Gist 에서 확인하기


참고


※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

유리아쥬 제모스 스틱 레브르 립밤 4g x 10개, 12개, 무향솔가 어드밴스드 칼슘 컴플렉스 타블렛, 120개입, 1개커세어 코리아 정품 DARK CORE PRO 무선 충전 RGB 게이밍 마우스 / 다용도 에코백 사은품 증정, 혼합색상, RGP0076