개발놀이터
AWS EKS 모니터링 환경 구축하기 (Prometheus, Grafana) 본문
이전 포스팅에서 이어집니다!
https://coding-review.tistory.com/559
이전 포스팅에선 HPA와 CA로 파드와 노드를 동적으로 늘리는 실습을 했습니다. 이번엔 모니터링 환경을 구축해보도록 하겠습니다!
이전 포스팅에서 다뤘던 내용은 다루지 않겠습니다!
모니터링 환경 구축
프로메테우스 설치
우선 프로메테우스 yaml 파일을 하나 만들어줍니다.
defaultRules:
rules:
alertmanager: true
etcd: true
alertmanager:
service:
type: NodePort
kubeApiServer:
enabled: true
kubelet:
enabled: true
prometheus:
thanosService:
enabled: false
serviceMonitorSelectorNilUsesHelmValues: false
service:
type: NodePort
retention: 5d
retentionSize: "10GiB"
storageSpec:
volumeClaimTemplate:
spec:
storageClassName: gp2
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 15Gi
여기서 중요한건 serviceMonitorSelectorNilUsesHelmValues를 false로 하는 것인데 만약 프로메테우스와 다른 네임스페이스를 가지고 있더라도 모니터링할 수 있도록 해주는 옵션입니다.
그리고 Helm을 이용해서 프로메테우스를 설치해주도록 하겠습니다.
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
이렇게 두개를 먼저 입력하고 이제 본격적으로 설치해보겠습니다.
helm install prometheus prometheus-community/prometheus --namespace ingress-nginx -f prometheus.yml
그리고 파드를 확인해보면?
이렇게 잘 되는 것을 확인할 수 있는데 이때 prometheus-server와 prometheus-alertmanager가 Pending 상태일 수 있습니다. 이건 PVC와 연결이 안되서 그런 것이므로 PVC를 확인해보면 됩니다.
저는 이미 연결을 다 해놨지만 Pending 상태에 있을 것입니다. 이때 edit으로 직접 파일을 수정해주도록 합시다.
이 부분을 확인해주시고 만약 gp2가 아니라면 gp2로 바꿔줍니다.
그럼 정상적으로 Running 상태에 들어가게됩니다.
이어서 그라파나를 설치해보겠습니다.
그라파나 설치
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm install grafana grafana/grafana --namespace ingress-nginx
네임스페이스는 본인의 네임스페이스로 적절하게 바꿔주세요!
그리고 파드와 서비스를 확인해보죠
그라파나가 잘 들어가있죠?
이제 외부에서 붙어보겠습니다.
이렇게 포트포워딩을 해놓고 다른 터미널을 띄워줍니다.
다른 터미널에서 secret을 확인해주면 이렇게 빨간 부분이 패스워드입니다.
우린 3000번 포트로 포트포워딩을 했으니 http://localhost:3000으로 들어가줍니다.
아이디는 admin 패스워드는 위의 빨간 부분입니다.
이렇게 들어왔습니다!
왼쪽에 Connections -> Datasource으로 가줍니다.
저는 이미 하나 등록해놨는데 일단 없다고 가정하고 오른쪽 위에 Add new data source를 클릭합니다.
프로메테우스를 클릭하면 아래의 Connection부분이 우리가 입력해야할 부분입니다. 다시 터미널로 오겠습니다.
Service를 검색해서 나오는 prometheus-server의 포트와 아이피를 잘 적어두고 다시 UI로 넘어옵니다!
연결하고 Dashboard로 가줍니다.
제가 미리 하나 등록해놨는데 그건 무시하시고 오른쪽 위에 New를 클릭한 뒤 New Dashboard를 클릭합니다.
Add New Visualization 을 클릭하면 다음과 같은 창이 나오는데 디폴트로 되어있는 것을 선택합니다.
처음 화면인데 오른쪽 아래 Builder를 Code로 바꿔줍니다.
적절한 PromQL을 넣어주면 끝!
저는 네임스페이스가 ingress-nginx이면서 파드의 이름이 spring-rs-로 시작하는 것들을 넣어줬습니다.
현재 저는 스프링 파드를 두개 띄워놨고 이에 대한 CPU사용량을 모니터링 한 것입니다. PromQL은 찾아보시거나 GPT한테 물어보면 기깔나게 대답해주니 그것을 참고하면 되겠습니다.
마치며
이렇게 모니터링 환경을 구축해보았습니다. 추후에 포스팅으로 부하테스트를 거치고 파드가 늘어나는 것과 슬랙으로 알람을 보내는 것 까지 한번 시도해보려고합니다.
그럼 오늘 포스팅은 여기서 마치도록 하겠습니다. 긴 글 읽어주셔서 감사합니다! 오늘도 즐거운 하루 되세요!
'배포 > kubernetes' 카테고리의 다른 글
쿠버네티스 클러스터에 RDB배포 해? 말어? 에 대한 논쟁 (0) | 2024.10.17 |
---|---|
AWS EKS 모니터링 환경 구축에 슬랙 알람 추가하기 (0) | 2024.10.15 |
AWS EKS HPA로 확장성 높이기 (0) | 2024.10.08 |
AWS EKS 스프링 + Nginx + SSL (0) | 2024.10.05 |
AWS EKS 스프링 프로젝트에 NGINX 붙이기 (0) | 2024.10.01 |