Configurare il numero di job paralleli eseguiti dall’applicazione
Questa procedura consente di modificare il numero di job asincroni eseguiti in parallelo dall’applicazione Cyberwatch.
Funzionamento delle code del software
L’elaborazione dei job dell’applicazione avviene in modo asincrono per garantire prestazioni migliori e la parallelizzazione dei job.
I job in attesa vengono inseriti in code diverse in base al tipo di job.
| Coda | Servizi | Funzione principale |
|---|---|---|
| default | sidekiq_master | Job vari. |
| reports | sidekiq_master | Generazione delle esportazioni e dei report PDF. |
| servers | sidekiq, sidekiq_master | Calcolo delle vulnerabilità degli asset. |
| default:NODO | sidekiq_node | Esecuzione delle discovery e delle analisi degli asset. |
| web-scanner:NODO | sidekiq_node | Esecuzione delle scansioni di applicazioni web. |
Alcune code dispongono di una variante express che serve ad accelerare l’elaborazione dei job prioritari. Condividono la stessa capacità di calcolo e non hanno una concorrenza propria, ad eccezione di reports-express, che ne riserva una parte.
Aggiunta di repliche Sidekiq
Per impostazione predefinita, Sidekiq utilizza una sola CPU per elaborare i job.
Nella maggior parte delle configurazioni, il valore predefinito del numero di job consente di utilizzare l’intera capacità di una CPU per l’elaborazione in parallelo di questi job.
In caso di latenza dell’applicazione dovuta a un’elaborazione troppo lenta dei job, il primo approccio consigliato consiste nel consentire a Sidekiq di utilizzare le due CPU del server Cyberwatch.
In un primo momento, ciò consentirà di raddoppiare il numero di job che possono essere eseguiti simultaneamente dallo scanner Cyberwatch.
Queste modifiche devono essere effettuate solo su raccomandazione di un ingegnere Cyberwatch.
A tal fine, seguire la procedura seguente:
Modificare il file
/etc/cyberwatch/config.enve modificare o aggiungere la riga seguente:# Number of Sidekiq replicas to start. CBW_SIDEKIQ_REPLICAS=1Sostituire
1con il numero di repliche desiderato.Riavviare Cyberwatch secondo la procedura standard:
sudo cyberwatch restart
Configurazione del numero di thread di esecuzione
Oltre a configurare il numero di processi Sidekiq tramite le repliche, è possibile aumentare la capacità di ciascuno configurandone il numero di thread di esecuzione (threads).
| Servizio | Variabile | Risorse limitanti | Code interessate |
|---|---|---|---|
| sidekiq | SIDEKIQ_CONCURRENCY | CPU | servers |
| sidekiq_master | SIDEKIQ_CONCURRENCY | CPU | default, servers |
| sidekiq_master | REPORTS_CONCURRENCY | RAM | reports |
| sidekiq_node | SIDEKIQ_NODE_CONCURRENCY | Rete | default:NODO |
| sidekiq_node | WEB_SCANNER_CONCURRENCY | Rete, CPU, RAM | web-scanner:NODO |
La concorrenza del servizio sidekiq può essere aumentata su qualsiasi nodo, contribuendo alla capacità di calcolo globale della coda servers. Le altre code sono specifiche di un nodo, pertanto la configurazione della concorrenza deve essere applicata su quel nodo per ottenere l’effetto desiderato.
Queste modifiche devono essere effettuate solo su raccomandazione di un ingegnere Cyberwatch.
Ad esempio, per configurare la variabile SIDEKIQ_CONCURRENCY del servizio sidekiq, modificare il file /etc/cyberwatch/configs-enabled/99-sidekiq-concurrency.yml come segue:
version: '3.7'
services:
sidekiq:
environment:
SIDEKIQ_CONCURRENCY: 4
Riavviare quindi l’istanza con sudo cyberwatch restart.
Allo stesso modo è possibile configurare le altre variabili degli altri servizi.
Configurazione del numero di scansioni di immagini Docker in parallelo
È possibile configurare il numero di scansioni di immagini Docker che possono essere eseguite in parallelo dall’applicazione Cyberwatch.
Per impostazione predefinita, se la variabile non è configurata, il valore è di 4 scansioni in parallelo.
La modifica di questo valore può avere un impatto significativo sulle prestazioni del sistema e sul consumo delle risorse. Si consiglia di modificare questo valore solo dopo aver consultato un ingegnere Cyberwatch.
Configurazione per Docker Swarm e Podman
Per modificare questo valore in un ambiente Docker Swarm o Podman, seguire la procedura seguente:
Modificare il file
/etc/cyberwatch/config.enve modificare o aggiungere la riga seguente:# Number of container-scanner replicas to start. CBW_CONTAINER_SCANNER_REPLICAS=1
Sostituire 1 con il numero di repliche desiderato.
Riavviare Cyberwatch secondo la procedura standard:
sudo cyberwatch restart
Configurazione per Kubernetes
Per modificare questo valore in un ambiente Kubernetes, seguire la procedura seguente:
Modificare il file
values.ymle aggiungere le righe seguenti:containerScanner: replicaCount: Ndove la variabile
Ndeve assumere il valore del numero di repliche desiderato per il container-scanner. Per impostazione predefinita, ogni replica può eseguire fino a 4 scansioni in parallelo.Si consiglia di avere i pod sullo stesso nodo, oppure un volume per container-scanner in
RWX (ReadWriteMany).Applicare le modifiche secondo la procedura standard di distribuzione Kubernetes.