Skip to content

Instantly share code, notes, and snippets.

@hkboujrida
Last active December 12, 2025 14:12
Show Gist options
  • Select an option

  • Save hkboujrida/b7858223842f72aa8d0e95c64f42900c to your computer and use it in GitHub Desktop.

Select an option

Save hkboujrida/b7858223842f72aa8d0e95c64f42900c to your computer and use it in GitHub Desktop.
# Mimir Compactor - Paramètres Helm Chart
## Introduction
Le **compactor** fusionne et optimise les blocs TSDB stockés dans l'object storage pour réduire les coûts et améliorer les performances de requêtes.
---
## Paramètres de déploiement Kubernetes
| Paramètre | Valeur défaut | Description | Recommandation production |
|-----------|---------------|-------------|---------------------------|
| `compactor.replicas` | `1` | Nombre d'instances du compactor | 2-3 pour haute disponibilité |
| `compactor.resources.requests.cpu` | `100m` | CPU minimum garanti | 200m-500m |
| `compactor.resources.requests.memory` | `512Mi` | Mémoire minimale garantie | 1Gi-2Gi |
| `compactor.resources.limits.cpu` | `1` | Plafond CPU | 2-4 cores |
| `compactor.resources.limits.memory` | `2Gi` | Plafond mémoire | 4Gi-8Gi |
---
## Paramètres du PersistentVolume
| Paramètre | Valeur défaut | Description | Recommandation production |
|-----------|---------------|-------------|---------------------------|
| `compactor.persistentVolume.enabled` | `false` | Active le stockage persistant local pour le travail de compaction | Toujours `true` |
| `compactor.persistentVolume.size` | `20Gi` | Taille du volume (règle : 3x le plus gros bloc) | 50-100Gi |
| `compactor.persistentVolume.storageClass` | `""` | Classe de stockage Kubernetes | SSD (`managed-premium`, `fast`) |
---
## Paramètres de compaction (extraArgs)
| Paramètre | Valeur défaut | Description | Recommandation production |
|-----------|---------------|-------------|---------------------------|
| `compactor.compaction-interval` | `1h` | Intervalle entre chaque cycle de scan/compaction | 30m-1h |
| `compactor.compaction-concurrency` | `1` | Nombre de tenants compactés en parallèle par instance | 1-2 |
| `compactor.blocks-retention-period` | `0` (désactivé) | Durée de rétention. Format : `30d`, `90d`, `1y` | Selon besoins métier |
| `compactor.deletion-delay` | `12h` | Délai avant suppression effective des blocs marqués | 12-24h |
| `compactor.sharding-enabled` | `false` | Active le partitionnement des tenants via hash ring | `true` si multi-réplicas |
| `compactor.ring.store` | `memberlist` | Backend du hash ring : `memberlist`, `consul`, `etcd` | `memberlist` |
---
## Paramètres du sharding ring
| Paramètre | Valeur défaut | Description | Recommandation production |
|-----------|---------------|-------------|---------------------------|
| `compactor.sharding_ring.kvstore.store` | `memberlist` | Backend du ring de coordination | `memberlist` |
| `compactor.sharding_ring.wait_stability_min_duration` | `1m` | Attente avant prise en charge après changement de topologie | 1m-2m |
---
## Paramètres de stratégie de compaction
| Paramètre | Valeur défaut | Description | Recommandation production |
|-----------|---------------|-------------|---------------------------|
| `compactor.data_dir` | `/data` | Répertoire local de travail | `/data` |
| `compactor.block_ranges` | `[2h, 12h, 24h]` | Paliers de compaction temporels | `[2h, 12h, 24h]` |
| `compactor.split_and_merge_shards` | `0` | Shards pour diviser les gros blocs (0 = désactivé) | 0 sauf gros tenants |
| `compactor.split_groups` | `1` | Groupes traités en parallèle en mode split-and-merge | 1-2 |
| `compactor.cleanup_interval` | `15m` | Fréquence de nettoyage des blocs partiels/expirés | 15m |
| `compactor.max_compaction_time` | `1h` | Durée max d'une compaction avant timeout | 1h-2h |
---
## Paramètres d'affinité
| Paramètre | Valeur exemple | Description | Recommandation production |
|-----------|----------------|-------------|---------------------------|
| `compactor.affinity.podAntiAffinity` | `preferredDuringScheduling...` | Règle de placement des pods | Activer pour HA |
| `podAntiAffinity.weight` | `100` | Priorité de la règle (1-100) | 100 |
| `podAntiAffinity.topologyKey` | `kubernetes.io/hostname` | Évite plusieurs compactors sur le même nœud | `kubernetes.io/hostname` |
---
## Paramètres de limites par tenant
| Paramètre | Valeur défaut | Description | Recommandation production |
|-----------|---------------|-------------|---------------------------|
| `limits.compactor_blocks_retention_period` | `0` | Rétention globale ou par tenant via `runtime_config` | Selon SLA |
---
## Résumé des impacts
| Catégorie | Paramètres clés | Impact |
|-----------|-----------------|--------|
| **Performance** | `compaction-concurrency`, `block_ranges`, `resources` | Vitesse de compaction |
| **Coût stockage** | `blocks-retention-period`, `deletion-delay` | Volume conservé |
| **Haute disponibilité** | `replicas`, `sharding-enabled`, `podAntiAffinity` | Résilience |
| **Sécurité données** | `deletion-delay`, `cleanup_interval` | Protection pertes |
| **Scaling** | `sharding-enabled`, `split_and_merge_shards` | Capacité multi-tenant |
---
## Métriques à surveiller
| Métrique | Description | Seuil d'alerte |
|----------|-------------|----------------|
| `cortex_compactor_runs_completed_total` | Cycles de compaction terminés | Doit augmenter |
| `cortex_compactor_runs_failed_total` | Cycles échoués | > 0 = investiguer |
| `cortex_compactor_block_cleanup_failures_total` | Échecs de nettoyage | > 0 = investiguer |
| `cortex_compactor_blocks_marked_for_deletion_total` | Blocs marqués pour suppression | Informatif |
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment