Skip to content

Profilo di sizing per le installazioni pilota

Profili di riferimento

Due dimensioni host di riferimento per questa release.

small-dev

Destinato a: sviluppo, demo, POC single-tenant.

RisorsaValore
CPU4 vCPU
RAM16 GB
Disco100 GB SSD
Tenant massimi1–2
Control plane SocTalk riservato~2 GB RAM, 1 vCPU
Budget per tenant~6–8 GB RAM, 1–1.5 vCPU

I tempi di avvio qui sono più lenti; si applica lo SLO <30 min to OSS stack healthy.

pilot-prod

Destinato a: MSSP che gestisce clienti pilota reali, 3–5 tenant.

RisorsaValore
CPU8 vCPU
RAM32 GB
Disco500 GB SSD
Tenant massimi3–5
Control plane SocTalk riservato~3 GB RAM, 1–2 vCPU
Budget per tenant~5–7 GB RAM, 1–1.5 vCPU

Tempi di avvio sullo SLO <15 min to OSS stack healthy.

Footprint per tenant (stime)

Questi sono i valori di partenza per ResourceQuota e LimitRange nel chart del tenant. La validazione pre-release misura i valori reali; i valori reali sostituiscono questi nei values finali.

ComponenteRichiesta RAMLimite RAMRichiesta CPULimite CPUDisco (PVC)
Wazuh manager512 MB1 GB200 m500 m20 GB
Wazuh indexer (fork di OpenSearch)2 GB (heap 1 GB)4 GB (heap 2 GB)500 m2000 m50 GB
Wazuh dashboard512 MB1 GB100 m500 m
Filebeat128 MB256 MB50 m200 m
TheHive1 GB2 GB300 m1000 m
Cassandra (backing di TheHive)2 GB4 GB500 m1500 m30 GB
Cortex768 MB1.5 GB200 m800 m
Cortex ElasticSearch1 GB2 GB300 m1000 m20 GB
Adapter SocTalk128 MB256 MB50 m200 m
Totale per tenant (limiti)~8 GB richiesta, ~16 GB limite~2.2 vCPU richiesta, ~7.7 vCPU limite~120 GB

Nota: i limiti sono soglie massime di burst; l'utilizzo sostenuto è più vicino alle richieste. Eseguire 3 tenant su un host da 8 vCPU / 32 GB / 500 GB significa:

  • RAM: ~24 GB di richieste (rientra), ~48 GB di limiti (richiede un'attenta messa a punto dell'overcommit).
  • CPU: ~6.6 vCPU di richieste (rientra con il control plane), i burst condividono il totale.
  • Disco: ~360 GB di PVC dei tenant (rientra con margine per il control plane + il DB di SocTalk).

Per questo pilot-prod si limita a 5 tenant; oltre i 5, i limiti di memoria iniziano a scontrarsi con la capacità del nodo anche tenendo conto dell'overcommit.

Formula dei tenant massimi per nodo

Approssimazione:

max_tenants = floor((node_total_RAM - control_plane_RAM - safety_margin) / per_tenant_RAM_request)
  • control_plane_RAM: 2 GB (small-dev) o 3 GB (pilot-prod) per SocTalk + Postgres + ingress controller + Cilium + cert-manager.
  • safety_margin: 10% della RAM del nodo per i pod di sistema K8s, CNI, DNS, monitoring.
  • per_tenant_RAM_request: 8 GB come baseline.

Per pilot-prod da 32 GB: floor((32 - 3 - 3.2) / 8) = floor(25.8 / 8) = 3 tenant garantiti senza overcommit. Con l'overcommit, 4–5 è sicuro per i volumi di alert tipici.

Fattori di sizing del disco

Il principale consumatore di disco è il Wazuh indexer (memorizza gli eventi indicizzati). Il tasso di ingest determina la crescita:

Tasso di alertDimensione indice giornaliera (indicativa)Retention 30 giorniRetention 90 giorni
10 alert/sec sostenuti~5 GB/giorno150 GB450 GB
1 alert/sec sostenuto~500 MB/giorno15 GB45 GB
100 alert/giorno~10 MB/giorno300 MB900 MB

Le dimensioni dei PVC dei tenant nel chart hanno come default 50 GB per il Wazuh indexer; gli MSSP le sovrascrivono per singolo tenant per i clienti ad alto volume.

La policy di retention ha come default 30 giorni di dati hot nell'indexer; i dati più vecchi vengono eliminati o archiviati (non implementa il tiering hot→cold; una release futura lo aggiungerà).

Gate di sizing

Controllo pre-provisioning

Quando l'operatore MSSP crea un nuovo tenant, il controller SocTalk esegue un controllo di sanità:

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]"

In questa release questo gate è più morbido (avviso anziché blocco netto) poiché gli MSSP possono voler intenzionalmente fare overcommit per clienti a basso utilizzo.

Applicazione del LimitRange per tenant

Ogni namespace di tenant ha 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"

Impedisce che un pod configurato in modo errato per errore richieda 30 GB affamando il nodo.

Profili oltre

Documentati ma non validati in questa release:

ProfiloCPURAMDiscoTenant massimi
mid-host16 vCPU64 GB1 TB10–15
large-host32 vCPU128 GB2 TB25–30
cluster multi-nodo3 nodi × large-50+ (si consiglia invece la multi-installazione di una release futura)

Raccomandazione per gli MSSP che superano la capacità di pilot-prod:

  • : aggiungere un secondo host, eseguire una seconda installazione di SocTalk (lo schema lo supporta, il tooling è manuale).
  • una release futura: automazione multi-installazione nel livello Cloud.
  • una release futura: K3s in cluster con scheduling corretto tra i nodi.

Piano di misurazione (validazione pre-release)

Lo spike produce numeri reali per sostituire le stime nella §2:

  1. Deploy di soctalk-tenant con un tenant su k3d (dev-harness).
  2. Misurazione a riposo: acquisire uno snapshot di kubectl top pod -n tenant-acme.
  3. Test di carico: iniettare 10 alert/sec per 10 minuti; misurare il picco.
  4. Interrompere il carico; misurare ~5 minuti dopo per i numeri "warm-idle".
  5. Ripetere con tre tenant in parallelo per osservare l'interferenza.
  6. Aggiornare le tabelle di questo documento con i valori misurati.

Rilasciato sotto la Licenza Apache 2.0.