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.

CodaServiziFunzione principale
defaultsidekiq_masterJob vari.
reportssidekiq_masterGenerazione delle esportazioni e dei report PDF.
serverssidekiq, sidekiq_masterCalcolo delle vulnerabilità degli asset.
default:NODOsidekiq_nodeEsecuzione delle discovery e delle analisi degli asset.
web-scanner:NODOsidekiq_nodeEsecuzione 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:

  1. Modificare il file /etc/cyberwatch/config.env e modificare o aggiungere la riga seguente:

    # Number of Sidekiq replicas to start.
    CBW_SIDEKIQ_REPLICAS=1
    

    Sostituire 1 con il numero di repliche desiderato.

  2. 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).

ServizioVariabileRisorse limitantiCode interessate
sidekiqSIDEKIQ_CONCURRENCYCPUservers
sidekiq_masterSIDEKIQ_CONCURRENCYCPUdefault, servers
sidekiq_masterREPORTS_CONCURRENCYRAMreports
sidekiq_nodeSIDEKIQ_NODE_CONCURRENCYRetedefault:NODO
sidekiq_nodeWEB_SCANNER_CONCURRENCYRete, CPU, RAMweb-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:

  1. Modificare il file /etc/cyberwatch/config.env e 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.

  1. Riavviare Cyberwatch secondo la procedura standard:

    sudo cyberwatch restart
    

Configurazione per Kubernetes

Per modificare questo valore in un ambiente Kubernetes, seguire la procedura seguente:

  1. Modificare il file values.yml e aggiungere le righe seguenti:

    containerScanner:
      replicaCount: N
    

    dove la variabile N deve 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).

  2. Applicare le modifiche secondo la procedura standard di distribuzione Kubernetes.