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:

Tägliche Lizenznutzung

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

Täglich, Wöchentlich, Monatlich, Jährlich.

.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:

Radiobuttons

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


GBi

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:

Lizenzstatus

Dieses Skript wird in Ihrem Webbrowser mit einer URL wie:

http://server/cgi-bin/licstate.cgi?prod2

aufgerufen. 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

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.