1. Concevoir l'architecture #
Progressivité et identité.
Principes #
- 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 : utilisezthanos tools bucket market 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=500000Bonne 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 revue | Ré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 #
count(up{job="prometheus"}) by (cluster) # 1 avec déduplication
thanos tools bucket inspect --objstore.config-file=bucket.yml | headMon suivi
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.
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...