HAProxy est un très bon produit permettant de réaliser du load-balancing.

L'idée de cet article n'est pas de faire une présentation détaillée du produit (un jour peut-être) mais de répondre à une problématique simple :

Combien de connexions y-a-t'il en ce moment sur mon répartiteur de charge HAProxy ?

 

1. Status dashboard

Une première ; simple à mettre en place mais nécessitant une relance ou un restart du produit est d'activer le dashboard de statut d'HAProxy.

Cela se fait en ajoutant à votre configuration (souvent /etc/haproxy.conf) les directives suivantes (adapter les ports, user et mot de passe le cas échéant) :

# status page.
listen stats :80
    mode http
    stats enable
    stats uri     /stats
    stats realm   Haproxy\ Statistics
    stats auth myusername:mypassword
    stats hide-version

Puis de relancer le service haproxy (ou le redémarrer ; respectivement) :

$ service haproxy reload

$ service haproxy restart

 

2. En ligne de commande

L'alternative en pure ligne de commande est d'utiliser le binaire lsof (list of opened files) qui permet d'afficher les fichiers, pipes, sockets ouverts.

Avec les arguments qui vont bien ainsi que l'usage de grep on peut former la commande suivante (exemple : je veux lister toutes les connexions https ; TCP 443) :

$ pids="`pidof haproxy`" ; for pid in ${pids}; do lsof -n -P -p ${pid} | grep -vE "CLOSE_WAIT|LISTEN" | grep -- ":443->" ; done | wc -l

 

Cette technique n'est du coup pas exclusive à HAProxy et on peut l'appliquer également à Apache (ci-dessous httpd) :

$pids="`pidof httpd`" ; for pid in ${pids}; do lsof -n -P -p ${pid} | grep -vE "CLOSE_WAIT|LISTEN" | grep -- ":443->" ; done | wc -l

 

Elle n'est pas non plus exclusive au HTTPS et à son port TCP 443 ; ici un exemple avec des connexions MySQL (3306) qui seraient proxifiées par un HAProxy :

$ pids="`pidof haproxy`" ; for pid in ${pids}; do lsof -n -P -p ${pid} | grep -vE "CLOSE_WAIT|LISTEN" | grep -- ":3306->" ; done | wc -l

Tag(s) : #haproxy, #bash, #lsof

Partager cet article

Repost 0
Pour être informé des derniers articles, inscrivez vous :