<aside> 💡

사용 도구

메트릭 수집: 프로메테우스

시각화: 그라파나

</aside>

image.png

각 번호별 구성 설명

  1. EC2
  2. Pod (애플리케이션 서비스)
  3. cAdvisor DaemonSet
  4. NodeExporter DaemonSet
  5. Prometheus
  6. S3
  7. Grafana

설정

  1. metrics-server.yaml 작성

    ---
    defaultArgs:
      - --cert-dir=/tmp
      - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
      - --kubelet-use-node-status-port
      - --metric-resolution=15s
      - --secure-port=10250
    
  2. 테라폼 설정

    resource "helm_release" "metrics_server" {
      name = "metrics-server"
    
      repository = "<https://kubernetes-sigs.github.io/metrics-server/>"
      chart      = "metrics-server"
      namespace  = "kube-system"
      version    = "3.12.1"
    
      **values = [file("${path.module}/values/metrics-server.yaml")]**
    
      depends_on = [aws_eks_node_group.sp-general, aws_eks_node_group.sp-spot, aws_eks_node_group.sp-monitoring]
    }
    
  3. Fast API 엔드포인트(/metrics) 노출

    1. prometheus-fastapi-instrumentator 라이브러리를 추가

      pip install prometheus_fastapi_instrumentator
      
    2. main.py 파일 내부에 코드 삽입

      Instrumentator().instrument(app).expose(app)
      
  4. 서버 실행 후 작동 확인

    브라우저에서 IP:PORT/merics 에 접속하여 수집이 잘 되는지 확인(아래와 같은 형식)

    image.png

  5. 프로메테우스 ↔ 그라파나 연동

    Grafana > Connections > Data sources > Prometheus에 접속하여 프로메테우스 정보를 입력한 후 Save&Test

  6. 그라파나 대시보드 생성(https://grafana.com/grafana/dashboards/)

    그라파나에서 제공하는 대시보드 템플릿 중 마음에 드는 템플릿(json)을 다운로드 한 후 Home > Dashboards > New > Import 를 통해 템플릿 파일과 이전에 등록한 프로메테우스 데이터 소스를 선택하여 대시보드를 생성한다.

    아래와 같이 생성된 대시보드를 확인할 수 있다.

    image.png