AccueilFAQStatistiquesDiversContact

Sécurité : Linux : Monitoring du serveur LiteSpeed avec munin-node

Trois plugins pour surveiller le serveur HTTP LiteSpeed avec Munin-node.

- Nombre de connexions en cours et idle.
- Nombre de bits par seconde (entrants et sortants).
- Nombre de requêtes (en cours et par seconde).

LiteSpeed enregistre toutes les secondes les informations en '/tmp/lshttpd' dans un ou plusieurs fichiers '.rtreport'. Le nombre de fichiers sera égale au nombre de cores de votre licence et ceux-ci seront nommés '.rtreport', '.rtreport2', '.rtreport3' etc. Les statistiques doivent donc être récupérées dans chacun de ces fichiers et additionnées.

- Nombre de connexions en cours et idle :

#!/usr/bin/perl
##################################################
# Analyse du nombre de connexion en cours et idle
# du serveur HTTP LiteSpeed
##################################################
if ( $ARGV[0] eq 'autoconf' ) {
   if ( -e '/tmp/lshttpd/.rtreport' ) {
      print "yes\n";
      exit;
   } else {
      print "no\n";
      exit 1;
   }
}

if ( $ARGV[0] eq 'config' ) {
   open IN, "</tmp/lshttpd/.rtreport";
   while ( <IN> ) {
      if ( /^MAXCONN: (\d+),/ ) {
         $max = $1;
         last;
      }
   }
   close IN;
   print "graph_title Litespeed : connexions (max. $max)\n";
   print "graph_args --base 1000 -l 0\n";
   print "graph_scale no\n";
   print "graph_vlabel connexions\n";
   print "graph_category litespeed\n";
   print "graph_order used idle\n";
   print "used.label en cours\n";
   print "used.draw AREA\n";
   print "used.colour 96E78A\n";
   print "idle.label idle\n";
   print "idle.draw LINE1\n";
   print "idle.colour 5C6CAE\n";
   exit 0;
}

if ( ! -e '/tmp/lshttpd/.rtreport' ) {
   print "used.value 0\n";
   print "idle.value 0\n";
   exit;
}

@stats = `ls -a /tmp/lshttpd/.rtreport*`;
foreach $rep ( @stats ) {
   open IN, "<$rep";
   while ( <IN> ) {
      if ( /PLAINCONN: (\d+), AVAILCONN: \d+, IDLECONN: (\d+),/ ) {
         $used += $1;
         $idle += $2;
         last;
      }
   }
   close IN;
}
print "used.value $used\nidle.value $idle\n";
exit;

- Nombre de bits par seconde (entrants et sortants) :

#!/usr/bin/perl
##################################################
# Analyse du nombre de bits/sec entrant et sortant
# du serveur HTTP LiteSpeed
##################################################
if ( $ARGV[0] eq 'autoconf' ) {
   if ( -e '/tmp/lshttpd/.rtreport' ) {
      print "yes\n";
      exit;
   } else {
      print "no\n";
      exit 1;
   }
}

if ( $ARGV[0] eq 'config' ) {
   print "graph_title Litespeed : bits/sec\n";
   print "graph_args --base 1000 -l 0\n";
   print "graph_scale no\n";
   print "graph_vlabel bits par seconde\n";
   print "graph_category litespeed\n";
   print "bpsout.label out\n";
   print "bpsout.draw AREA\n";
   print "bpsout.colour 96E78A\n";
   print "bpsin.label in\n";
   print "bpsin.draw LINE1\n";
   print "bpsin.colour 5C6CAE\n";
   exit 0;
}

if ( ! -e '/tmp/lshttpd/.rtreport' ) {
   print "bpsin.value 0\n";
   print "bpsout.value 0\n";
   exit 0;
}

@stats = `ls -a /tmp/lshttpd/.rtreport*`;
foreach $rep ( @stats ) {
   open IN, "<$rep";
   while ( <IN> ) {
      if ( /^BPS_IN: (\d+), BPS_OUT: (\d+),/ ) {
         $bpsin += $1;
         $bpsout += $2;
         last;
      }
   }
   close IN;
}
print "bpsout.value $bpsout\nbpsin.value $bpsin\n";
exit;

- Nombre de requêtes (en cours et par seconde) :

#!/usr/bin/perl
##################################################
# Analyse du nombre de requêtes en cours et
# par seconde du serveur HTTP LiteSpeed
##################################################
if ( $ARGV[0] eq 'autoconf' ) {
   if ( -e '/tmp/lshttpd/.rtreport' ) {
      print "yes\n";
      exit;
   } else {
      print "no\n";
      exit 1;
   }
}

if ( $ARGV[0] eq 'config' ) {
   print "graph_title Litespeed : requêtes\n";
   print "graph_args --base 1000 -l 0\n";
   print "graph_scale no\n";
   print "graph_vlabel requêtes\n";
   print "graph_category litespeed\n";
   print "rqip.label ReqInProcess\n";
   print "rqip.draw AREA\n";
   print "rqip.colour 96E78A\n";
   print "rqps.label ReqPerSecond\n";
   print "rqps.draw LINE1\n";
   print "rqps.colour 5C6CAE\n";
   exit 0;
}

if ( ! -e '/tmp/lshttpd/.rtreport' ) {
   print "rqip.value 0\n";
   print "rqps.value 0\n";
   exit 0;
}

@stats = `ls -a /tmp/lshttpd/.rtreport*`;
foreach $rep ( @stats ) {
   open IN, "<$rep";
   while ( <IN> ) {
      if ( /^REQ_RATE \[\]: REQ_PROCESSING: (\d+), REQ_PER_SEC: (\d+), TOT_REQS: / ) {
         $rqip += $1;
         $rqps += $2;
         last;
      }
   }
   close IN;
}
print "rqip.value $rqip\nrqps.value $rqps\n";
exit;