RousselTMLEARNING

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

Exploiter Thanos

1. Superviser Thanos #

Les signaux indispensables.

Métriques et alertes clés #

ComposantMétriqueAlerte si...
Sidecarthanos_shipper_uploads_failed_totalEn augmentation
Sidecarthanos_sidecar_prometheus_up= 0
Querythanos_store_nodes_grpc_connectionsMoins de stores qu'attendu
Querygrpc_server_handled_total{grpc_code!="OK"}Taux d'erreurs élevé
Storethanos_bucket_store_series_blocks_queriedTrès élevé (requêtes coûteuses)
Compactorthanos_compact_halted= 1
Compactorthanos_compact_todo_compactionsCroissant sans fin
Rulerprometheus_rule_evaluation_failures_total> 0
# Dashboards et alertes officiels
git clone https://github.com/thanos-io/thanos && cd thanos/mixin
jb install && make build

# Alertes minimales
- alert: ThanosCompactHalted
  expr: thanos_compact_halted == 1
  for: 5m
  labels: { severity: critical }
- alert: ThanosSidecarNoUpload
  expr: increase(thanos_shipper_uploads_total[6h]) == 0
  for: 30m
  labels: { severity: warning }

2. Performances #

Requêtes rapides sur de longues périodes.

Downsampling et caches #

Points lus selon la résolution
Avec --query.auto-downsampling, Query choisit la résolution adaptée au pas du graphe.
# Query : résolution automatique + limites de protection
thanos query --query.auto-downsampling --query.max-concurrent=20 --query.timeout=2m \
  --store.response-timeout=30s --query.default-evaluation-interval=1m

# Store : caches
thanos store --index-cache.config-file=index-cache.yml --store.caching-bucket.config-file=caching-bucket.yml

# index-cache.yml
type: MEMCACHED
config:
  addresses: [memcached:11211]
  max_async_buffer_size: 10000
Bonne Pratique : Utilisez des recording rules pour les requêtes de dashboard lourdes : le Ruler ou Prometheus les précalcule, ce qui évite de lire de gros volumes historiques à chaque affichage.

3. Dépannage #

Les erreurs fréquentes.

Tableau de diagnostic #

SymptômeCause probableAction
Pas de blocs dans le bucketCompaction locale active ou sidecar sans accès au TSDBVérifier les flags de blocs 2 h et le volume partagé
Séries dupliquées dans GrafanaReplica label non configuréAjouter --query.replica-label
« expanding series: context deadline exceeded »Requête trop largeRéduire la plage, utiliser le downsampling, augmenter les timeouts
Données manquantes sur une périodeStore Gateway pas à jour ou --min-time trop récentVérifier thanos_blocks_meta_synced
Compactor arrêté (halted)Blocs qui se chevauchent / corrompusthanos tools bucket verify --repair après analyse
Utilisation mémoire élevée du storeTrop de séries retournéesLimiter --store.limits.request-series et ajouter du cache
thanos tools bucket verify --objstore.config-file=bucket.yml --issues=overlapped_blocks,index_known_issues
curl -s localhost:10902/-/healthy; curl -s localhost:10902/-/ready
journalctl -u thanos-compact -n 100 --no-pager | grep -i error

4. Thanos face aux alternatives #

Choisir en connaissance de cause.

Comparatif #

SolutionModèlePoints fortsPoints d'attention
ThanosComposants autour de Prometheus (sidecar / receive)Adoption progressive, simple, communauté CNCFPlusieurs composants à opérer
Grafana MimirTSDB distribuée multi-tenant (remote write)Très grande échelle, performances, simplicité d'usageRemplace le stockage local, plus de ressources
CortexAncêtre de MimirÉprouvéMimir est son successeur recommandé
VictoriaMetricsTSDB indépendante compatible PromQLTrès économe en ressourcesÉcosystème et licences différents
Bonne Pratique : Thanos est idéal si vous avez déjà des Prometheus à conserver et voulez ajouter rétention, HA et vue globale sans tout migrer. Pour une plateforme multi-tenant à très grande échelle, évaluez Mimir.

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

Mon suivi

  • ⏱ Durée estimée : ≈ 6 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, Grafana Mimir ou VictoriaMetrics : quel stockage long terme pour Prometheus ?

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

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

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

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 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 Query et Query Frontend : une vue globale et dédupliquée

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

Déployer et exploiter Mimir sur Kubernetes

Installer Mimir avec le chart Helm mimir-distributed, dimensionner les composants, superviser Mim...

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

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

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

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 !