✅ 프로메테우스
- 대상 시스템으로부터 각종 모니터링 지표를 수집하여 저장하고 검색할 수 있는 시스템
- 그라파나를 통한 시각화 지원
- 많은 시스템을 모니터링할 수 있는 다양한 플러그인을 가지고 있다.
- 쿠버네티스의 메인 모니터링 시스템으로 많이 사용된다.
- 프로메테우스가 주기적으로 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를 확인할 수 있다.
참고
'DEVELOP > AWS' 카테고리의 다른 글
KUBERNETES | GCP에서 쿠버네티스 사용해보기 (0) | 2023.06.08 |
---|---|
KUBERNETES | Taint, Toleration, Drain, Cordon, Daemonset 실습 (0) | 2023.06.08 |
AWS | NAT 인스턴스, S3, CloudFront, Lambda, MediaConvert구축 (0) | 2023.05.09 |
AWS | 다이어그램 따라 망 구축하기 (0) | 2023.05.03 |
AWS | WAF, DVWA, Amazon Inspector, NAT instance vs NAT Gateway 비교 (0) | 2023.05.03 |