RousselTMLEARNING

Observabilité

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

Bonnes pratiques Thanos : adopter les composants progressivement, labels externes, objstore, compactor unique, downsampling, caches, Query Frontend, sécurité, supervision et checklist de production.

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

Articles liés

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

Comprendre pourquoi et comment utiliser Thanos : limites de Prometheus, composants (Sidecar, Query, Store Gat…

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), configuration objstore,…

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

Configurer Thanos Query : endpoints StoreAPI, déduplication par replica label, partial response, interface we…

Pour aller plus loin

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 !