2025-06-11 13:54:49 +02:00
2025-06-11 13:54:49 +02:00
2025-06-10 17:59:15 +02:00

Usage

Ce script Powershell permet de créer un point d'écoute pour permettre un check agent via un serveur HAProxy.

Le script calcule automatiquement le poids de la machine sur lequel il tourne en vérifiant l'usage RAM et / ou CPU selon des critères de facteur d'importance, de valeur de réference pour le calcul ou de limite haute forçant le mode drain (aucune nouvelle connexion depuis haproxy)

Fonctionne sur

Testé en fonctionnement dans les environnements suivants ;

OS

Windows 11

Version powershell

Powershell 5.1 Powershell 7.4

Fonctionnement

Ce script créé un point d'écoute TCP sur un port donné.

Lorsqu'un client s'y connecte, il lance le calcul du poids sur la machine où tourne le script puis renvoie l'information sous un format de tableau de bytes suivi d'un retour à la ligne.

Lorsqu'un calcul RAM ou CPU dépasse la limite définie dans CPU_THRESHOLD ou RAM_THRESHOLD, il envoie l'information "drain 0%" au serveur HAProxy. Dès que la valeur revient sous la limite, elle envoie une valeur calculée toujours précédée de up (ex : "up 12%")

Fichier de configuration

L'emplacement du fichier de configuration est défini en début de script. Si ce fichier n'existe pas, il est créé en utilisant des valeurs par défaut.

Il est chargé au démarrage du script et un changement de valeur nécessite un arrêt de celui ci.

Activation / désactivation de vérification RAM ou CPU

RAM_ENABLED et CPU_ENABLED sont à 1 si actifs, 0 si inactifs.

S'ils sont absents ou à une valeur autre, ils sont désactivés.

VALUE et THRESHOLD

CPU_THRESHOLD ou RAM_THRESHOLD correspond à une valeur maximale en pourcent à laquelle l'agent renverra forcément une demande de mise en drain (plus de nouvelle ouverture de session).

Exemple : CPU_THRESHOLD = 80 > la machine passe en mode drain si le processeur est détecté à 81% d'utilisation ou plus

CPU_VALUE ou RAM_VALUE définit le pourcentage d'usage de réference utilisé pour le calcul du poids, selon le facteur d'importance de la valeur.

Le calcul de poids se base sur une valeur de départ de 100, et chaque élément calculé se soustrait à cette valeur de départ

Exemple : CPU_VALUE = 50 et CPU_IMPORTANCEFACTOR à 100

Si l'usage du CPU est à 10, la valeur calculée sera :

10/50*100 = 20

100 - 20 = 80

Le script renverra à HAProxy la valeur "up 80%"

La valeur de THRESHOLD peut être inférieure à VALUE.

Ainsi, si on créé un CPU_THRESHOLD à 80 et un CPU_VALUE à 90, le poids de la machine va diminuer progressivement jusqu'à arriver à 80% d'utilisation CPU, mais prendra en compte dans le calcul 90% de son utilisation.

IMPORTANCEFACTOR

Le facteur d'importance permet de réduire le calcul du score pour une métrique afin de la rendre moins importante.

Un IMPORTANCEFACTOR à 100 veut dire que la valeur est prise en compte à 100% de son calcul initial.

Un IMPORTANCEFACTOR à 50 ne prendra que la moitié de la valeur dans le calcul initial de poids.

Exemples pour l'IMPORTANCEFACTOR

avec un RAM_VALUE à 80 et un RAM_IMPORTANCEFACTOR à 100

Ram utilisée : 60%

60 / 80 * 100 = 75

100 - 75 = 25

Poids de la machine renvoyé : 25%

avec un RAM_VALUE à 80 et un RAM_IMPORTANCEFACTOR à 50

Ram utilisée : 60%

60 / 80 * 50 = 37.5 (arrondi à 37)

100 - 37 = 63

Poids de la machine renvoyé : 63%

S
Description
Script powershell permettant de lancer un listener sur un port défini et de renvoyer un poids pour HAProxy en utilisant des informations de charge CPU et/ou RAM
Readme
39 KiB
Languages
PowerShell 100%