Bonjour à tous!
Dans cet article, je veux expliquer comment j'ai choisi l'archiveur pour compresser les journaux de notre système de front-office.
La division dans laquelle je travaille est engagée dans le développement et la maintenance d'un système de front office unifié de la Banque. Je suis responsable de sa maintenance, de sa surveillance et de DevOps.
Notre système est une application très chargée desservant quotidiennement plus de 5 000 utilisateurs uniques. Aujourd'hui, c'est un «monolithe» avec tous ses avantages et ses inconvénients. Mais maintenant, le processus de transfert des fonctionnalités aux microservices se poursuit activement.
Chaque jour, notre système génère plus de 130 Go de journaux bruts, et malgré le fait que nous utilisons la pile ENG (Elasticsearch Nxlog Graylog), les journaux de fichiers contiennent beaucoup plus d'informations (par exemple, des erreurs de trace de pile), et nécessitent donc un archivage et un stockage.
Comme l'emplacement de stockage est limité, la question se pose: "Et quel archiveur sera le mieux à même de faire cette tâche."
Pour résoudre ce problème, j'ai écrit un script PowerShell qui a effectué l'analyse pour moi.
La tâche du script est d'appeler les archiveurs rar, 7z et zip avec différents paramètres de compression, pour calculer la vitesse de formation des archives, ainsi que l'espace disque utilisé.
Travaux préparatoires:
Nous analysons plus en détail
$table|Sort-Object -Property "Size %","Result %"|Format-Table -AutoSize
$table|Sort-Object -Property "Result %","Size %","Time %"|Format-Table -AutoSize
Le résultat:
Le plus économique en termes d'espace disque était 7z avec un taux de compression de -mx = 8 et -mx = 9

Le temps de création d'archive le plus rapide a été de 7z avec un taux de compression de -mx = 1

La vitesse et l'espace occupé les plus optimaux étaient de 7z avec un taux de compression de -mx = 3

Nous choisissons 7z avec un taux de compression de -mx = 8, car la taille de l'archive est de -mx 9, mais cela fonctionne un peu plus rapidement.
Très bien, l'archiveur et le taux de compression sont sélectionnés, maintenant archivons les journaux!
Nous devons résoudre les problèmes suivants:
- Évitez une charge élevée du serveur pendant le fonctionnement.
- Traitez tous les dossiers avec un sous-dossier Logs.
- Supprimez les archives de plus de 30 jours (afin de ne pas manquer d'espace disque).
- Créez des archives par jour en fonction de l'heure à laquelle les fichiers ont été modifiés.
Ici, je ne peindrai pas chaque ligne du script (décrit dans les commentaires), mais m'attarderai uniquement sur la fonction Set-MMTCore, qui nous permet de calculer le nombre de threads pour 7z afin de ne pas charger le processeur sur notre serveur:
Function Set-MMTCore {
Sans utiliser la fonction Set-MMTCore
On peut voir que le CPU reste à 100%. Cela signifie que nous causerons inévitablement des problèmes sur le serveur, ainsi que de recevoir une alerte du système de surveillance.

Lors de l'utilisation de la fonction Set-MMTCore
On peut voir que le CPU est de 30 à 35%. Cela signifie que l'utilisation de la fonction Set-MMTCore vous permet d'archiver des fichiers sans affecter le fonctionnement du serveur.

Le résultat du script de sauvegarde:
Dossier avant archivage:

Dossier après l'archivage:

Fichiers créés pendant le processus d'archivage:

Fichiers dans l'archive:

