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.
| File | Services | Fonction principale |
|---|---|---|
| default | sidekiq_master | Tâches diverses. |
| reports | sidekiq_master | Génération des exports et rapports PDF. |
| servers | sidekiq, sidekiq_master | Calcul des vulnérabilités des actifs. |
| default:NŒUD | sidekiq_node | Exécution des découvertes et des analyses des actifs. |
| web-scanner:NŒUD | sidekiq_node | Exé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 :
Modifier le fichier
/etc/cyberwatch/config.envet éditer ou ajouter la ligne suivante :# Number of Sidekiq replicas to start. CBW_SIDEKIQ_REPLICAS=1Remplacer
1par le nombre de replicas souhaité.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).
| Service | Variable | Ressources limitantes | Files affectées |
|---|---|---|---|
| sidekiq | SIDEKIQ_CONCURRENCY | CPU | servers |
| sidekiq_master | SIDEKIQ_CONCURRENCY | CPU | default, servers |
| sidekiq_master | REPORTS_CONCURRENCY | RAM | reports |
| sidekiq_node | SIDEKIQ_NODE_CONCURRENCY | Réseau | default:NŒUD |
| sidekiq_node | WEB_SCANNER_CONCURRENCY | Réseau, CPU, RAM | web-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 :
Modifier le fichier
/etc/cyberwatch/config.envet é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é.
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 :
Modifier le fichier
values.ymlet y ajouter les lignes suivantes :containerScanner: replicaCount: Noù la variable
Ndoit 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).Appliquer les modifications selon la procédure standard de déploiement Kubernetes.