Monitoring

Prometheus 가 수집한 메트릭 장기간 보관하기 — s3, Thanos

황동리 2025. 11. 7. 10:15
반응형

Prometheus로 수집한 데이터를 s3로 전송시키려면 Thanos 라는 사이드카를 사용해야 합니다.


저는 kube-prometheus-stack Helm 차트를 사용해서 설치를 했기 때문에,


Thanos 사이드카를 사용하기 위해 values.yaml 파일에서 내용을 수정해주도록 하겠습니다.


사전 준비

  1. 먼저 prometheus와 연결 시킬 pv가 필요하기 때문에 저는 EKS 클러스터에 ebs-csi-driver를 추가하여 스토리지 클래스를 생성해주었습니다.
  2. Prometheus가 수집한 데이터를 저장하기 위한 s3 버킷 생성

설정

  • Thanos 사이드카를 포함하도록 values.yaml 설정 변경
prometheus: 
  prometheusSpec: 
    disableCompaction: true 
    storageSpec: 
      volumeClaimTemplate: 
        spec: 
          storageClassName: <생성하신 스토리지 클래스 이름 넣으면 됩니다.>
          accessModes: [ "ReadWriteOnce" ] 
          resources: 
            requests: 
              storage:  1Gi 
    thanos: 
      image: quay.io/thanos/thanos:v0.30.0
      objectStorageConfig: 
        existingSecret: 
          name:  thanos-objstore-config 
          key:  thanos.yaml 

  thanosService:
    enabled: true
  • values.yaml 설정을 변경 했으니, helm upgrade 명령을 사용해서 업데이트 해줍니다.
helm upgrade --install prometheus  --create-namespace -n prometheus prometheus-community/kube-prometheus-stack --values values.yaml
  • thanos 사이드 카가 사용할 s3 설정 파일을 secret으로 변환 시켜 줍니다.
# vi thanos-storage-config.yaml
---
type: s3
config:
  bucket: thanos-store #S3 Bucket Name
  endpoint: s3.<region>.amazonaws.com #S3 Regional endpoint
  access_key: <aws-account-id>
  secret_key: <aws-account-secret>
---

# 앞서 생성한 yaml 파일을 토대로 secret 생성
kubectl -n prometheus create secret generic thanos-objstore-config --from-file=thanos.yaml=thanos-storage-config.yaml

이제 시간이 지나고 s3에 가보면 아래 이미지 처럼 데이터가 생긴 것을 확인 할 수 있습니다.

반응형