RousselTMLEARNING

Observabilité

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

Bonnes pratiques d'exploitation Thanos : métriques et alertes clés, mixin, caches, limites, erreurs fréquentes et comparaison avec Mimir, Cortex et VictoriaMetrics.

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.

Pour aller plus loin