Ssoon
[4주차] CHAPTER-18 그라파나(Grafana) 본문
이정훈님이 집필하신 "24단계 실습으로 정복하는 쿠버네티스" 로 진행하는 CloudNet@ 팀의 PKOS 4주차 정리입니다.
🧿 Grafana ?
◾ 오픈 소스 데이터 시각화 및 대시 보드 도구
🧿 Google Golden Signals
◾ 서비스를 모니터링하고 분석하기 위한 네 가지 핵심 성능 지표입니다. 이러한 지표는 구글이 클라우드 서비스를 제공할 때 사용하던 것으로, 이제는 많은 기업에서 이를 참고하여 서비스 모니터링에 사용합니다
◾ Latency(지연 시간): 사용자의 요청에 대한 응답 시간입니다. 서비스의 처리 시간이 얼마나 걸리는지 나타내며, 이를 줄이는 것이 중요합니다.
◾ Traffic(트래픽): 서비스에 대한 요청 수입니다. 서비스의 트래픽이 증가하면 처리할 요청의 수가 증가하므로 이를 모니터링하여 서버의 부하를 파악해야 합니다.
◾ Errors(오류): 요청 중 실패한 요청의 비율입니다. 오류의 원인을 파악하여 이를 개선하는 것이 중요합니다.
◾ Saturation(포화): 사용 가능한 자원 중 사용 중인 자원의 비율입니다. 시스템이 포화 상태가 되면 대기 시간이 증가하고 오류가 발생할 가능성이 있으므로, 이를 모니터링하여 자원 부족 상황을 예방해야 합니다.
✅ Prometheus stack 에 포함된 Grafana Dashboard
✔ Helm prometheus-stack 을 설치하면 Helm 차트에 다양한 Dashboard가 포함되어 있습니다.
🧿 Prometheus 설치하면서 Grafana 서비스 타입으로 LoadBlancer를 지정하였습니다.
🧿 EXTERNAL-IP 로 접속합니다.
1. Search dashboard
◾ dashboard 를 검색합니다.
2. Create
◾ 새 dashboard를 만들거나 외부 dashboard를 가져옵니다.(import)
3. Dashboard
◾ dashboard 전체목록, 플레이리스트등을 확인합니다.
4. Explore
◾ PromQL를 이용해 metric 정보를 그래프 형태로 탐색합니다.
5. Alerting
◾ 에러 발생 시 경고를 전달합니다. prometheus환경에서는 alertmanager를 사용합니다.
6. Configuration
◾ Grafana 설정 내역을 확인합니다. Prometheus 와 Loki 데이터 소스를 설정합니다.
7. Server Admin
◾ 사용자, 조직, 플러그인 등을 설정합니다.
🧿 Grafana는 데이터 자체를 저장하지 않습니다. 데이터를 Prometheus가 제공합니다.
🧿 Configuration -> Data sources -> Prometheus 클릭 : 현재 Prometheus 설정 확인
✔ HTTP URL -> Prometheus의 서비스 이름과 포트 번호입니다.
✔ 쿠버네티스 클러스터가 클러스터 내부에서 다른 Pod와 통신하려면 서비스 이름과 포트를 이용합니다.
🧿 Dashboard -> Browse
✔ 지원 사용량 - Cluster / Pod
◾ CPU, Mrmoey, Storage, Network 등 시스템 자원사용량
✔ 노드 자원 사용량
◾ 실제 물리적 Node의 자원 사용량을 확인
✔ 주요 애플리케이션 모니터링
◾ 쿠버네티스 control plane Node에서 실행 중인 Alertmanager, CoreDNS 등 주요 애블리케이션의 현황 확인
🧿 Compute Resources - Cluster
✔ Cluster 전반의 CPU, Memory, Network, Storage 자원 사용량을 한눈에 파악
🧿 Node Exporter - USE Method - Cluster
✔ USE (Utilization(사용량), Saturation(예비율), Error(에러)) - 모든 Node의 자원 사용량 정보 비교
✅ Grafana 공식 홈페이지의 템플릿 Dashboard 추가
✔ 전 세계의 사용자들이 사용하는 검증된 다양한 Dashboard를 가져올 수 있습니다.
https://grafana.com/grafana/dashboards/
🧿 Cluster 전반의 정보를 포함하는 "kube-state-metric" 을 검색하고 ID정보를 확인합니다.
🧿 2.Create -> import 를 선택하고 id값을 load합니다.
🧿 datasource 메뉴에서 "Prometheus"를 선택하고 import합니다.
🧿 dashboard를 확인할 수 있습니다.
✅ nginx 애플리케이션 모니터링 Dashboard 추가
✔ Helm 차트로 NGINX 설치 시 Prometheus Exporter 옵션을 추가해서 설치하면 자동으로 NGINX를 Prometheus 모니터링에 등록할 수 있습니다.
✔ 기존 애플리케이션 Pod에 Prometheus 모니터링을 추가하려면 Sidecar 방식을 사용합니다. -> NGINX Pod 내에 Prometheus용 exporter 컨테이너를 추가
🧿 NGINX 애플리케이션에 대한 Helm 설치을 합니다. https://artifacthub.io/packages/helm/bitnami/nginx
🧿 파라미터 파일 생성
metrics:
enabled: true
service:
port: 9113
serviceMonitor:
enabled: true
namespace: monitoring
interval: 10s
✔ metrics: enabled:true
◾ 기본설정은 비활성화
✔ service: port: 9113
◾ NGINX Prometheus Exporter 9113번 포트 사용, Prometheus 서버에서 9113번 포트를 사용해 NGINX Exporter와 통신
✔ serviceMonitor: enabled: true
◾ 서비스 모니터 방식을 이용해 NGINX 모니터링 대상 등록
✔ serviceMonitor: namespace: monitoring
◾ Prometheus 실행 중인 namspace 이름을 지정
🧿 ServiceMonitor
✔ Prometheus가 사용하는 CRD (Custom Resource Definition)
✔ Prometheus 설정을 변경하지 않고 ServiceMonitor 라는 별도의 리소스만 추가하여 새로운 모니터링 대상을 등록
✔ Immutable Infrastructure => 기존 서비스 안정성에 영향을 주지 않도록 별도의 리소스로 분리
🧿 NGINX 을 설치합니다.
🧿 NGINX Pod에 2개의 container가 생성 (nginx, metric)
🧿 Prometheus 와 통신하기 위한 metric 포트(9113)을 확인할 수 있습니다.
🧿 monitoring 네임스페이스에서 nginx ServiceMonitor로 확인할 수 있습니다.
🧿 Prometheus 웹서버에서 Status -> Target에서 nginx ServiceMonitor가 추가됩니다.
🧿 Metric 타입
✔ Counter :누적숫자
◾ 감소하지 않고 계속 증가하는 타입의 metric 정보
◾ 데이터가 계속 증가 -> 특정 시점의 데이터만으로 정확한 현황 파악 어려움 -> 시간대를 정해놓고 해당 시간대의 변화랼을 측정 -> 사용량 변화 추이를 알 수 있습니다.
🧿 rate(비율) 함수 사용 : 시간대의 시작점과 종점에서 특정한 값의 차이
✔ rete 함수를 사용하여 NGINX 요청량 변화를 확인
✔ guage : 현재숫자
🧿 guage 타입 metric에 1m등의 기간을 나태내는 쿼리를 사용하면 누적치(coiunter) 타입의 metric이 아니므로 오류가 발생합니다.
🧿 검색된 NGINX ID를 import합니다.
🧿 NGINX 웹서버 모니터링 대시보드가 생성됩니다.
🧿 Dashboard 편집기능
✔ More... -> copy
🧿 복사한 panel을 붙여넣습니다.
'Production Kubernetes Online Study' 카테고리의 다른 글
[4주차] CHAPTER-20 로키(Loki) (0) | 2023.03.31 |
---|---|
[4주차] CHAPTER-19 얼럿매니저(alertmanager) (0) | 2023.03.30 |
[4주차] CHAPTER-17 프로메테우스(Prometheus) (2) | 2023.03.28 |
[4주차] CHAPTER-16 쿠버네티스 모니터링 도구 (0) | 2023.03.27 |
[3주차] CHAPTER-15 ArgoCD 를 활용한 GitOps (0) | 2023.03.23 |