728x90
GKE에서 프로메테우스 설치와 모니터링
쿠버네티스 클러스터 모니터링 툴과 서비스 사용 현황
프로메테우스
- https://cloud.google.com/monitoring/kubernetes-engine/prometheus?hl=ko
- GKE에 프로메테우스를 설치하려면 최소 노드당 CPU 2 이상의 퍼포먼스가 필요
- 영역: asia-northeast3-a
- 노드: 일반용도 N1 n1-standard-2(vCPU 2ro, 7.5GB 메모리 선택)
- Marketplace 에서 Prometheus & Grafana 검색 후 설치(네임 스페이스를 별도로 할당)
- 네임스페이스만 prometheus 로 수정
- 만약 prometheus 가 제대로 설치되지 않아 계속 Pending 된다면 애플리케이션에서 삭제하고 재설치
프로메테우스 아키텍처
- Kubernetes 클러스터에서 메트릭을 자동으로 수집하여 Prometheus 서버에서 수집하고 Grafana에 제공
Prometheus StatefulSet
- 구성된 모든 소스를 주기적으로 쿼리하여 구성된 모든 메트릭을 수집
- 각 Prometheus Pod는 PersistentVolumeClaim에 데이터를 저장
Prometheus Node Export DaemonSet
- 포드를 실행하고 있는 호스트 파일 시스템의 /sys, /proc을 수집 및 모니터링하여 노드의 하드웨어 및 운영 체제에 대한 값을 측정하고 메트릭을 NodeExport 포드의 포트 9100에 표시
Kube State Metrics Deployment
- Kubernetes API 서버를 수신하고 리소스 (배포, 노드, 포드 등)와 관련된 메트릭을 생성
- /metrics 포트 8080 에서 메트릭을 표시
- Prometheus 서버는 메트릭 사용
Prometheus Alert Manager
- Prometheus 서버에서 발생하는 경고를 수신하고 ConfigMap에 지정된 구성에 따라 처리
Grafana StatefulSet
- Prometheus에 메트릭에 대한 쿼리를 위한 사용자 인터페이스를 제공하고 사전 구성된 대시 보드의 메트릭을 시각화
모든 준비가 완료되면 NodePort를 생성하여 웹서비스 실행
grafana-nodeport.yaml
apiVersion: v1
kind: Service
metadata:
name: grafana-nodeport
namespace: prometheus-1
spec:
type: NodePort
ports:
- port: 8080
targetPort: 3000
nodePort: 30001
selector:
app.kubernetes.io/component: grafana
$ kubectl create -f grafana-nodeport.yaml
service/grafana-nodeport created
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
grafana-nodeport NodePort 10.11.242.226 <none> 8080:30001/TCP 6m35s
kubernetes ClusterIP 10.11.240.1 <none> 443/TCP 6m35s
- 또한 gcloud 명령어를 사용하여 Firewall 설정 필요
$ gcloud compute firewall-rules create grafana-nodeport-rule --allow=tcp:30001
$ kubectl get node -o wide
$ curl 34.67.21.139:30001
<a href="/login">Found</a>.
- 애플리케이션에서 세부 정보 확인
실습
Marketplace 에서 설치한 Prometheus & Grafana 서비스 확인
$ kubectl get svc -n prometheus
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
prometheus-1-alertmanager ClusterIP 10.36.2.172 <none> 9093/TCP 19m
prometheus-1-alertmanager-operated ClusterIP None <none> 6783/TCP,9093/TCP 19m
prometheus-1-grafana ClusterIP 10.36.12.78 <none> 80/TCP 19m
prometheus-1-kube-state-metrics ClusterIP 10.36.3.153 <none> 8080/TCP,8081/TCP 19m
prometheus-1-prometheus ClusterIP 10.36.14.239 <none> 9090/TCP 19m
grafana 서비스 설정 변경
$ kubectl edit svc -n prometheus prometheus-1-grafana
ClusterIP -> LoadBalancer 로 type 변경
...
spec:
...
type: LoadBalancer
...
prometheus-1-grafana 서비스에 LoadBalancer IP가 할당될때까지 pending 상태임을 확인
$ kubectl get svc -n prometheus prometheus-1-grafana
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
prometheus-1-grafana LoadBalancer 10.36.12.78 <pending> 80:30440/TCP 24m
할당된 EXTERNAL-IP 를 확인
$ kubectl get svc -n prometheus prometheus-1-grafana
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
prometheus-1-grafana LoadBalancer 10.36.12.78 34.64.184.167 80:30440/TCP 25m
EXTERNAL-IP 를 브라우저에 입력하고 grafana 웹에 접속해서 username, password 를 입력해서 로그인 하면됨
728x90
'개발강의정리 > DevOps' 카테고리의 다른 글
[데브옵스를 위한 쿠버네티스 마스터] 서비스 매쉬 환경 모니터링 도구 isio 시작하기 (0) | 2021.01.19 |
---|---|
[데브옵스를 위한 쿠버네티스 마스터] 리소스 로깅과 모니터링 - EFK를 활용한 k8s 로그 모니터링 (0) | 2021.01.19 |
[데브옵스를 위한 쿠버네티스 마스터] 리소스 로깅과 모니터링 - 큐브 대시보드 설치와 사용 (0) | 2021.01.19 |
[데브옵스를 위한 쿠버네티스 마스터] 리소스 로깅과 모니터링 - 애플리케이션 로그 관리 (0) | 2021.01.19 |
[데브옵스를 위한 쿠버네티스 마스터] 리소스 로깅과 모니터링 - 쿠버네티스 모니터링 시스템과 아키텍처 (0) | 2021.01.19 |
댓글