23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
이전 글에서 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 도 함께 설치할 수 있도록 제공한다.
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 수집이 잘 되고 있는지 확인한다.

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 메뉴에서 정상적으로 수집됨을 확인 할 수 있다.

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