Education*
Devops
Architecture
F/B End
B.Chain
Basic
Others
CLOSE
Search For:
Search
BY TAGS
linux
HTTP
golang
flutter
java
fintech
개발환경
kubernetes
network
Docker
devops
database
tutorial
cli
분산시스템
www
블록체인
AWS
system admin
bigdata
보안
금융
msa
mysql
redis
Linux command
dns
javascript
CICD
VPC
FILESYSTEM
S3
NGINX
TCP/IP
ZOOKEEPER
NOSQL
IAC
CLOUD
TERRAFORM
logging
IT용어
Kafka
docker-compose
Dart
Minikube와 함께하는 Kubernetes Study 8 - Prometheus와 Grafana를 이용한 Kubernetes 모니터링
Recommanded
Free
YOUTUBE Lecture:
<% selectedImage[1] %>
yundream
2023-12-12
2023-12-12
3944
[Kubernetes](https://www.joinc.co.kr/w/kubernetes_minikube_index) 클러스터의 운영에서 가장 중요한 것은 현재의 상태를 모니터링 하는 것이다. 여기에서는 Prometheus와 Grafana를 사용해서 클러스터를 모니터링하는 방법을 다룰 것이다. 문서의 내용은 아래의 환경에서 테스트 했다. * 운영체제: Ubuntu Linux 23.10 * Minikuber version: v1.20.0 * Helm 3 ### Prometheus 소개 Prometheus는 오픈소스 모니터링 솔류션이다. 2016년 5월 9일 **CNCF(Cloud Native Computing Foundation)**에 이큐베이팅되고 2018년 **Graduated** 되면서 특히 클라우드 환경에서의 채택이 늘고 있다. Kubernetes 환경에서는 기본 모니터링 솔류션이라고 보면 된다. Prometheus의 특징은 아래와 같다. 1. 강력한 질의어: PromQL이라고 하는 질의어를 이용해서 데이터를 효과적으로 조회할 수 있다. 2. 시계열 데이터 수집: HTTP를 통해 노출되는 엔드포인트에서 메트릭 데이터를 주기적으로 수집할 수 있다. 3. 알림: Rule 기반의 경고 시스템을 제공하여 특정 조건이나 임계값을 초과하는 경우 알림을 생성할 수 있다. 4. 확장성: 여러 서버로 클러스터를 구성해서 대규모 환경에도 사용 할 수 있다. 5. 인터페이스 및 통합성: Prometheus는 다양한 인터페이스와 플러그인을 제공하며 **Grafana**를 이용해서 시각화 및 대시보드를 생성할 수 있다. 6. 커뮤니티: 오픈소스 솔류션이며, 활발하게 활동하는 커뮤니티에 의해 계속 발전하고 있다. ### Grafana 소개 Grafana는 모니터링 및 통계 정보를 보여주는 오픈소스 플랫폼으로, **시계열 데이터**를 시각화하고 분석하기 위해서 사용한다. Grafana는 MySQL, PostgreSQL, InfluxDB와 같은 데이터베이스, Prometheus, Graphite, ElasticSearch와 같은 다양한 모니터링 시스템의 데이터를 읽어서 시각화 할 수 있다. 이 문서에서는 Prometheus가 데이터 소스이다. ![Grafana](https://docs.google.com/drawings/d/e/2PACX-1vQGpJp9Lm2XBpnB34o5JOCde5ITS8Q2tMoKI4rmNYYQKIAzmY0KIgWbh-Nr5M22nY9s_OmcVp2f1kNk/pub?w=995&h=396) ### Minikube 구성 Minikube를 설치하지 않았다면 [Minikube 와 함께하는 Kubernetes Study 1 - Minikube 설치](https://www.joinc.co.kr/w/man/12/kubernetes/minikube)를 참고해서 설치한다. 잦은 테스트로 minikube 클러스터가 지저분하다면 [minikube 클러스터를 삭제](https://www.joinc.co.kr/w/minikube_delete) 하고 새로 시작하자. 준비를 끝냈다면 minikube 클러스터를 실행한다. ``` $ minikube start ? Ubuntu 23.10 의 minikube v1.29.0 ? minikube 1.32.0 이 사용가능합니다! 다음 경로에서 다운받으세요: https://github.com/kubernetes/minikube/releases/tag/v1.32.0 ? 해당 알림을 비활성화하려면 다음 명령어를 실행하세요. 'minikube config set WantUpdateNotification false' ``` ### Prometheus 설치 및 접속 먼저 Helm 저장소를 추가한다. ```shell $ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts ``` prometheus-server를 **NodePort**로 expose 한다. ```shell $ kubectl expose service prometheus-server --type=NodePort --target-port=9090 --name=prometheus-server-np ``` prometheus 서비스 상태를 확인해 보자. ```shell $ kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3d22h prometheus-alertmanager ClusterIP 10.98.55.92 <none> 9093/TCP 25m prometheus-alertmanager-headless ClusterIP None <none> 9093/TCP 25m prometheus-kube-state-metrics ClusterIP 10.102.93.181 <none> 8080/TCP 25m prometheus-prometheus-node-exporter ClusterIP 10.104.77.46 <none> 9100/TCP 25m prometheus-prometheus-pushgateway ClusterIP 10.111.245.106 <none> 9091/TCP 25m prometheus-server ClusterIP 10.110.182.0 <none> 80/TCP 25m prometheus-server-np NodePort 10.97.180.182 <none> 80:30417/TCP 3m36s ``` service url를 확인하고 웹 브라우저로 접근해보자. ``` $ minikube service prometheus-server-np --url http://192.168.49.2:30417 ``` ![Prometheus board](https://docs.google.com/drawings/d/e/2PACX-1vTZlWblDeMJPZryXYdwOEsZpzXGaBoS6ozRkDN-JtDowDfbkZCLm9_YW1hDKsZVsGtMiaUTrJmJEw1r/pub?w=930&h=370) ### Grafana 설치 및 접근 Helm 저장소를 추가한다. ``` helm repo add grafana https://grafana.github.io/helm-charts ``` Grafana 차트를 설치한다. ``` helm install grafana grafana/grafana ``` NodePort 타입으로 Grafana 서비스를 expose 한다. ``` kubectl expose service grafana --type=NodePort --target-port=3000 --name=grafana-np ``` Grafana admin 페이지에 접근하기 위한 비밀번호를 확인한다. ``` kubectl get secret --namespace default grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo ``` Grafana 서비스의 URL을 확인하자. ``` minikube service grafana-np --url ``` 확인된 URL에 접근하면 아래와 같이 로그인 페이지가 뜬다. ![Grafana Login](https://docs.google.com/drawings/d/e/2PACX-1vTKXLpvzju6g8V47YOJQUOJWRder6hqWxVtnsV4cu8qY69EVJHpnRhWVf2iFogCM2fmjJlMo4fdqA_8/pub?w=750&h=694) admin 계정으로 로그인하자. ![](https://docs.google.com/drawings/d/e/2PACX-1vSbRNY7gaKXZFhuqX09nLXsHN8YinTFg6Eaqu3m4ytN0XmjX3_hU6kI0oOlferovjPeRTR384PgfXnX/pub?w=934&h=681) 이제 데이터 소스(Data source)로 Prometheus를 설정하면 된다. ![](https://docs.google.com/drawings/d/e/2PACX-1vT6ugt4cXb5FDjgVq235lNNKjndZRDvzpnvUXu8E6dEpVEE8sNZIsa4LQpNPRjYPoy-nJZoLcHEeX2a/pub?w=934&h=684) **메뉴 > Connections > Data Sources** 를 선택한다. ![Grafana](https://docs.google.com/drawings/d/e/2PACX-1vQm6M0lsPUuWZMHLVWhh4ELQt7I5-f1Z21_msf6XWtgKs0cl5S0lAWSxT3IZnDiXA-qGbQkqdNmasLh/pub?w=935&h=267) **Add data soure**를 선택한다. ![Prometheus](https://docs.google.com/drawings/d/e/2PACX-1vRYHjVoo_B3ezkTRF4v39ijXmj4aAMoeriyC-Yj32brKEiNMpLzI55pgcJJAoMQP4JskX465uJc6CtZ/pub?w=933&h=449) Data source로 **Prometheus**를 선택한다. ![Prometheus data sources](https://docs.google.com/drawings/d/e/2PACX-1vTB8eSKGi1rve0PtEJUqntWH31TxSTeb9GNZwsYx7nsAWNA0NhEn_2FIYcNwcVXsyWj2AGP-OZS4zuC/pub?w=813&h=695) * Name: 데이터 소스의 이름 * Prometheus server URL: 모니터링 메트릭을 가져올 HTTP 엔드포인트 **Save & test**를 클릭해서 현재 데이터 소스를 저장하고 테스트 할 수 있다. ![Prometheus data sources test](https://docs.google.com/drawings/d/e/2PACX-1vQfGkyqyzjQ22eigaggUd6BQj20cWmgwrdDmE016Mvic_YoLd2NKY4DFAjgi55rWX34BlLFpRdqzROt/pub?w=890&h=365) 이제 **Dashboard**에서 kubernetes 모니터링 정보를 확인 할 수 있다. ![Prometheus and grafana](https://docs.google.com/drawings/d/e/2PACX-1vQ6g03_fsVb7oHWVF9ifMSNCMX7zAFN7RE7NVOstZqjvhpO4tiU8O0O4eIRe-mqGDW64UmgeoKxDpUW/pub?w=932&h=635) ### 정리 이렇게 해서 Kubernetes에 Prometheus를 설치하는 방법을 살펴봤다. 다음 번에는 애플리케이션을 모니터링 하는 방법을 살펴보도록 하겠다.**
Recent Posts
Vertex Gemini 기반 AI 에이전트 개발 02. 생성 AI에 대해서
Vertex Gemini 기반 AI 에이전트 개발 01. 소개
Vertex Gemini 기반 AI 에이전트 개발-소개
생성 AI 모델 Flux.1 설치 및 사용
GPT를 이용한 Reranker 테스트
5분만에 만들어보는 Streamlit 챗봇
Let's encrypt로 SSL 인증서 관리하기
Upscayl을 이용한 이미지 업스케일링
스테이블 디퓨전 설치 및 사용해보기
Elasticsearch 설치
Archive Posts
Tags
cloud
devops
docker
kubernetes
Copyrights © -
Joinc
, All Rights Reserved.
Inherited From -
Yundream
Rebranded By -
Joonphil
Recent Posts
Archive Posts
Tags