데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      Operator를 활용한 Prometheus 간단히 설치하기(2) - Exporter 편

      seungkyua 21.08.12
      9,199 5 0

      이전 글에서 Operator 를 활용하여 Prometheus 를 간단하게 설치하는 방법을 알아보았다. 사실 Prometheus 만 설치해서는 metric 을 수집할 수 없다. metric 을 제공하는 exporter 를 설치해야 한다.

       

       

      Prometheus 는 metric 을 pulling 하는 구조이다. metric 을 제공하는 서버를 띄우고 Prometheus 에서 이 metric 서버에 대한 endpoint 만 정의해 주면 알아서 metric 을 수집한다. metric을 제공하는 서버를 Exporter 라 하며 metric 을 http로 노출시킨다. 이 metric 제공 서버에 대한 endpoint 와 inverval 은 ServiceMonitor 라는 CR (Custom Resource) 로 쉽게 정의한다 (PodMonitor 도 있다). 정리하면 Prometheus 는 ServiceMonitor 에서 지정한 endpoint를 읽어서 해당 Exporter 에 주기적으로 metric 을 pulling 하여 저장하는 구조이다.

      그럼 가장 일반적인 Exporter 인 kube-state-metric 을 설치해 보자. 요즘 Exporter 는 metric 을 제공하는 서버 뿐만 아니라 ServiceMonitor CR 도 함께 설치할 수 있도록 제공한다.

       

      1. kube-state-metrics exporter

      kube-state-metrics exporter 는 kubernetes 의 전반적인 resource 에 대해서 알 수 있는 metric 서버다. pod, delployment, service 와 같은 리소스 타입별로 설치된 개수를 노드별로 조회해 볼 수 있다. 해당 exporter 는 여러 버전이 있지만 bitnami 의 차트로 설치해 보기로 한다.

      먼저 아래와 같이 helm repo 를 등록한다.

      $ helm repo add bitnami https://charts.bitnami.com/bitnami
      $ helm repo update
      

      bitnami helm repo 에서 kube-state-metrics 차트가 있는지 조회한다.

      $ helm search repo bitnami/kube-state-metrics
      NAME                          CHART VERSION    APP VERSION    DESCRIPTION
      bitnami/kube-state-metrics    2.1.3            2.1.0          kube-state-metrics is a simple service that lis...
      

      최신의 차트 버전이 2.1.3 이다. 해당 버전으로 exporter 를 설치해 본다. 로컬로 다운 받아서 설치해도 되고 바로 helm repo 를 지정해서 설치해도 된다. 지금은 차트를 다운받는 방법을 알려주고자 로컬로 다운 받아서 설치한다.

      $ helm pull bitnami/kube-state-metrics --version 2.1.3
      $ tar xvfz kube-state-metrics-2.1.3.tgz
      

      kube-state-metrics 라는 디렉토리가 생기면서 아래 차트들이 압축이 풀린 상태로 저장됐다. 이제 override 할 value 파일을 만들어 보자.

      $ vi kube-state-metrics-values.yaml
      ---
      nodeSelector:
        taco-lma: enabled
      serviceMonitor:
        enabled: true
        namespace: prometheus
        honorLabels: false
      

      nodeSelector 는 exporter metric 서버가 실행될 노드의 위치를 정하는 것이고 serviceMonitor 는 endpoint 를 갖는 ServiceMonitor CR 이 생성될 네임스페이스로 Prometheus 를 설치한 네임스페이스를 주면 된다. 그러므로 사전에 node 에 label 이 생성되어 있어야 한다. honorLabels 은 타겟 레이블과 충돌 시 metric 레이블을 선택할지를 결정한다.

      helm 명령어로 chart 를 설치해 본다.

      $ helm upgrade -i kube-state-metrics ./kube-state-metrics -f kube-state-metrics-values.yaml -n prometheus
      

      metric 서버는 deployment 로 실행되고 있다.

      $ kubectl get pods kube-state-metrics-858584cb77-sr5tn -n prometheus
      NAME                                  READY   STATUS    RESTARTS   AGE
      kube-state-metrics-858584cb77-sr5tn   1/1     Running   0          15m
      

      ServiceMonitor 도 생성이 되어 있다. ServiceMonitor 의 내용을 살펴보면 다음과 같다.

      $ kubectl get servicemonitors -n prometheus kube-state-metrics -o yaml
      apiVersion: monitoring.coreos.com/v1
      kind: ServiceMonitor
      metadata:
        name: kube-state-metrics
        namespace: prometheus
      spec:
        endpoints:
        - honorLabels: false
          port: http
        namespaceSelector:
          matchNames:
          - prometheus
        selector:
          matchLabels:
            app.kubernetes.io/instance: kube-state-metrics
            app.kubernetes.io/name: kube-state-metrics
      

      endpoint url 이 따로 등록되어 있지 않지만 selector 의 matchLabels 를 통해 kube-state-metrics Service 와 연결되어 해당 서버를 가리키는 것을 알 수 있다.

      Service 내용을 보면 labels 에 잘 등록되어 있다.

      $ kubectl get svc -n prometheus kube-state-metrics -o yaml
      apiVersion: v1
      kind: Service
      metadata:
        labels:
          app.kubernetes.io/instance: kube-state-metrics
          app.kubernetes.io/name: kube-state-metrics
          app.kubernetes.io/managed-by: Helm
          helm.sh/chart: kube-state-metrics-2.1.3
      ...
      

      마지막으로 Prometheus 웹 화면에서 Status >> Targets 메뉴를 클릭하고 metric 수집이 잘 되고 있는지 확인한다.

       

       

       

      2. Node Exporter 설치

      Node Exporter 는 설치하는 방법이 kube-state-metrics 와 동일하다. 다만 chart repo 로 prometheus community 를 활용한다.

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

      chart의 최신 버전을 조회한다.

      $ helm search repo prometheus/prometheus-node-exporter
      NAME                                   CHART VERSION    APP VERSION    DESCRIPTION
      prometheus/prometheus-node-exporter    2.0.2            1.2.0          A Helm chart for prometheus node-exporter
      

      이번에는 chat 를 다운받지 말고 helm repo 를 통해서 바로 설치한다. override 할 value 파일을 만든다.

      $ vi prometheus-node-exporter-values.yaml
      prometheus:
        monitor:
          enabled: true
          namespace: prometheus
      podLabels:
        jobLabel: node-exporter
      extraArgs:
        - --collector.filesystem.ignored-mount-points=^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)($|/)
        - --collector.filesystem.ignored-fs-types=^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$
        - --no-collector.hwmon
      

      helm 명령어로 chart 를 배포한다.

      $ helm upgrade -i prometheus-node-exporter prometheus/prometheus-node-exporter --version 2.0.2 -f prometheus-node-exporter-values.yaml -n prometheus
      

      Prometheus 웹 화면에서 Status >> Targets 메뉴에서 정상적으로 수집됨을 확인 할 수 있다.

       

       

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      seungkyua 님의 최신 블로그

      더보기
      동영상 기고하기