Skip to content

Profil de dimensionnement pour les installations pilotes

Profils de référence

Deux tailles d'hôte de référence pour cette version.

small-dev

Destiné à : le développement, les démonstrations, les POC mono-tenant.

RessourceValeur
CPU4 vCPU
RAM16 Go
Disque100 Go SSD
Tenants max1–2
Plan de contrôle SocTalk réservé~2 Go RAM, 1 vCPU
Budget par tenant~6–8 Go RAM, 1–1,5 vCPU

Les temps de démarrage sont plus lents ici ; le SLO <30 min to OSS stack healthy s'applique.

pilot-prod

Destiné à : un MSSP exécutant de vrais clients pilotes, 3–5 tenants.

RessourceValeur
CPU8 vCPU
RAM32 Go
Disque500 Go SSD
Tenants max3–5
Plan de contrôle SocTalk réservé~3 Go RAM, 1–2 vCPU
Budget par tenant~5–7 Go RAM, 1–1,5 vCPU

Les temps de démarrage relèvent du SLO <15 min to OSS stack healthy.

Empreinte par tenant (estimations)

Ce sont des valeurs de départ pour ResourceQuota et LimitRange dans le chart du tenant. La validation pré-version mesure les valeurs réelles ; celles-ci remplacent ces estimations dans les valeurs finales.

ComposantRequête RAMLimite RAMRequête CPULimite CPUDisque (PVC)
Wazuh manager512 Mo1 Go200 m500 m20 Go
Wazuh indexer (fork OpenSearch)2 Go (heap 1 Go)4 Go (heap 2 Go)500 m2000 m50 Go
Wazuh dashboard512 Mo1 Go100 m500 m
Filebeat128 Mo256 Mo50 m200 m
TheHive1 Go2 Go300 m1000 m
Cassandra (backend TheHive)2 Go4 Go500 m1500 m30 Go
Cortex768 Mo1,5 Go200 m800 m
Cortex ElasticSearch1 Go2 Go300 m1000 m20 Go
Adaptateur SocTalk128 Mo256 Mo50 m200 m
Total par tenant (limites)~8 Go en requête, ~16 Go en limite~2,2 vCPU en requête, ~7,7 vCPU en limite~120 Go

Note : les limites sont des plafonds de pointe ; l'usage soutenu est plus proche des requêtes. Exécuter 3 tenants sur un hôte 8 vCPU / 32 Go / 500 Go signifie :

  • RAM : ~24 Go de requêtes (tient), ~48 Go de limites (nécessite un réglage soigneux du surengagement).
  • CPU : ~6,6 vCPU de requêtes (tient avec le plan de contrôle), les pointes se partagent le total.
  • Disque : ~360 Go de PVC de tenants (tient avec une marge pour le plan de contrôle + la base de données SocTalk).

C'est pourquoi pilot-prod plafonne à 5 tenants ; au-delà de 5, les limites de mémoire commencent à se heurter à la capacité du nœud, même en tenant compte du surengagement.

Formule du nombre maximal de tenants par nœud

Approximation :

max_tenants = floor((node_total_RAM - control_plane_RAM - safety_margin) / per_tenant_RAM_request)
  • control_plane_RAM : 2 Go (small-dev) ou 3 Go (pilot-prod) pour SocTalk + Postgres + contrôleur d'ingress + Cilium + cert-manager.
  • safety_margin : 10 % de la RAM du nœud pour les pods système K8s, le CNI, le DNS, la supervision.
  • per_tenant_RAM_request : 8 Go de référence.

Pour un pilot-prod de 32 Go : floor((32 - 3 - 3.2) / 8) = floor(25.8 / 8) = 3 tenants garantis sans surengagement. Avec surengagement, 4–5 est sûr pour des volumes d'alertes typiques.

Facteurs de dimensionnement du disque

Le principal consommateur de disque est le Wazuh indexer (stocke les événements indexés). Le taux d'ingestion détermine la croissance :

Taux d'alertesTaille d'index quotidienne (approx.)Rétention 30 joursRétention 90 jours
10 alertes/sec en continu~5 Go/jour150 Go450 Go
1 alerte/sec en continu~500 Mo/jour15 Go45 Go
100 alertes/jour~10 Mo/jour300 Mo900 Mo

Les tailles de PVC de tenant dans le chart ont pour valeur par défaut 50 Go pour le Wazuh indexer ; les MSSP la surchargent par tenant pour les clients à fort volume.

La politique de rétention est par défaut de 30 jours de données chaudes dans l'indexer ; les données plus anciennes sont supprimées ou archivées (le tiering chaud→froid n'est pas implémenté ; une future version l'ajoutera).

Garde-fous de dimensionnement

Vérification pré-provisionnement

Lorsqu'un opérateur MSSP crée un nouveau tenant, le contrôleur SocTalk exécute un contrôle de cohérence :

available_RAM = node.allocatable.memory - sum(ns.resourceQuota.requests.memory for ns in existing_tenant_namespaces) - control_plane_reserve
if (new_tenant.resourceQuota.requests.memory > available_RAM):
    refuse with "insufficient cluster capacity for new tenant"
    or
    prompt MSSP: "this will overcommit; proceed? [y/N]"

Ce garde-fou est plus souple dans cette version (avertissement plutôt qu'échec bloquant) car les MSSP peuvent délibérément surengager pour les clients à faible usage.

Application du LimitRange par tenant

Chaque namespace de tenant possède un LimitRange :

yaml
apiVersion: v1
kind: LimitRange
metadata: { name: tenant-limits, namespace: tenant-acme }
spec:
  limits:
    - type: Container
      default:
        memory: "2Gi"
        cpu: "500m"
      defaultRequest:
        memory: "256Mi"
        cpu: "100m"
      max:
        memory: "6Gi"
        cpu: "2"

Empêche un pod accidentellement mal configuré de demander 30 Go et d'affamer le nœud.

Profils au-delà

Documentés mais non validés dans cette version :

ProfilCPURAMDisqueTenants max
mid-host16 vCPU64 Go1 To10–15
large-host32 vCPU128 Go2 To25–30
cluster multi-nœuds3 nœuds × large-50+ (une future installation multi-nœuds est recommandée à la place)

Recommandation pour les MSSP dépassant la capacité de pilot-prod :

  • : ajoutez un second hôte, exécutez une seconde installation SocTalk (le schéma le prend en charge, l'outillage est manuel).
  • une future version : automatisation multi-installations dans la couche Cloud.
  • une future version : K3s en cluster avec une planification appropriée entre les nœuds.

Plan de mesure (validation pré-version)

Le spike produit des chiffres réels pour remplacer les estimations du §2 :

  1. Déployez soctalk-tenant avec un tenant sur k3d (dev-harness).
  2. Mesure à vide : prenez un instantané kubectl top pod -n tenant-acme.
  3. Test de charge : injectez 10 alertes/sec pendant 10 minutes ; mesurez le pic.
  4. Arrêtez la charge ; mesurez ~5 minutes plus tard pour les chiffres « à chaud au repos ».
  5. Répétez avec trois tenants en parallèle pour observer les interférences.
  6. Mettez à jour les tableaux de ce document avec les valeurs mesurées.

Publié sous la licence Apache 2.0.