RousselTMLEARNING

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

Thanos Query et Query Frontend

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 #

Déduplication par replica label
Le 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_replica

3. 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: 10m
Bonne 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.

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

Mon suivi

  • ⏱ Durée estimée : ≈ 9 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

✉️ Poser une question

Articles recommandés

Comprendre la notion de score

Le concept de score va permettre à Elasticsearch de classer vos documents par pertinence lors d u...

Comprendre Elastic Common Schema(ECS)

Comme toujours dans nos missions de conseil, nous recommandons aux entreprises d'uniformiser, de ...

Grail : Dynatrace Data Lakehouse

Désormais vous disposez dans Dynatrace (SaaS) d'un Data Lakehouse nommé Grail dont vous pouvez co...

C'est quoi l'observabilité

La capacité à connaître l'état interne d'un système à partir des données que cette dernière émet...

Les types de transactions dans les base de données

Cet article détaille les différences entre trois concepts essentiels dans l'exécution des instruc...

Différences entre Technologies et Services dans Dynatrace

Dans Dynatrace, les concepts de 'Technologie' et de 'Services' aident à organiser et surveiller l...

Dynatrace : Différences entre SQL Modifications, SQL Queries or Procedures, et SQL Transactions

Cet article détaille les différences entre trois concepts essentiels dans l'exécution des instruc...

Types de consommation de licence

Comprendre l'évolution de la facturation dans Dynatrace : la différence entre l'ancien modèle de ...

Les Types de Services Dynatrace : Comprendre et Optimiser Votre Surveillance Applicative

Découvrez les différents types de services que Dynatrace peut surveiller, leur rôle, et comment l...