모니터링/prometheus

[ prometheus ] 설치

김붕어87 2023. 2. 23. 16:47
반응형
개요
Prometheus은 EKS Infra 메트릭 수집 모니터링 툴이다.
Grafana은 수집한 메트릭 지표를 그래프화해주는 툴이다.

prometheus은 쿠버네티스에서 가장 많이 사용하는 오픈소스 모니터링 툴이다.
CNCF 제단이며, kubernetes, docker 컨테이너를 모니터링에 특화되어있다.

 

설치 메뉴얼 : https://github.com/prometheus-operator/kube-prometheus

 

1. 프로메테우스 설치 

- Source 파일 : https://github.com/tingtomkim/devops/tree/main/monitoring/prometheus

mkdir prometheus
cd prometheus

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm fetch prometheus-community/kube-prometheus-stack

tar xvfz kube-prometheus-stack-43.3.0.tgz
mv kube-prometheus-stack/ prometheus

helm install prometheus . -f values.yaml -n monitor

 

  • 설치 오류시
[ 오류 내용 ]
Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: error validating "": error validating data: ValidationError(Prometheus.spec): unknown field "hostNetwork" in com.coreos.monitoring.v1.Prometheus.spec

[ 원인 ]
이전에 설치된 프로메테우스와 버전이 달라서 발생하는 문제
기존에 설치된 프로메테우스 crd 삭제
kubectl delete crd prometheuses.monitoring.coreos.com prometheusrules.monitoring.coreos.com

 

2. ingress 설정

- source 파일 : https://github.com/tingtomkim/devops/tree/main/monitoring/prometheus/ingress

vi ingress-grafana-monitoring-alb-internal.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig":
      { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
    alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:ap-southeast-1:xxx:certificate/xxx,arn:aws:acm:ap-southeast-1:xxx:certificate/xxx
    alb.ingress.kubernetes.io/group.name: grafana-monitoring-alb-in
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
    alb.ingress.kubernetes.io/load-balancer-name: grafana-monitoring-alb-in
    alb.ingress.kubernetes.io/scheme: internal
    alb.ingress.kubernetes.io/ssl-redirect: "443"
    alb.ingress.kubernetes.io/target-type: ip
    kubernetes.io/ingress.class: alb
  name: grafana-monitoring-alb-in
  namespace: monitor
spec:
  rules:
  - host: grafana.xxx.com
    http:
      paths:
      - backend:
          service:
            name: prometheus-grafana
            port:
              number: 80
        path: /*
        pathType: ImplementationSpecific
  - host: prometheus.xxx.com
    http:
      paths:
      - backend:
          service:
            name: prometheus-operated
            port:
              number: 9090
        path: /*
        pathType: ImplementationSpecific

 

 

 

3. PVC 설정

  • PVC를 설정하지 않으면 pod Restart 발생하면 모든 데이터가 날라갑니다.
  • PVC 설정이 필요한 component
    • Prometheus : 메트릭 수집된 데이터가 모두 날라간다. pod restart 이전 데이터를 볼 수 없다.
    • Alertmanager : Slience 설정이 모두 날라간다.
    • Grafana : 데쉬보드, 알람 설정 등 모두 날라간다.

 

  • prometheus + Alertmanager pvc 설정
vi values-service-prod.yaml

############ Prometheus ##############
# PVC Setting
prometheus:
  enabled: true
  prometheusSpec:
    storageSpec:
      volumeClaimTemplate:
        #metadata:
        #name: Prometheus-kube-pvc
        spec:
          accessModes: ["ReadWriteOnce"]
          resources:
            requests:
              storage: 50Gi

alertmanager:
  alertmanagerSpec:
    storage:
      volumeClaimTemplate:
        spec:
    #     storageClassName: gluster
         accessModes: ["ReadWriteOnce"]
         resources:
           requests:
             storage: 50Gi

 

  • Grafana PVC 설정
cd prometheus/charts/grafana/
vi values.yaml

persistence:
  type: pvc
  enabled: true
  # storageClassName: default
  accessModes:
    - ReadWriteOnce
  size: 20Gi
  # annotations: {}
  finalizers:
    - kubernetes.io/pvc-protection

 

 

4. grafana 데쉬보드 접속

  • ingrass 설정된 도메인 접속 : grafana.xxx.com
  • ID : admin
  • PW : prom-operator
  • 패스워드 확인 명령어
kubectl get secret prometheus-grafana  -oyaml

 

 

5. prometheus 데쉬보드 접속

  • ingrass 설정된 도메인 접속 : promethues.xxx.com

 

 

반응형

'모니터링 > prometheus' 카테고리의 다른 글

[ Prometheus ] exporter 종류  (0) 2023.03.16
[ Prometheus ] Nginx Log exporter  (0) 2023.03.16
[ prometheus ] Nginx exporter  (0) 2023.03.16
[ prometheus ] node exporter  (0) 2023.02.23
[ prometheus ] component 구성  (0) 2023.02.23