Middleware (Kubernetes-3) prometheus & Grafana 활용하여 모니터링 구성하기
페이지 정보
작성자 미들웨어 아이디로 검색 전체게시물 댓글 0건 조회 2,639회 좋아요 1회 작성일 21-09-23 09:32본문
안녕하세요. 미들웨어 입니다.
이번 시간에는 지난 번에 이어서 쿠버네티스를 모니터링 방법에 대해 진행해보겠습니다.
쿠버네티스를 활용하는 곳이 cloud 경우는 많이 활성화가 되있어서 자체 모니터링도 나름 괜찮습니다.
하지만... 저희의 application 에는 상황에 맞도록 서비스에 맞도록 수정해줘야 합니다.
물론 상용 모니터링툴인 jennifer 경우 꽤 괜찮은 대안이 됩니다.
오픈소스인만큼 오픈소스로 모니터링을 구성해보겠습니다.
오픈소스 모니터링으로 활용도가 높은 것은 grafana 인것 같으니 그걸로 진행해보겠습니다.( 레퍼런스도 꽤 많이 있기도 합니다.)
1. helm 헬름설치
- curl 로 헬름 설치 진행 (한줄씩 입력하세요)
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh |
- 설치 버전 확인
helm version
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts/
helm repo update
helm search repo prometheus |
- helm 인스톨로 쿠버네티스에 배포
helm install prometheus-community/kube-prometheus-stack --generate-name
- 차트에 대한 배포가 끝나니 프로메테우스, 그라파나가 설치된 것을 확인 해봅시다.
[opc@inst-public ~]$ kubectl get deploy,po,svc NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/kube-prometheus-stack-1629-operator 1/1 1 1 28m deployment.apps/kube-prometheus-stack-1629700182-grafana 1/1 1 1 28m deployment.apps/kube-prometheus-stack-1629700182-kube-state-metrics 1/1 1 1 28m deployment.apps/nginx 3/3 3 3 3h8m
NAME READY STATUS RESTARTS AGE pod/alertmanager-kube-prometheus-stack-1629-alertmanager-0 2/2 Running 0 28m pod/kube-prometheus-stack-1629-operator-84f6854bff-6j78m 1/1 Running 0 28m pod/kube-prometheus-stack-1629700182-grafana-77944c547b-j7db8 2/2 Running 0 28m pod/kube-prometheus-stack-1629700182-kube-state-metrics-7b94c65fvm4 1/1 Running 0 28m pod/kube-prometheus-stack-1629700182-prometheus-node-exporter-7c82b 1/1 Running 0 28m pod/kube-prometheus-stack-1629700182-prometheus-node-exporter-qvqd8 1/1 Running 0 28m pod/kube-prometheus-stack-1629700182-prometheus-node-exporter-vmj7g 1/1 Running 0 28m pod/nginx-7848d4b86f-7hgnw 1/1 Running 0 3h1m pod/nginx-7848d4b86f-hczzk 1/1 Running 0 3h8m pod/nginx-7848d4b86f-kgcgf 1/1 Running 0 3h8m pod/prometheus-kube-prometheus-stack-1629-prometheus-0 2/2 Running 0 28m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 28m service/kube-prometheus-stack-1629-alertmanager ClusterIP 10.96.209.138 <none> 9093/TCP 28m service/kube-prometheus-stack-1629-operator ClusterIP 10.96.76.65 <none> 443/TCP 28m service/kube-prometheus-stack-1629-prometheus ClusterIP 10.96.13.232 <none> 9090/TCP 28m service/kube-prometheus-stack-1629700182-grafana ClusterIP 10.96.141.132 <none> 80/TCP 28m service/kube-prometheus-stack-1629700182-kube-state-metrics ClusterIP 10.96.17.26 <none> 8080/TCP 28m service/kube-prometheus-stack-1629700182-prometheus-node-exporter ClusterIP 10.96.194.129 <none> 9100/TCP 28m service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d21h service/nginx-service LoadBalancer 10.96.191.198 146.56.169.xxx 8080:32590/TCP 166m service/prometheus-operated ClusterIP None <none> 9090/TCP 28m |
2. Grafana 서비스 매니페스트 파일을 열어 로드벨런신 구성하여 공인IP 연동하기
OCI에서는 로드벨런싱을 구성하여 외부 호출을 진행 할 수 있는 공인 IP를 할당 받을 수 있습니다.
(주의할점은 아래 # 주석처리된 부분을 동일하게 진행 하시고 추가된 글도 동일하게 추가해야 합니다)
kubectl edit svc kube-prometheus-stack-1629700182-grafana
- 아래 내용 수정 후 저장 (:wq!)
apiVersion: v1 kind: Service metadata: #annotations: #meta.helm.sh/release-name: kube-prometheus-stack-1629700182 #meta.helm.sh/release-namespace: default annotations: service.beta.kubernetes.io/oci-load-balancer-backend-protocol: HTTP service.beta.kubernetes.io/oci-load-balancer-shape: 100Mbps creationTimestamp: "2021-08-23T06:30:20Z" labels: app.kubernetes.io/instance: kube-prometheus-stack-1629700182 app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: grafana app.kubernetes.io/version: 8.0.5 helm.sh/chart: grafana-6.14.2 name: kube-prometheus-stack-1629700182-grafana namespace: default resourceVersion: "759130" uid: 0f7ccf76-15df-40ac-a0d6-ca1139e12895 spec: clusterIP: 10.96.141.132 clusterIPs: - 10.96.141.132 ports: - name: service port: 80 protocol: TCP targetPort: 3000 selector: app.kubernetes.io/instance: kube-prometheus-stack-1629700182 app.kubernetes.io/name: grafana sessionAffinity: None #type: ClusterIP type: LoadBalancer status: loadBalancer: {}
|
3. Grafana 초기 접속 패스워드 가져오기
kubectl get services | grep grafana
kubectl get secret kube-prometheus-stack-1629700182-grafana -o jsonpath="{.data.admin-password}"|base64 --decode;echo
- 패스워드 나온것을 복사해서 로그인하시고 추후 비번은 변경하시면 됩니다.
위에서 admin/admin 을 정의했으니 그대로 입력해주세요.
ID : admin
PW : admin
4. Grafana 에서 Kubernetes 대시보드 Import 하기
직접구성하셔도 되는데, 이왕이면 잘만든 것을 사용하는 것이 시간 및 능률이 좋습니다.
추천해드리겠습니다.
아래링크에서 검색한뒤 번호를 import 하시면 됩니다.
https://grafana.com/grafana/dashboards?search=kubernetes
- 대시보드 Import 시켜주세요.
대시보드는 위 링크에서 선택한 넘버를 입력해주면 되는데, 저는 1045를 입력해봤습니다.
5. Kubernetes 용으로 다운로드 받은 Grafana 대시보드 화면
- 아래 대시보드는 13770 번호를 import 했을경우 모니터링 가능한 항목과 대시보드 화면 입니다
- import 13770
꽤 그럴사 하조?
이걸 시작으로 node, pod를 구성하면 자동으로 변화된 내용을 감지하여 모니터링 항목에 추가 시킬 수 있습니다.
댓글목록
등록된 댓글이 없습니다.