1. Secret de stockage objet #
Partagé par sidecar, store et compactor.
Création #
cat > objstore.yml <<'EOF'
type: S3
config:
bucket: thanos-prod
endpoint: s3.eu-west-3.amazonaws.com
region: eu-west-3
access_key: AKIA...
secret_key: ...
EOF
kubectl create namespace monitoring
kubectl -n monitoring create secret generic thanos-objstore --from-file=objstore.ymlErreur Courante : Ne versionnez jamais ce fichier : utilisez External Secrets, Sealed Secrets ou des rôles IAM liés au ServiceAccount (IRSA) pour éviter les clés statiques.
2. Sidecar avec kube-prometheus-stack #
Quelques lignes de values.
values.yaml #
# values-thanos.yaml
prometheus:
thanosService:
enabled: true
thanosServiceMonitor:
enabled: true
prometheusSpec:
replicas: 2
replicaExternalLabelName: replica
externalLabels: { cluster: prod-eu }
retention: 2d
disableCompaction: true
thanos:
objectStorageConfig:
existingSecret: { name: thanos-objstore, key: objstore.yml }helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm upgrade --install monitoring prometheus-community/kube-prometheus-stack -n monitoring -f values-thanos.yaml
kubectl -n monitoring get pods -l app.kubernetes.io/name=prometheus
kubectl -n monitoring logs prometheus-monitoring-kube-prometheus-prometheus-0 -c thanos-sidecar | tail3. Query, Store et Compactor avec Helm #
Chart Bitnami.
values-thanos-components.yaml #
# helm repo add bitnami https://charts.bitnami.com/bitnami
objstoreConfig: |-
type: S3
config:
bucket: thanos-prod
endpoint: s3.eu-west-3.amazonaws.com
region: eu-west-3
query:
enabled: true
replicaLabel: [replica]
dnsDiscovery:
sidecarsService: monitoring-kube-prometheus-thanos-discovery
sidecarsNamespace: monitoring
queryFrontend: { enabled: true }
storegateway:
enabled: true
persistence: { enabled: true, size: 20Gi }
compactor:
enabled: true
retentionResolutionRaw: 30d
retentionResolution5m: 180d
retentionResolution1h: 2y
persistence: { enabled: true, size: 50Gi }helm upgrade --install thanos bitnami/thanos -n monitoring -f values-thanos-components.yaml
kubectl -n monitoring get pods -l app.kubernetes.io/instance=thanos
kubectl -n monitoring port-forward svc/thanos-query-frontend 9090:9090 # http://localhost:9090
kubectl -n monitoring port-forward svc/thanos-query 10902:9090 && curl -s localhost:10902/api/v1/stores | jq '.data | keys'4. Grafana et vérifications #
Brancher l'ensemble.
Datasource et contrôles #
# Source de données Grafana : type Prometheus, URL du Query Frontend
- name: Thanos
type: prometheus
url: http://thanos-query-frontend.monitoring.svc:9090
jsonData: { timeInterval: 15s, prometheusType: Thanos }# Les deux réplicas sont-ils vus et dédupliqués ?
count(up{job="kubelet"}) by (cluster)
# Le compactor est-il sain ?
thanos_compact_halted == 0Bonne Pratique : Fixez des requests/limits mémoire sur le Store Gateway et le Compactor : ils consomment beaucoup lors des gros téléchargements de blocs.
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
Bonnes pratiques Thanos : architecture, stockage, requêtes et exploitation
Bonnes pratiques Thanos : adopter les composants progressivement, labels externes, objstore, comp...
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...
Prometheus dans le monde Kubernetes (Operator, ServiceMonitor, kube-prometheus-stack)
Superviser Kubernetes avec Prometheus : service discovery, kube-prometheus-stack, Prometheus Oper...
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 : étendre Prometheus (haute disponibilité, vue globale et rétention longue)
Comprendre pourquoi et comment utiliser Thanos : limites de Prometheus, composants (Sidecar, Quer...
Prometheus sur Kubernetes et l'interface web de Prometheus
Déployer Prometheus sur Kubernetes avec kube-prometheus-stack (Prometheus Operator, ServiceMonito...
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...
OpenTelemetry sur Kubernetes : Operator, auto-instrumentation et Collector
Déployer OpenTelemetry sur Kubernetes : modes de déploiement du Collector (DaemonSet, Deployment,...