본문 바로가기
카테고리 없음

[k8s] kube-prometheus #2 - 설정 변경

by ★용호★ 2020. 11. 18.
이 포스팅에서는 kube-prometheus를 사용하여 Prometheus가 이미 설치되었다고 전제하고 있습니다. 설치가 아직 안된경우 이전 포스트인 [k8s] kube-prometheus #1 - 설치를 참고하시기 바랍니다.

 

kube-prometheus는 CRD(Custom Resource Definition)를 사용하여 구성되기 때문에 직접 Deployment를 수정하거나 Prometheus 설정을 변경하기가 어렵다. CRD에 정의되어 있는 spec에 따라 설정을 변경해주어야 하는데 가이드 문서에 세세하게 나와있지는 않기 때문에 직접 CRD 스크립트를 보면서 필요한 설정을 찾아 설정해주어야 한다. 

 

CRD 리소스 확인하기

1. 아래 명령을 실행하여 현재 생성되어 있는 CRD 목록을 확인한다.

kubectl get crd -n monitoring
NAME                                    CREATED AT
alertmanagers.monitoring.coreos.com     2020-03-22T14:35:34Z
eniconfigs.crd.k8s.amazonaws.com        2019-10-17T07:22:23Z
podmonitors.monitoring.coreos.com       2020-03-22T14:35:35Z
prometheuses.monitoring.coreos.com      2020-03-22T14:35:35Z
prometheusrules.monitoring.coreos.com   2020-03-22T14:35:35Z
servicemonitors.monitoring.coreos.com   2020-03-22T14:35:35Z
thanosrulers.monitoring.coreos.com      2020-03-22T14:35:35Z

 

2. 만약 alertmanagers Pod를 수정하려고 한다면 아래 명령으로 수정할 CRD 리소스 확인한다.

kubectl get alertmanagers.monitoring.coreos.com -n monitoring
NAME   VERSION   REPLICAS   AGE
 main   v0.20.0   3          10m

 

3. Git에서 clone 받은 kube-prometheus의 manifests 디렉토리 하위에서 매니페스트를 수정하여 apply 할 수도 있고 아래 명령을 사용하여 현재 생성되어 있는 리소스를 수정할 수도 있다.

kubectl edit alertmanagers.monitoring.coreos.com main -n monitoring

 

 

Scrape Config 설정 추가하기

scraped_config는 Prometheus 컨테이너 내 prometheus.yaml 파일에 정의되며 이는 CRD를 통해 기본 생성 된다. 메트릭 수집을 위한 설정을 추가하려면 CRD 규칙에 맞게 Kubernetes manifest 파일을 정의해야한다.

 

1. 먼저 아래와 같이 추가할 Scraped Config 파일을 작성한다.

- job_name: "prometheus"
  static_configs:
  - targets: ["localhost:9090"]

 

2. 작성한 파일을 Kubernetes Secret으로 생성한다.

kubectl create secret generic additional-scrape-configs --from-file=prometheus-additional.yaml

 

3. kube-prometheus/manifests/prometheus-prometheus.yaml 파일을 수정하여 additionalScrapeConfigs에 추가합니다.

apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
  name: prometheus
  labels:
    prometheus: prometheus
spec:
  replicas: 2
  retention: 15d
  serviceAccountName: prometheus
  serviceMonitorSelector:
    matchLabels:
      team: frontend
  additionalScrapeConfigs:
    name: additional-scrape-configs
    key: prometheus-additional.yaml
...
  • name : 위에서 생성한 Secret 이름
  • key : Secret에 등록된 key 이름 (--from-file로 지정한 대상 파일명)

4. 다음 명령으로 수정된 내용을 적용한다.

kubectl apply -f kube-prometheus/manifests/prometheus-prometheus.yaml

 

5. 적용되었는지 확인해본다.

kubectl exec -it prometheus-k8s-0 -n monitoring -- sh
vi /etc/prometheus/config_out/prometheus.env.yaml
  • yaml 파일 내 추가한 job name이 존재하는지 확인

댓글