RousselTMLEARNING

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

Bonnes pratiques Thanos

1. Concevoir l'architecture #

Progressivité et identité.

Principes #

Bonnes pratiques Thanos
Chaque composant ajoute de la valeur mais aussi de l'exploitation : adoptez-les au besoin.
  • Démarrez par Sidecar + Query + Store Gateway + Compactor ; ajoutez Ruler, Receive ou Query Frontend quand un besoin l'exige.
  • external_labels uniques et immuables (cluster, replica) : les changer revient à créer de nouvelles séries.
  • Un bucket par environnement, avec versioning et chiffrement activés.
thanos tools bucket ls --objstore.config-file=bucket.yml
thanos tools bucket inspect --objstore.config-file=bucket.yml | head
curl -s localhost:10902/api/v1/stores | jq '.data | keys'

2. Stockage et compaction #

Un compactor, des rétentions réfléchies.

Réglages #

thanos compact --data-dir=/var/thanos/compact --objstore.config-file=/etc/thanos/bucket.yml --wait \
  --retention.resolution-raw=30d --retention.resolution-5m=180d --retention.resolution-1h=730d \
  --compact.concurrency=2 --delete-delay=48h --deduplication.replica-label=replica
  • Une seule instance de compactor par bucket (verrou logique).
  • Rétention brute courte (30 j), 5 min et 1 h plus longues : le downsampling réduit coût et temps de requête.
  • Dimensionnez le disque temporaire du compactor : il doit contenir les plus gros blocs en cours de compaction.
Erreur Courante : Ne supprimez jamais de blocs à la main dans le bucket : utilisez thanos tools bucket mark et laissez le compactor appliquer le --delete-delay.

3. Requêtes rapides #

Query Frontend, caches et limites.

Configuration #

thanos query-frontend --http-address=0.0.0.0:9090 --query-frontend.downstream-url=http://query:10902 \
  --query-range.split-interval=24h --query-range.response-cache-config-file=/etc/thanos/cache.yml
thanos query --query.auto-downsampling --query.max-concurrent=20 --query.timeout=2m --store.response-timeout=30s
thanos store --index-cache.config-file=/etc/thanos/index-cache.yml --store.limits.request-series=500000
Bonne Pratique : Utilisez des recording rules pour les requêtes de dashboard lourdes : elles évitent de scanner des mois de données brutes à chaque affichage.

4. Sécurité, supervision et revue #

Prêt pour la production.

Alertes essentielles #

thanos_compact_halted == 1
increase(thanos_shipper_uploads_failed_total[1h]) > 0
thanos_sidecar_prometheus_up == 0
count(thanos_store_nodes_grpc_connections) < 3
rate(grpc_server_handled_total{grpc_code!="OK", job=~"thanos-.*"}[5m]) > 0.05
Question de revueRéponse attendue
Un seul compactor écrit-il dans le bucket ?Oui
Les external_labels sont-ils uniques ?Oui, cluster + replica
Les composants communiquent-ils en TLS ?Oui (flags --grpc-server-tls-*)
La restauration a-t-elle été testée ?Oui : lecture d'un bloc ancien via Store
Les droits sur le bucket sont-ils minimaux ?Lecture/écriture limitées au préfixe de l'environnement

Schéma de référence et vérification rapide #

Visualiser le principe et le contrôler en ligne de commande.

Schéma de référence #

Haute disponibilité Thanos
Le compactor déduplique aussi les blocs dans le bucket.
count(up{job="prometheus"}) by (cluster)       # 1 avec déduplication
thanos tools bucket inspect --objstore.config-file=bucket.yml | head

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

Mon suivi

  • ⏱ Durée estimée : ≈ 5 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

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...

Thanos Store Gateway et Compactor : historique, downsampling et rétention

Servir l'historique avec le Store Gateway et optimiser le stockage avec le Compactor : compaction...

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...

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

Installer Thanos sur Kubernetes : sidecar via kube-prometheus-stack, secret objstore, Bitnami/kub...

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

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

Thanos Query et Query Frontend : une vue globale et dédupliquée

Configurer Thanos Query : endpoints StoreAPI, déduplication par replica label, partial response, ...

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...

Thanos Ruler : règles et alertes sur la vue globale

Évaluer des règles d'enregistrement et d'alerte sur l'ensemble des clusters avec Thanos Ruler : c...

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 !