RousselTMLEARNING

Article · Thanos : de la découverte à l'expertise

Déployer Thanos sur Kubernetes

1. Secret de stockage objet #

Partagé par sidecar, store et compactor.

Création #

cat > objstore.yml <<'EOF'
type: S3
config:
  bucket: thanos-prod
  endpoint: s3.eu-west-3.amazonaws.com
  region: eu-west-3
  access_key: AKIA...
  secret_key: ...
EOF
kubectl create namespace monitoring
kubectl -n monitoring create secret generic thanos-objstore --from-file=objstore.yml
Erreur Courante : Ne versionnez jamais ce fichier : utilisez External Secrets, Sealed Secrets ou des rôles IAM liés au ServiceAccount (IRSA) pour éviter les clés statiques.

2. Sidecar avec kube-prometheus-stack #

Quelques lignes de values.

values.yaml #

Thanos dans Kubernetes
Le sidecar est injecté dans le pod Prometheus par l'Operator.
# values-thanos.yaml
prometheus:
  thanosService:
    enabled: true
  thanosServiceMonitor:
    enabled: true
  prometheusSpec:
    replicas: 2
    replicaExternalLabelName: replica
    externalLabels: { cluster: prod-eu }
    retention: 2d
    disableCompaction: true
    thanos:
      objectStorageConfig:
        existingSecret: { name: thanos-objstore, key: objstore.yml }
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm upgrade --install monitoring prometheus-community/kube-prometheus-stack -n monitoring -f values-thanos.yaml
kubectl -n monitoring get pods -l app.kubernetes.io/name=prometheus
kubectl -n monitoring logs prometheus-monitoring-kube-prometheus-prometheus-0 -c thanos-sidecar | tail

3. Query, Store et Compactor avec Helm #

Chart Bitnami.

values-thanos-components.yaml #

# helm repo add bitnami https://charts.bitnami.com/bitnami
objstoreConfig: |-
  type: S3
  config:
    bucket: thanos-prod
    endpoint: s3.eu-west-3.amazonaws.com
    region: eu-west-3

query:
  enabled: true
  replicaLabel: [replica]
  dnsDiscovery:
    sidecarsService: monitoring-kube-prometheus-thanos-discovery
    sidecarsNamespace: monitoring
queryFrontend: { enabled: true }
storegateway:
  enabled: true
  persistence: { enabled: true, size: 20Gi }
compactor:
  enabled: true
  retentionResolutionRaw: 30d
  retentionResolution5m: 180d
  retentionResolution1h: 2y
  persistence: { enabled: true, size: 50Gi }
helm upgrade --install thanos bitnami/thanos -n monitoring -f values-thanos-components.yaml
kubectl -n monitoring get pods -l app.kubernetes.io/instance=thanos
kubectl -n monitoring port-forward svc/thanos-query-frontend 9090:9090      # http://localhost:9090
kubectl -n monitoring port-forward svc/thanos-query 10902:9090 && curl -s localhost:10902/api/v1/stores | jq '.data | keys'

4. Grafana et vérifications #

Brancher l'ensemble.

Datasource et contrôles #

# Source de données Grafana : type Prometheus, URL du Query Frontend
- name: Thanos
  type: prometheus
  url: http://thanos-query-frontend.monitoring.svc:9090
  jsonData: { timeInterval: 15s, prometheusType: Thanos }
# Les deux réplicas sont-ils vus et dédupliqués ?
count(up{job="kubelet"}) by (cluster)
# Le compactor est-il sain ?
thanos_compact_halted == 0
Bonne Pratique : Fixez des requests/limits mémoire sur le Store Gateway et le Compactor : ils consomment beaucoup lors des gros téléchargements de blocs.

📄 Déployer Thanos sur Kubernetes (kube-prometheus-stack, Helm et Operator) →

Mon suivi

  • ⏱ Durée estimée : ≈ 11 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

💬 Questions sur cette leçon

Aucune question pour l'instant : soyez le premier à demander de l'aide ou à partager votre configuration.

Poser une question sur cette leçon →

Articles recommandés

Bonnes pratiques Thanos : architecture, stockage, requêtes et exploitation

Bonnes pratiques Thanos : adopter les composants progressivement, labels externes, objstore, comp...

Thanos Sidecar : accoler Thanos à Prometheus et téléverser vers le stockage objet

Mettre en place Thanos Sidecar : réglages Prometheus (external labels, blocs de 2 h), configurati...

Prometheus dans le monde Kubernetes (Operator, ServiceMonitor, kube-prometheus-stack)

Superviser Kubernetes avec Prometheus : service discovery, kube-prometheus-stack, Prometheus Oper...

Thanos, Grafana Mimir ou VictoriaMetrics : quel stockage long terme pour Prometheus ?

Comparatif détaillé de trois solutions de stockage long terme pour Prometheus : architecture, sto...

Thanos : étendre Prometheus (haute disponibilité, vue globale et rétention longue)

Comprendre pourquoi et comment utiliser Thanos : limites de Prometheus, composants (Sidecar, Quer...

Prometheus sur Kubernetes et l'interface web de Prometheus

Déployer Prometheus sur Kubernetes avec kube-prometheus-stack (Prometheus Operator, ServiceMonito...

Exploiter Thanos : supervision, performances, dépannage et alternatives

Bonnes pratiques d'exploitation Thanos : métriques et alertes clés, mixin, caches, limites, erreu...

Thanos Receive : ingérer du remote write et gérer le multi-tenant

Utiliser Thanos Receive : mode push avec remote write, hashring, réplication, multi-tenancy, conf...

OpenTelemetry sur Kubernetes : Operator, auto-instrumentation et Collector

Déployer OpenTelemetry sur Kubernetes : modes de déploiement du Collector (DaemonSet, Deployment,...

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !