Configurer le nombre de tâches parallèles effectuées par l’application

Cette procédure permet de modifier le nombre de tâches asynchrones exécutées en parallèle par l’application Cyberwatch.

Explication des files d’attente du logiciel

Le traitement des tâches de l’application se fait de manière asynchrone afin de permettre de meilleures performances et une parallélisation des tâches.

Les tâches en attente sont rangées dans différentes files d’attente selon le type de la tâche.

FileServicesFonction principale
defaultsidekiq_masterTâches diverses.
reportssidekiq_masterGénération des exports et rapports PDF.
serverssidekiq, sidekiq_masterCalcul des vulnérabilités des actifs.
default:NŒUDsidekiq_nodeExécution des découvertes et des analyses des actifs.
web-scanner:NŒUDsidekiq_nodeExécution des scans d’application web.

Certaines files ont une variante express servant à accélérer le traitement des tâches prioritaires. Elles partagent la même capacité de calcul et n’ont pas de concurrence propre, à l’exception de reports-express qui en réserve une part.

Ajout de replicas Sidekiq

Par défaut, Sidekiq n’utilisera qu’un seul CPU pour traiter les tâches.

La valeur par défaut du nombre de tâches permet dans la majorité des configurations d’utiliser la totalité d’un CPU pour le traitement en parallèle de ces tâches.

Dans le cas d’une latence de l’application liée à un traitement trop lent des tâches, la première approche recommandée est d’autoriser Sidekiq à utiliser les deux CPU du serveur Cyberwatch.

Cela permettra dans un premier temps de doubler le nombre de tâches pouvant être exécutées simultanément par le scanner Cyberwatch.

Ces modifications sont à faire uniquement suite à la recommandation d’un ingénieur Cyberwatch.

Pour ce faire, suivre la procédure ci-dessous :

  1. Modifier le fichier /etc/cyberwatch/config.env et éditer ou ajouter la ligne suivante :

    # Number of Sidekiq replicas to start.
    CBW_SIDEKIQ_REPLICAS=1
    

    Remplacer 1 par le nombre de replicas souhaité.

  2. Redémarrer Cyberwatch selon la procédure standard :

    sudo cyberwatch restart
    

Configuration du nombre de fils d’exécution

En plus de configurer le nombre de processus Sidekiq via les replicas, il est possible d’augmenter la capacité de chacun en configurant leur nombre de fils d’exécution (threads).

ServiceVariableRessources limitantesFiles affectées
sidekiqSIDEKIQ_CONCURRENCYCPUservers
sidekiq_masterSIDEKIQ_CONCURRENCYCPUdefault, servers
sidekiq_masterREPORTS_CONCURRENCYRAMreports
sidekiq_nodeSIDEKIQ_NODE_CONCURRENCYRéseaudefault:NŒUD
sidekiq_nodeWEB_SCANNER_CONCURRENCYRéseau, CPU, RAMweb-scanner:NŒUD

La concurrence du service sidekiq peut être augmentée sur n’importe quel nœud, contribuant à la capacité de calcul globale de la file servers. Les autres files sont spécifiques à un nœud donc la configuration de la concurrence doit y être ciblée pour avoir l’effet voulu.

Ces modifications sont à faire uniquement suite à la recommandation d’un ingénieur Cyberwatch.

Pour configurer par exemple la variable SIDEKIQ_CONCURRENCY du service sidekiq, modifier le fichier /etc/cyberwatch/configs-enabled/99-sidekiq-concurrency.yml ainsi :

version: '3.7'

services:
  sidekiq:
    environment:
      SIDEKIQ_CONCURRENCY: 4

Redémarrer ensuite votre instance avec sudo cyberwatch restart.

Il est possible par ce même biais de configurer les autres variables des autres services.

Configuration du nombre de scans d’images Docker en parallèle

Il est possible de configurer le nombre de scans d’images Docker qui peuvent être réalisés en parallèle par l’application Cyberwatch.

Par défaut, si la variable n’est pas configurée, la valeur est de 4 scans en parallèle.

La modification de cette valeur peut avoir un impact significatif sur les performances du système et la consommation des ressources. Il est recommandé de ne modifier cette valeur qu’après avoir consulté un ingénieur Cyberwatch.

Configuration pour Docker Swarm et Podman

Pour modifier cette valeur dans un environnement Docker Swarm ou un environnement Podman, suivre la procédure ci-dessous :

  1. Modifier le fichier /etc/cyberwatch/config.env et éditer ou ajouter la ligne suivante :

    # Number of container-scanner replicas to start.
    CBW_CONTAINER_SCANNER_REPLICAS=1
    

Remplacer 1 par le nombre de replicas souhaité.

  1. Redémarrer Cyberwatch selon la procédure standard :

    sudo cyberwatch restart
    

Configuration pour Kubernetes

Pour modifier cette valeur dans un environnement Kubernetes, suivre la procédure ci-dessous :

  1. Modifier le fichier values.yml et y ajouter les lignes suivantes :

    containerScanner:
      replicaCount: N
    

    où la variable N doit prendre la valeur du nombre de replicas souhaité pour le container-scanner. Chaque replica peut exécuter jusqu’à 4 scans en parallèle par défaut.

    Il est conseillé d’avoir les pods sur le même nœud, ou un volume pour container-scanner en RWX (ReadWriteMany).

  2. Appliquer les modifications selon la procédure standard de déploiement Kubernetes.


Retour en haut

English Français Español