1. Préparer Prometheus #
Les prérequis indispensables.
Réglages obligatoires #
- Labels externes uniques par Prometheus (
cluster,replica) : indispensables pour la déduplication et l'identification. - Compaction locale désactivée :
--storage.tsdb.min-block-duration=2het--storage.tsdb.max-block-duration=2h(le compactor Thanos s'en charge). - Rétention locale courte (quelques jours) : l'historique est dans l'objet.
- API d'administration et lifecycle pour que le sidecar recharge la configuration.
# prometheus.yml
global:
scrape_interval: 15s
external_labels:
cluster: prod-eu
replica: A
scrape_configs:
- job_name: prometheus
static_configs: [{ targets: ["localhost:9090"] }]
- job_name: node
static_configs: [{ targets: ["node-exporter:9100"] }]prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/prometheus \
--storage.tsdb.min-block-duration=2h \
--storage.tsdb.max-block-duration=2h \
--storage.tsdb.retention.time=2d \
--web.enable-lifecycle --web.enable-admin-apiErreur Courante : Ne laissez jamais deux Prometheus avec exactement les mêmesexternal_labelsen dehors dereplica: Thanos ne pourrait plus distinguer les sources et dupliquerait ou fusionnerait mal les blocs.
2. Lancer le sidecar #
Avec son fichier de stockage objet.
Configuration et commande #
# bucket.yml (stockage objet partagé par tous les composants Thanos)
type: S3
config:
bucket: thanos
endpoint: minio:9000
access_key: minio
secret_key: minio123
insecure: truethanos sidecar \
--tsdb.path=/prometheus \
--prometheus.url=http://localhost:9090 \
--objstore.config-file=/etc/thanos/bucket.yml \
--grpc-address=0.0.0.0:10901 \
--http-address=0.0.0.0:109023. Stack Docker Compose complète #
Prometheus, sidecar et MinIO.
docker-compose.yml #
services:
minio:
image: quay.io/minio/minio
command: server /data --console-address ":9001"
environment: { MINIO_ROOT_USER: minio, MINIO_ROOT_PASSWORD: minio123 }
ports: ["9000:9000", "9001:9001"]
minio-init:
image: quay.io/minio/mc
depends_on: [minio]
entrypoint: ["sh", "-c", "sleep 5 && mc alias set l http://minio:9000 minio minio123 && mc mb -p l/thanos"]
prometheus:
image: prom/prometheus:latest
user: root
command:
- --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.path=/prometheus
- --storage.tsdb.min-block-duration=2h
- --storage.tsdb.max-block-duration=2h
- --web.enable-lifecycle
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prom-data:/prometheus
ports: ["9090:9090"]
sidecar:
image: quay.io/thanos/thanos:latest
command:
- sidecar
- --tsdb.path=/prometheus
- --prometheus.url=http://prometheus:9090
- --objstore.config-file=/etc/thanos/bucket.yml
- --grpc-address=0.0.0.0:10901
- --http-address=0.0.0.0:10902
volumes:
- ./bucket.yml:/etc/thanos/bucket.yml
- prom-data:/prometheus
depends_on: [prometheus, minio]
volumes: { prom-data: {} }4. Vérifier #
Le bloc est-il arrivé dans le bucket ?
Contrôles #
# Attendre ~2 h (ou forcer un bloc : curl -X POST localhost:9090/api/v1/admin/tsdb/snapshot)
docker compose run --rm --entrypoint sh quay.io/minio/mc -c "mc alias set l http://minio:9000 minio minio123 && mc ls l/thanos/"
thanos tools bucket ls --objstore.config-file=bucket.yml
thanos tools bucket inspect --objstore.config-file=bucket.yml
curl -s localhost:10902/metrics | grep -E 'thanos_shipper_uploads_total|thanos_sidecar_prometheus_up'Bonne Pratique : Sithanos_shipper_uploads_totalreste à 0, vérifiez d'abord que la compaction locale est bien désactivée et que le sidecar voit le même répertoire/prometheusque Prometheus.
Mon suivi
Connectez-vous pour suivre votre progression et prendre des notes. Se connecter
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...