공유할 서비스 선택

TECH


TECH

Middleware (Kubernetes-3) prometheus & Grafana 활용하여 모니터링 구성하기

페이지 정보

작성자 미들웨어 아이디로 검색 전체게시물 댓글 0건 조회 565회 좋아요 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

46f8f88b4c4876c608ed3c2524bfa2a5_1632356990_5149.png
 

 

4. Grafana 에서 Kubernetes 대시보드 Import 하기

직접구성하셔도 되는데, 이왕이면 잘만든 것을 사용하는 것이 시간 및 능률이 좋습니다.

추천해드리겠습니다. 

아래링크에서 검색한뒤 번호를 import 하시면 됩니다.

 

https://grafana.com/grafana/dashboards?search=kubernetes

 

- 대시보드 Import 시켜주세요. 

  대시보드는 위 링크에서 선택한 넘버를 입력해주면 되는데, 저는 1045를 입력해봤습니다.

46f8f88b4c4876c608ed3c2524bfa2a5_1632357061_7069.png

 

 

5. Kubernetes 용으로 다운로드 받은 Grafana 대시보드 화면

- 아래 대시보드는 13770 번호를 import 했을경우 모니터링 가능한 항목과 대시보드 화면 입니다

- import 13770

46f8f88b4c4876c608ed3c2524bfa2a5_1632357095_1856.png
 

꽤 그럴사 하조? 

이걸 시작으로 node, pod를 구성하면 자동으로 변화된 내용을 감지하여 모니터링 항목에 추가 시킬 수 있습니다.

 

 

 

 

댓글목록

등록된 댓글이 없습니다.

TECH 목록
번호 제목 작성자 작성일 조회수
130 Middleware 미들웨어 아이디로 검색 전체게시물 08-08 7
(오픈소스 활용-11) "ISTIO"이스티오 - 오픈소스 서비스 메시 플랫폼

카테고리 : Middleware

7 0
작성자 : 미들웨어 22/08/08
129 Middleware 미들웨어 아이디로 검색 전체게시물 07-25 48
(오픈소스 활용-10) GC 분석을 빠르고 간편하게 할 수 있는 GCeasy 소개 합니다

카테고리 : Middleware

48 0
작성자 : 미들웨어 22/07/25
128 ETC Leesangwoo 아이디로 검색 전체게시물 07-22 25
[ mssql ] Centos 8 에서 mssql 설치

카테고리 : ETC

25 0
작성자 : Leesangwoo 22/07/22
127 Middleware 미들웨어 아이디로 검색 전체게시물 07-06 71
(오픈소스 활용-9) Jenkins 활용 방법 추가 정리 (Docker 활용, Tomcat 설치없이 기동, 에러로그등)

카테고리 : Middleware

71 0
작성자 : 미들웨어 22/07/06
126 OS LeeHyongDong 아이디로 검색 전체게시물 07-01 146
[Linux] RHEL 9.0 변경 사항

카테고리 : OS

146 0
작성자 : LeeHyongDong 22/07/01
125 ETC Leesangwoo 아이디로 검색 전체게시물 06-30 76
[ Postgresql ] Postgresql 설치 및 구성

카테고리 : ETC

76 0
작성자 : Leesangwoo 22/06/30
124 ETC Leesangwoo 아이디로 검색 전체게시물 06-29 65
[ MariaDB ] MariaDB InnoDB buffer_pool 설정 및 사용량 확인

카테고리 : ETC

65 0
작성자 : Leesangwoo 22/06/29
123 Middleware 미들웨어 아이디로 검색 전체게시물 06-22 99
(오픈소스 활용-8) Flask 2장 - Flask 구성 및 실행 방법

카테고리 : Middleware

99 0
작성자 : 미들웨어 22/06/22
122 OS LeeHyongDong 아이디로 검색 전체게시물 06-17 210
[Linux] RHEL 8 loopback 인터페이스 IP 설정

카테고리 : OS

210 0
작성자 : LeeHyongDong 22/06/17
121 Middleware 미들웨어 아이디로 검색 전체게시물 06-08 211
(오픈소스 활용-7) Flask 1장 - Flask 설치 및 python (2.7 -> 3.6) 업그레이드 방법

카테고리 : Middleware

211 0
작성자 : 미들웨어 22/06/08
Total 130건
게시물 검색

주식회사 클럭스| 대표 : 이찬호| 사업자등록번호 : 107-87-27655
주소 : 서울특별시 영등포구 국회대로 800, 여의도파라곤
E-mail : sales@chlux.co.kr
Copyright © 클럭스 www.chlux.co.kr All rights reserved.
상단으로Top