Surveillance des licences · 4 min read · Jan 13, 2026
Surveillance des licences Flexnet avec rrdtool - Page 2
4. Création des graphiques
Les graphiques peuvent facilement être créés avec l’aide du programme rrdcgi, qui se trouve dans le paquet rrdtool. La création se fait alors uniquement à la demande pour économiser des cycles CPU, vous devez créer quelques scripts CGI avec des balises RRD:: spéciales, qui sont interprétées par rrdcgi.
Mon script CGI ressemble à ceci :
#!/usr/bin/rrdcgi
Utilisation des licences Prod1
Utilisation des licences Prod1 à
'
-s -24hours -w 600 -h 200 -W gbi@localhost@localdomain
-v "Licences utilisées" --lazy
--title "Utilisateurs de CL"
-l 0 -Y
DEF:value=/var/rrd/CL.rrd:value:MAX
DEF:total=/var/rrd/CL.rrd:total:MAX
AREA:value#660000
LINE3:total#FF00FF>
Pour plus de détails, consultez les pages de manuel de rrdcgi et rrdgraph.
Voici un exemple d’un graphique de style MRTG bien connu :

Pas grand-chose ici.
Le script ci-dessus était ma première approche simple. L’idée était de mettre en œuvre un ensemble de scripts pour chaque produit et pour différentes périodes, un pour quotidien, un pour hebdomadaire, un pour mensuel et un pour les aperçus annuels. Mais cela conduit à une inondation de scripts presque identiques. Après un autre examen de la documentation de rrdcgi, une autre possibilité a été trouvée, menant à une solution avec un script par produit et des boutons radio pour la sélection interactive de la période d’intérêt. Le script ressemble à ceci :
#!/usr/bin/rrdcgi
Utilisation des licences Prod1
Utilisation des licences Prod1 à
Période de temps
.png
--imginfo '
'
-s - -w 600 -h 200
-W [email protected]
-v "Licences utilisées" --lazy
--title "Utilisateurs de CL"
-l 0 -Y
DEF:value=/var/rrd/CL.rrd:value:MAX
DEF:total=/var/rrd/CL.rrd:total:MAX
AREA:value#660000
LINE3:total#FF00FF>
Les boutons radio au-dessus des graphiques pour sélectionner la période de temps ressemblent à ceci :

5. Création des bases de données rrd
Il y a un sujet que je n’ai pas mentionné jusqu’à présent, comment les bases de données rrd sont créées. J’ai utilisé, vous le sentez, un autre script. Il ressemble à ceci :
#!/usr/bin/python
# Script pour créer toutes les bases de données rrd pour toutes les instances de licences
# d'une manière compatible avec mrtg
import sys, string, rrdtool
search = [ { 'term':"Utilisateurs de CL:", 'val':10, 'max':5, 'db':'CL' },
{ 'term':"Utilisateurs de xyzabc:", 'val':10, 'max':5, 'db':'xyzabc' },
{ 'term':"Utilisateurs de qwerty:", 'val':10, 'max':5, 'db':'qwerty' } ]
for x in search:
rrdtool.create( '/var/rrd/' + x[ 'db' ] + '.rrd', '-s 300', \
'DS:value:GAUGE:600:U:U', 'DS:total:GAUGE:600:U:U', \
'RRA:MAX:0.5:1:600', 'RRA:MAX:0.5:6:700', 'RRA:MAX:0.5:24:775', \
'RRA:MAX:0.5:288:797' )Bien sûr, vous devez l’ajuster à vos besoins.
6. Un autre script CGI
Pour faciliter davantage la gestion du système Flexnet et des utilisateurs qui ont besoin de louer une licence pour faire leur travail, un autre script CGI a été créé. Il est utilisé pour montrer qui a loué combien de licences, c’est seulement la sortie de “lmutil lmstat -a”, mais sans se connecter à un système où lmutil est installé. Mais attention, cela peut entrer en conflit avec la protection de la vie privée dans votre entreprise, car les informations personnelles sont librement accessibles. Vous devrez donc peut-être protéger l’exécution de ce script avec un mécanisme d’authentification, mais ce sujet n’est pas couvert dans ce tutoriel.
Le script est à nouveau un script dash comme celui du chapitre 2, vous pouvez interroger plus d’un produit sur plus d’un serveur, si cela est mis en œuvre en conséquence. C’est aussi un soi-disant here-script, qui est un type spécial et rarement utilisé de script shell. Encore une fois, n’hésitez pas à l’ajuster à vos besoins :
#!/bin/dash
case $1 in
prod1) PORT=27000; PROD="Prod1";;
prod2) PORT=27002; PROD="Prod2";;
prod3) PORT=27042; PROD="Prod3";;
*|prod4) PORT=27001; PROD="Prod4";;
esac
echo Content-type: text/html
echo ""
/bin/cat << EOM
État des licences $PROD
État des licences $PROD
EOM
/usr/local/bin/lmutil lmstat -c $PORT@LICENSESERVER -a
/bin/cat << EOM
14.6.2010
EOM
Il suffit de copier ce script dans le répertoire cgi-bin de votre serveur web ( /usr/lib/cgi-bin dans mon cas), de le rendre lisible et exécutable par tous, n’oubliez pas de charger le module CGI de votre serveur web (s’il en a un, ou s’il n’est pas déjà chargé), et vous êtes prêt à partir. La sortie ressemble à ceci :

Ce script est appelé dans votre navigateur web avec une URL comme :
http://server/cgi-bin/licstate.cgi?prod2Ainsi, vous pouvez sélectionner l’un des plusieurs produits simplement en fournissant un “paramètre de ligne de commande” au script CGI.
En fournissant un script comme celui-ci aux utilisateurs de produits où les licences disponibles tendent à être presque maximisées tout le temps, il est facile que les utilisateurs gèrent leurs problèmes concernant l’utilisation des licences entre eux, et il n’est pas nécessaire que l’administrateur soit impliqué du tout ;-).
7. URLs
- MRTG: http://oss.oetiker.ch/mrtg/
- RRDTOOL: http://oss.oetiker.ch/rrdtool/
- Apache: http://httpd.apache.org/
- THTTPD: http://www.acme.com/software/thttpd/
- DASH: http://gondor.apana.org.au/~herbert/dash/
- Python: http://www.python.org/
- Mon appareil de surveillance réseau: https://www.howtoforge.com/network-monitoring-appliance
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.