Kubernetes Monitoring : Metrics
[Kubernetes Monitoring 관련 글 목록]
Kubernetes Monitoring : Metrics
Kubernetes Monitoring : HAP
Kubernetes Monitoring : Prometheus 개념
Kubernetes Monitoring : Prometheus 설치
Kubernetes Monitoring : Grafana
Kubernetes를 사용하다가 console 환경이 아닌
GUI로 한눈에 Kubernetes Cluster 상태를 확인할 수 있는 Tool이 있나 확인하던 중
Kubernetes Monitoring에 대해서 리서치를 시작함.
Kubernetes에서 말하는 Metrics란?
계량이라는 뜻을 가진 Metrics는 Kubernetse에서 수집지표를 뜻함.
즉 kubernetes에서 Monitoring으로 감시하기 위한 대상 자원들을 Metric(메트릭)이라고 부름.
kubernetes Metrics는 4계층으로 분류됨.
Metrices 4계층
1. Host
Kubernetes Cluster를 구성하는 모든 Node의
Host에 대한 CPU, 메모리, 디스크, 네트워크, 사용량과
Node의 OS와 커널에 대한 모니터링을 함.
2. Container
Node에서 실행 중인 Container의
CPU,메모리, 디스크, 네트워크 사용량 모니터링 함.
3. Application
Container에서 구동되는 개별 어플리케이션에 대한 모니터링.
ex) 컨테이너에서 기동되는 node.js기반의 애플리케이션의 http 에러 빈도 등
4. Kubernetes
Container를 컨트롤 하는 Kubernetes 자체에 대한 모니터링
(Kubernetes의 자원인 Service, POD, 계정 정보등이 이에 해당)
Metrices 종류를 2가지로 분류
이러한 4계층으로 분류된 Matrics는
분류방법에 따라 2개의 Matrics로 분류됨.
1 . System Metrics
Metrics 4계층 중 Host와 Container에 해당하며
Node나 컨테이너의 CPU, 메모리 사용량 같은 일반적인 시스템 관련 Metrics.
System Metrics는 더 세분화해서 Core Metrics와 Non-core Metrics로 분류됨.
[Core Metrics]
kubernetes의 내부 컴포넌트들이 사용하는 Metrics.
ex) kubectl top에서 사용하는 Metrics 값
[Non-core Metrics]
kubernetes가 직접 사용하지 않는 다른 시스템 Metrics을 의미
2 . Service Metrics
Metrics 4계층 중 Application과 Kubernetes에 해당하며
Application을 모니터링 하는데 필요한 Metrics
ex) 웹서버의 응답속도, 500error의 빈도 등
Metrics을 수집하는 방법
위에서 Metrics란 무엇인가를 알겠으니
이제 이러한 Metrics를 수집하는 방법도 알아야함.
Metrics를 수집하는 방법을 Pipeline이라고 하는데
Pipeline이 Monitoring과 같은 의미임.
Pipeline은 Core metric pipline, Monitoring pipeline 2가지가 있음.
1. Core metric pipeline (Resource Metric Pipeline)
Kubernetes의 Master Node, Worker Node로부터 수집되는 System Metrics에 대한 모니터링을 담당함.
kubectl top 명령으로 나오는 결과와 관련있는 Metric을 수집함.
[특징]
System Metrics만 수집가능.
주로 Kubernetes 를 구성하는 모듈(kube-apiserver, kube-Scheduler, kube-controller Manager 등등 )들이 사용함.
별도의 외부 서드파티(3rd-party) 모니터링 시스템과 연계되지 않음.
Scheduler와 HPA (Horizontal Pod Autoscaling)등등 에서 기초자료 수집용도로 사용됨.
[cAdvisor]
CAdvisor는 Kubernetse 에서 사용하는 기본적인 모니터링 Agent.
모든 Worker Node의 Kubelet은 CAdvisor를 자체적으로 내장하고 있음.
CAdvisor를 통해서 Node, Pod, Pod내부의 Container에 대한 System Metric정보를 수집함.
수집한 정보는 kubelet에 전달되고
해당 정보는 이후에 Metric Server, Prommetheus (프로메테우스)에서 수집함.
[Metric Server]
kubernetes Addon 종류 중 하나로 공식적으로 Kubernetes에서 개발, 관리되는 Addon임.
Cadvisor가 kubelet에 전달해놓은 System Metric 정보를 가져와서 메모리에 저장함.
메모리에 저장되기 때문에 영구적이지가 않아서 짧은 기간의 데이터만 보관함.
Metric Server가 없는 상태에서
kubectl top 명령을 해보면 아래와 같음.
Error from server (NotFound): the server could not find the requested resource (get services http:heapster:)
해당 Error msg는 Node에서 system metric을 수집하는 Metric Server가 없기 때문.
즉 Kubernetes cluster 구성 시 default로 있는 server가 아니고
Metric Server를 별도로 추가적으로 구축해줘야함.
[k8s Aggregator]
기본적으로 kubernetes에서 제공하는 API( Kubernetes Core API )이외에
더 많은 기능을 사용하기 위해 API 추가할 수 있도록 해주는 역할을 수행함.
k8s Aggregator를 통해 custom api를 Kube-apiserver에 등록할 수 있음.
[Metric API]
위에서 설명한 k8s Aggregator를 통해서
Metric Server에서 사용할 Custom API인 Metric API를 kube-apiserver에 등록함.
Metric API가 등록되어있지 않다면
kubectl top 명령을 해보면 아래와 같은 msg를 확인할 수 있음.
error: Metrics API not available
일반적으로 Metric Server Addon을 설치하면
Metric API까지 한번에 설치됨.
1. 모든 Worker Node의 cAdvisor에서 System Metric 정보를 수집.
2. cAdvisor는 수집한 정보를 kubelet으로 전송.
3. kubelet에 있는 System Metric 정보를 Metric Server가 받아와서 메모리에 저장함.
4. Metrics-Server에서는 System metric 정보를 사용하기 위해 Custom API를 k8s Aggregator를 통해 미리 API server에 등록해놓았음.
5. 등록된 Metrics API를 통해 수집된 System Metric 정보가 HPA로 전송됨.
6. 설정한 값에 따라 HPA에서는 kube-controller manager에 명령을 내림
7. 명령을 받은 kube-controller manager에서 pod을 scale-out 시킴
2. Monitoring pipeline (Full Metric Pipeline)
Kubernetes를 구성하는 Node이외에 별도의 Addon을 사용해서 모니터링 데이터를 수집함.
[특징]
System Metrics, Service Metrics 등 모두 수집가능.
주로 Kubernetes Cluster 사용자들이 필요한 자원을 모니터링 하는데 사용함.
별도의 외부 서드파티(3rd-party) 모니터링 시스템과 연계가능. ex) Prometheus(프로메테우스)
1. System Metric의 경우 kubernetes에서 공식적으로 제공하는 Metric Server Addon으로 수집하면 되지만
Service Metric의 경우 기본 제공 Metric이 아님으로 Service Metric을 수집하는 별도의 Agent를 배치해야함.
상위 그림의 Monitoring node agent에 해당함.
2. 수집한 System, Service Metric을 monitoring cluster agent으로 전송함. ex) Prometheus
3. Monitoring cluster agent는 해당 Metric을 Dashboard로 확인하거나 HPA로 전송함.
제 글을 복사할 시 출처를 명시해주세요.
글에 오타, 오류가 있다면 댓글로 알려주세요! 바로 수정하겠습니다!
Kubernetes Metric 참고
https://kubernetes.io/ko/docs/tasks/debug-application-cluster/resource-usage-monitoring/
https://kubernetes.io/ko/docs/tasks/debug-application-cluster/resource-metrics-pipeline/
https://gruuuuu.github.io/cloud/monitoring-k8s1/#
https://arisu1000.tistory.com/27855
'Kubernetes > Monitoring' 카테고리의 다른 글
kubernetes kubelet cAdvisor 분석 (0) | 2021.07.17 |
---|---|
Kubernetes Monitoring : Grafana (0) | 2020.11.07 |
Kubernetes Monitoring : Prometheus 설치 (0) | 2020.11.07 |
Kubernetes Monitoring : Prometheus 개념 (0) | 2020.11.07 |
Kubernetes Monitoring : HPA (0) | 2020.11.07 |