Lizenzüberwachung · 4 min read · Jan 13, 2026
Flexnet Lizenzüberwachung mit rrdtool - Seite 2
4. Erstellen der Grafiken
Die Grafiken können leicht mit Hilfe des rrdcgi-Programms erstellt werden, das im rrdtool-Paket enthalten ist. Die Erstellung erfolgt dann nur auf Anfrage, um CPU-Zyklen zu sparen. Sie müssen einige CGI-Skripte mit speziellen RRD::-Tags erstellen, die von rrdcgi interpretiert werden.
Mein CGI-Skript sieht so aus:
#!/usr/bin/rrdcgi
Prod1 Lizenznutzung
Prod1 Lizenznutzung am
'
-s -24hours -w 600 -h 200 -W gbi@localhost@localdomain
-v "Verwendete Lizenzen" --lazy
--title "Nutzer von 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>
Für Details siehe die Manpages von rrdcgi und rrdgraph.
Dies ist ein Beispiel für eine bekannte MRTG-Stil-Grafik:

Hier passiert nicht viel.
Das obige Skript war mein erster, einfacher Ansatz. Die Idee war, eine Reihe von Skripten für jedes Produkt und für verschiedene Zeiträume zu implementieren, eines für täglich, eines für wöchentlich, eines für monatlich und eines für jährlich. Aber das führt zu einer Flut von Skripten, die nahezu identisch sind. Nach einem weiteren Blick in die Dokumentation von rrdcgi wurde eine andere Möglichkeit gefunden, die zu einer Lösung mit einem Skript pro Produkt und Radiobuttons für die interaktive Auswahl des interessierenden Zeitraums führt. Das Skript sieht so aus:
#!/usr/bin/rrdcgi
Prod1 Lizenznutzung
Prod1 Lizenznutzung am
Zeitraum
.png
--imginfo '
'
-s - -w 600 -h 200
-W [email protected]
-v "Verwendete Lizenzen" --lazy
--title "Nutzer von 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>
Die Radiobuttons über den Grafiken zur Auswahl des Zeitraums sehen so aus:

5. Erstellung der rrd-Datenbanken
Es gibt ein Thema, das ich bisher nicht erwähnt habe, wie die rrd-Datenbanken erstellt werden. Ich habe, wie Sie spüren, ein weiteres Skript verwendet. Es sieht so aus:
#!/usr/bin/python
# Skript zur Erstellung aller rrd-Datenbanken für alle Instanzen von Lizenzen
# in einer mrtg-kompatiblen Weise
import sys, string, rrdtool
search = [ { 'term':"Nutzer von CL:", 'val':10, 'max':5, 'db':'CL' },
{ 'term':"Nutzer von xyzabc:", 'val':10, 'max':5, 'db':'xyzabc' },
{ 'term':"Nutzer von 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' )Natürlich müssen Sie dies an Ihre Bedürfnisse anpassen.
6. Ein weiteres CGI-Skript
Um die Handhabung des Flexnet-Systems und der Benutzer, die eine Lizenz leasen müssen, um ihre Arbeit zu erledigen, weiter zu erleichtern, wurde ein weiteres CGI-Skript erstellt. Es wird verwendet, um anzuzeigen, wer wie viele Lizenzen geleast hat. Es ist nur die Ausgabe von “lmutil lmstat -a”, aber ohne sich in ein System einzuloggen, in dem lmutil installiert ist. Aber seien Sie sich bewusst, dass dies mit dem Datenschutz in Ihrem Unternehmen kollidieren kann, da persönliche Informationen frei zugänglich sind. Daher müssen Sie möglicherweise das Ausführen dieses Skripts mit einem Authentifizierungsmechanismus schützen, aber dieses Thema wird in diesem Tutorial nicht behandelt.
Das Skript ist wieder ein Dash-Skript wie das im Kapitel 2. Sie können mehr als ein Produkt auf mehr als einem Server abfragen, wenn es entsprechend implementiert ist. Es ist auch ein sogenanntes Here-Skript, das eine spezielle, selten verwendete Art von Shell-Skript ist. Fühlen Sie sich wieder frei, es an Ihre Bedürfnisse anzupassen:
#!/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
Lizenzstatus $PROD
Lizenzstatus $PROD
EOM
/usr/local/bin/lmutil lmstat -c $PORT@LICENSESERVER -a
/bin/cat << EOM
14.6.2010
EOM
Kopieren Sie dieses Skript einfach in das cgi-bin-Verzeichnis Ihres Webservers ( /usr/lib/cgi-bin in meinem Fall), machen Sie es weltweit lesbar und ausführbar, vergessen Sie nicht, das CGI-Modul Ihres Webservers zu laden (wenn es eines hat oder nicht bereits geladen ist), und Sie sind bereit zum Abheben. Die Ausgabe sieht so aus:

Dieses Skript wird in Ihrem Webbrowser mit einer URL wie:
http://server/cgi-bin/licstate.cgi?prod2aufgerufen. So können Sie eines von mehreren Produkten auswählen, indem Sie einfach einen “Befehlszeilenparameter” an das CGI-Skript übergeben.
Durch die Bereitstellung eines Skripts wie dieses für die Benutzer von Produkten, bei denen verfügbare Lizenzen dazu neigen, fast immer maximal ausgeschöpft zu sein, ist es einfach, dass die Benutzer ihre Probleme bezüglich der Lizenznutzung untereinander regeln, und es besteht keine Notwendigkeit, dass der Administrator überhaupt involviert ist ;-).
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/
- Mein Netzwerküberwachungsgerät: https://www.howtoforge.com/network-monitoring-appliance
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.