개요
Grafana 대시보드 구성을 위해 Node의 lable이 필요한 상황이라 kube_node_label 메트릭(metrics)을 조회해봤다.
하지만, kube_node_label 메트릭에서는 label에 대한 정보가 표시되지 않고 있었다.
이를 해결했던 경험을 작성하려고 한다. + (kube_pod_label에서도 표시되지 않는 현상도 수정하였다.)
환경
kube-prometheus-stack v 32.2.1
kube-state-metric v2.3.0
원인
kube-state-metrics이 kube_node_label과 kube_pod_label 메트릭을 수집하고 있는데, v2.0.0부터는 label을 따로 표기하지 않게 설정이 되었다고 한다. (많은 label로 인해 에러를 방지하기 위함이라고 한다.)
참고 URL : https://github.com/kubernetes/kube-state-metrics/issues/1270
그렇다고 label을 볼 수 없는 것은 아니고, CLI를 통해 지정된 label을 볼 수 있도록 되어 있다고 한다.
해결
CLI를 통해 지정된 label을 볼 수 있으므로 관련 내용을 수정해보자.
먼저 kube-state-metrics 파드는 deployment를 통해 배포되고 있으니, deployment가 있는지 조회해본다.
kubectl get deployment -A | grep kube-state-metrics
정상적으로 조회되는 것을 확인했으니, deployment를 수정하자
kubectl edit deployment kube-prometheus-stack-kube-state-metrics -n mmx-monitor
containers의 밑에 항목에 - --metric-labels-allowlist=nodes=[레이블] # 이 부분 추가하면 된다.
POD label을 추가할 것이라면 - --metric-labels-allowlist=pods=[레이블]
ex) - --metric-labels-allowlist=nodes=[*] // 모든 label
ex) - --metric-labels-allowlist=nodes=[test-role] // key가 test-role인 label
ex) - --metric-labels-allowlist=pods=[app,k8s-app],nodes=[*] // pods, 와 label 동시에 추가
spec:
containers:
- args:
- --port=8080
- --resources=certificatesigningrequests,configmaps,cronjobs,daemonsets,deployments,endpoints,horizontalpodautoscalers,ingresses,jobs,limitranges,mutatingwebhookconfigurations,namespaces,networkpolicies,nodes,persistentvolumeclaims,persistentvolumes,poddisruptionbudgets,pods,replicasets,replicationcontrollers,resourcequotas,secrets,services,statefulsets,storageclasses,validatingwebhookconfigurations,volumeattachments
- --telemetry-port=8081
- --metric-labels-allowlist=nodes=[mmx-role] # 이 부분 추가
그 결과 label이 정상 표기되는 것을 볼 수 있다.
'DevOps > Monitoring' 카테고리의 다른 글
[Monitoring] Grafana 대시보드 백업 자동화 (0) | 2022.11.07 |
---|---|
[Monitoring] DCMG-Exporter 메트릭이 프로메테우스에 수집 안되는 현상 (0) | 2022.08.16 |
[Monitoring] 프로메테우스란 (Prometheus) (0) | 2022.08.04 |