1. Thanos Query #
Le point d'entrée PromQL.
Lancer Query #
Thanos Query expose l'API HTTP de Prometheus : Grafana s'y connecte comme à un Prometheus classique. À chaque requête, il interroge en parallèle tous ses endpoints StoreAPI (sidecars, Store Gateway, Receive, autres Query) et fusionne les résultats.
thanos query \
--http-address=0.0.0.0:10902 \
--grpc-address=0.0.0.0:10903 \
--endpoint=sidecar-a:10901 \
--endpoint=sidecar-b:10901 \
--endpoint=store:10901 \
--query.replica-label=replica \
--query.auto-downsampling# Docker Compose (extrait)
query:
image: quay.io/thanos/thanos:latest
command:
- query
- --http-address=0.0.0.0:10902
- --endpoint=sidecar:10901
- --endpoint=store:10901
- --query.replica-label=replica
ports: ["10902:10902"]2. La déduplication #
Haute disponibilité sans doublons.
Replica label #
replica est retiré pour comparer les séries.Thanos Query traite comme équivalentes les séries qui ne diffèrent que par le --query.replica-label. Si l'une des deux a un trou (redémarrage, panne), l'autre le comble : c'est ce qui donne la haute disponibilité des données.
# Dans l'interface Query : activer/désactiver "Use Deduplication" et comparer
count(up{job="node"}) # avec dédup : 1 série par instance
# sans dédup : 2 séries (replica=A et replica=B)
# Plusieurs labels de réplicas (par ex. Prometheus + Operator)
thanos query --query.replica-label=replica --query.replica-label=prometheus_replica3. Exploiter l'interface et l'API #
Stores, requêtes et diagnostic.
Interface web et API #
# http://localhost:10902 -> Graph, Stores (état de chaque endpoint), Alerts, Config
# API compatible Prometheus
curl -s 'http://localhost:10902/api/v1/query?query=up' | jq '.data.result | length'
curl -s 'http://localhost:10902/api/v1/stores' | jq '.data | keys'
# Réponse partielle autorisée si un store est indisponible (par défaut) ou refusée
curl -s 'http://localhost:10902/api/v1/query?query=up&partial_response=false'
# Choisir la résolution (downsampling) : max_source_resolution en ms
curl -s 'http://localhost:10902/api/v1/query_range?query=up&start=...&end=...&step=3600&max_source_resolution=3600000'Erreur Courante : Une partial response peut masquer l'absence d'un cluster entier : surveillez la page Stores et alertez sur thanos_store_nodes_grpc_connections.4. Query Frontend #
Cache et parallélisation.
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.max-retries-per-request=5 \
--query-frontend.log-queries-longer-than=5s \
--query-range.response-cache-config-file=/etc/thanos/cache.yml# cache.yml
type: IN-MEMORY
config:
max_size: 512MB
max_size_items: 0
validity: 10mBonne Pratique : Faites pointer Grafana vers le Query Frontend (et non directement vers Query) : les requêtes de plage sont découpées par jour, exécutées en parallèle et mises en cache.
Mon 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 : étendre Prometheus (haute disponibilité, vue globale et rétention longue)
Comprendre pourquoi et comment utiliser Thanos : limites de Prometheus, composants (Sidecar, Quer...
Bonnes pratiques Thanos : architecture, stockage, requêtes et exploitation
Bonnes pratiques Thanos : adopter les composants progressivement, labels externes, objstore, comp...
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...
Mimir : le chemin de lecture (query-frontend, querier, store-gateway et caches)
Comment Mimir répond à une requête PromQL : découpage et cache du query-frontend, file d'attente,...
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...
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, Grafana Mimir ou VictoriaMetrics : quel stockage long terme pour Prometheus ?
Comparatif détaillé de trois solutions de stockage long terme pour Prometheus : architecture, sto...
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...