❖ Any Kubernetes 환경에서 프로메테우스 설치하는 방법
https://themapisto.tistory.com/44?category=950753
✅ Helm을 통한 고가용성을 고려한 Prometheus Stack 설치
- Helm 저장소 추가
# helm repo add <저장소> https://{{ 다운로드 받을 helm chart}}
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
- 설치
# 모니터링
kubectl create ns monitoring
watch kubectl get pod,pvc,svc,ingress -n monitoring
# 사용 리전의 인증서 ARN 확인
CERT_ARN=`aws acm list-certificates --query 'CertificateSummaryList[].CertificateArn[]' --output text`
echo "alb.ingress.kubernetes.io/certificate-arn: $CERT_ARN"
# 설치
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
# 파라미터 파일 생성
cat <<EOT > ~/monitor-values.yaml
alertmanager:
ingress:
enabled: true
ingressClassName: alb
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]'
alb.ingress.kubernetes.io/certificate-arn: $CERT_ARN
alb.ingress.kubernetes.io/success-codes: 200-399
alb.ingress.kubernetes.io/group.name: "monitoring"
hosts:
- alertmanager.$CLUSTER_NAME
paths:
- /*
grafana:
defaultDashboardsTimezone: Asia/Seoul
adminPassword: prom-operator
ingress:
enabled: true
ingressClassName: alb
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]'
alb.ingress.kubernetes.io/certificate-arn: $CERT_ARN
alb.ingress.kubernetes.io/success-codes: 200-399
alb.ingress.kubernetes.io/group.name: "monitoring"
hosts:
- grafana.$CLUSTER_NAME
paths:
- /*
prometheus:
ingress:
enabled: true
ingressClassName: alb
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]'
alb.ingress.kubernetes.io/certificate-arn: $CERT_ARN
alb.ingress.kubernetes.io/success-codes: 200-399
alb.ingress.kubernetes.io/group.name: "monitoring"
hosts:
- prometheus.$CLUSTER_NAME
paths:
- /*
prometheusSpec:
serviceMonitorSelectorNilUsesHelmValues: false
retention: 5d
retentionSize: "10GiB"
EOT
# 배포
helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack --version 45.0.0 -f monitor-values.yaml --namespace monitoring
# 확인
## alertmanager-0 : 사전에 정의한 정책 기반(예: 노드 다운, 파드 Pending 등)으로 시스템 경고 메시지를 생성 후 경보 채널(슬랙 등)로 전송
## grafana : 프로메테우스는 메트릭 정보를 저장하는 용도로 사용하며, 그라파나로 시각화 처리
## prometheus-0 : 모니터링 대상이 되는 파드는 ‘exporter’라는 별도의 사이드카 형식의 파드에서 모니터링 메트릭을 노출, pull 방식으로 가져와 내부의 시계열 데이터베이스에 저장
## node-exporter : 노드익스포터는 물리 노드에 대한 자원 사용량(네트워크, 스토리지 등 전체) 정보를 메트릭 형태로 변경하여 노출
## operator : 시스템 경고 메시지 정책(prometheus rule), 애플리케이션 모니터링 대상 추가 등의 작업을 편리하게 할수 있게 CRD 지원
## kube-state-metrics : 쿠버네티스의 클러스터의 상태(kube-state)를 메트릭으로 변환하는 파드
helm list -n monitoring
kubectl get pod,pvc,svc,ingress -n monitoring
kubectl get-all -n monitoring
kubectl get prometheus,alertmanager -n monitoring
kubectl get prometheusrule -n monitoring
kubectl get servicemonitors -n monitoring
kubectl krew install df-pv && kubectl df-pv
프로메테우스
https://themapisto.tistory.com/55
프로메테우스 설치 후에는 이것저것 뽑고 싶은 데이터를 뽑아보면 좋다.
이를 기반으로 그라파나를 구성해야 할것이다.
그라파나
그라파나(Grafana)는 시각화 및 대시보드 도구로, 여러 데이터 소스에서 가져온 데이터를 사용자에게 시각적으로 표현해준다. 다양한 데이터 소스를 지원하며, 그래프, 표, 알림 등 다양한 방식으로 데이터를 표현할 수 있다. 그라파나는 사용자 친화적인 인터페이스와 다양한 주요 기능을 제공한다.
---------[주요 기능]---------
- 다양한 데이터 소스 연동: 그라파나는 여러 데이터 소스와 연동하여 데이터를 가져올 수 있다.
예를 들어, 프로메테우스, 그래파이트, 인플럭스DB 등의 데이터 소스를 지원한다.
- 유연한 대시보드 구성: 그라파나를 사용하면 사용자가 원하는 대시보드를 유연하게 구성할 수 있다.
그래프, 표, 알림, 템플릿 등을 사용하여 데이터를 시각화하고 원하는 형태로 표현할 수 있다.
- 시각화 기능: 그라파나는 다양한 시각화 옵션을 제공하여 데이터를 직관적으로 이해할 수 있게 도와준다.
그래프, 게이지, 히트맵 등 다양한 시각화 형식을 지원한다.
- 대시보드 공유 및 협업: 그라파나에서는 대시보드를 다른 사용자와 공유하고 협업할 수 있다.
대시보드를 공유 링크로 전달하거나 팀원과 함께 대시보드를 편집할 수 있다.
- 경고 및 알림 기능: 그라파나는 데이터에 기반한 경고 및 알림 기능을 제공한다.
사용자가 설정한 조건에 따라 경고를 생성하고, 이를 이메일, 메신저 등으로 알림으로 받을 수 있다.
- 템플릿 기능: 그라파나에서는 템플릿 기능을 제공하여 대시보드를 유연하게 구성할 수 있다.
템플릿을 사용하여 동일한 형식의 여러 대시보드를 쉽게 생성하고 관리할 수 있다.
[**Kubernetes / Views / Global**] Dashboard → New → Import → 15757 입력 후 Load ⇒
데이터소스(Prometheus 선택) 후 Import 클릭
[**1 Kubernetes All-in-one Cluster Monitoring KR**] Dashboard → New → Import →
13770 or 17900 입력 후 Load ⇒ 데이터소스(Prometheus 선택) 후 Import 클릭
[**Node Exporter Full**] Dashboard → New → Import → 1860 입력 후 Load ⇒
데이터소스(Prometheus 선택) 후 Import 클릭
[****Node Exporter for Prometheus Dashboard based on 11074] 15172**
kube-state-metrics-v2 가져와보자 : Dashboard ID copied! (13332) 클릭 - 링크
[kube-state-metrics-v2] Dashboard → New → Import → 13332 입력 후 Load ⇒
데이터소스(Prometheus 선택) 후 Import 클릭
[Amazon EKS] **AWS CNI Metrics 16032
- 굉장히 간단하게 Grafana의 기본 대쉬보드를 사용할수 있다.
이렇게 간단하게 helm을 사용해서 Prometheus 스택을 설치해봤다.
EKS 물론 다양한 k8s 세트에서 사용가능 하기 때문에 편리하게 설치해서 사용할수 있다.
'컨테이너 > Prometheus' 카테고리의 다른 글
[프로메테우스](4) CPU / 메모리 사용률 계산하기 (0) | 2020.12.29 |
---|---|
[프로메테우스] (3) CAdvisor란? (0) | 2020.12.16 |
[프로메테우스] (2) 쿠버네티스 모니터링 : "프로메테우스" (0) | 2020.12.16 |
[프로메테우스] (1) 프로메테우스 설치 (0) | 2020.12.11 |