DEVELOP/AWS

KUBERNETES | 프로메테우스, 그라파나 실습

Hanee_ 2023. 6. 7. 17:29

✅ 프로메테우스

  • 대상 시스템으로부터 각종 모니터링 지표를 수집하여 저장하고 검색할 수 있는 시스템
  • 그라파나를 통한 시각화 지원
  • 많은 시스템을 모니터링할 수 있는 다양한 플러그인을 가지고 있다.
  • 쿠버네티스의 메인 모니터링 시스템으로 많이 사용된다.
  • 프로메테우스가 주기적으로 exporter(모니터링 대상 시스템)로부터 pulling 방식으로 메트릭을 읽어서 수집한다

 

✅ 그라파나

  • 데이터를 시각화하여 분석 및 모니터링을 용이하게 해주는 오픈소스 분석 플랫폼
  • 여러 데이터 소스를 연동하여 사용 할 수 있으며 시각화 된 데이터들을 대시보드로 만들 수 있음

 

 

✔ 프로메테우스 설치 - master node에서 작업

kubectl create ns monitoring

git clone https://github.com/hali-linux/my-prometheus-grafana.git
cd my-prometheus-grafana

kubectl apply -f prometheus-cluster-role.yaml
kubectl apply -f prometheus-config-map.yaml
kubectl apply -f prometheus-deployment.yaml
kubectl apply -f prometheus-node-exporter.yaml
kubectl apply -f prometheus-svc.yaml
kubectl get pod -n monitoring
kubectl get pod -n monitoring -o wide
kubectl apply -f kube-state-cluster-role.yaml
kubectl apply -f kube-state-deployment.yaml
kubectl apply -f kube-state-svcaccount.yaml
kubectl apply -f kube-state-svc.yaml
kubectl get pod -n kube-system

 

 

✔ 그라파나 설치 - master node에서 작업

kubectl apply -f grafana.yaml
kubectl get pod -n monitoring

 

이 과정에서 ImagePullBackOff 등 이미지를 pull하는 과정에 오류가 생길 수 있는데, 이 경우 도커 서버에서 이미지를 push하고 해당 이미지를 pull받아와서 사용해야한다. 하단의 경우 grafana.yaml 파일로 예시를 들었다.

 

모든 노드에 (위 경우 master1, worker2, docker 서버)에서 daemon.json 파일을 수정한다.

vi /etc/docker/daemon.json

insecure-registies 설정값에 도커 서버의 ip 주소를 추가한다.

systemctl restart docker

 

 

그리고 master1 서버에서 사용할 이미지를 pull 받고 공용으로 사용할 이미지를 다시 push하고 이미지를 앞서 push 한 이미지를 사용할 수 있게끔 grafana.yaml 파일을 변경한다. 

[root@master1 my-prometheus-grafana]# docker login
[root@master1 my-prometheus-grafana]# docker pull grafana/grafana:latest
[root@master1 my-prometheus-grafana]# docker tag grafana/grafana:latest 192.168.1.149:5000/grafana:latest
[root@master1 my-prometheus-grafana]# docker push 192.168.1.149:5000/grafana:latest
[root@master1 my-prometheus-grafana]# vi grafana.yaml
       image: 192.168.1.149:5000/grafana:latest
[root@master1 my-prometheus-grafana]# kubectl apply -f grafana.yaml

 

node-exporter 2개, grafana, prometheus pod가 다음과 같이 정상적으로 실행되어야 한다.

monitoring namespace의 svc를 조회해보면 다음과 같이 두개의 서비스가 실행되고 있음을 볼 수 있으며 하단의 포트번호로 접속하면 됨을 알 수 있다.

 

따라서 첫번째로 prometheus 포트 30003번을 접속해보면 다음과 같은 페이지를 확인할 수 있다.

검색을 통해 원하는 정보를 시각화해서 볼 수 있다.

 

그리고 포트번호 30004번에 접속하면 grafana 페이지를 확인할 수 있다.

시각화를 위해 먼저 Administration > Data sources에 들어간다.

 

Add data source를 클릭해준다.

 

Prometheus 를 추가한다.

 

프로메테우스에 접속하기 위해 url을 설정한다.

 

save&test 버튼을 눌러 위URL이 올바른지 확인하고 저장해본다.

 

이후 Dashboards에 들어간다.

https://grafana.com/grafana/dashboards/

 

Dashboards | Grafana Labs

 

grafana.com

위 링크에 접속하면 특정한 리소스 등을 관찰하기 위해 이미 만들어진 dashboard들을 확인할 수 있다.

 

 

 

315 코드를 검색하여 필요한 대시보드를 찾는다.

 

설정이 완료되면 다음과 같이 시각화 된 모습을 확인할 수 있다.

 

 

백그라운드 실행을통해 cpu 사용률을 임의로 올리면

# yes > /dev/null & # 부하
# pkill -9 yes # 종료

다음과 같이 그래프가 변경됨을 볼 수 있다.

 

 

 

✔ 그라파나 활용하여 프로메테우스로 시각화하기

Cluster CPU usage > view로 접속한다.

 

해당 수식을 prometeous에서 검색하면 프로메테우스에서도 data table과 graph를 확인할 수 있다.

 

 

 

 

 

 

참고

https://benlee73.tistory.com/60