Verwaltung von Softwarelizenzen in GLPI

Technischer Leitfaden zur Verwaltung von Softwarelizenzen in GLPI: Datenmodell (glpi_softwarelicenses), Namensfragmentierung, die den Compliance-Überhang auf null setzt, Korrektur über das Software-Wörterbuch, Abfrage für den echten Überhang, die drei Schalter der Ablaufwarnung und eine Entscheidungsmatrix nach Lizenztyp – mit der Erfahrung aus dem Abgleich von Beständen im Betrieb.

In diesem Artikel7 Abschnitte

Ein Hersteller-Audit kann teuer werden, aber woran die Lizenzverwaltung in GLPI scheitert, ist selten der Lizenzpreis – sondern eine Installation, die GLPI der falschen Software zurechnet. Im Betrieb von GLPI-Beständen unserer Kunden existiert ein Compliance-Bericht fast immer; was fehlt, ist Vertrauen in ihn. Dieser Leitfaden zeigt, wie Sie Lizenzen modellieren, warum die Überhangszahl schief herauskommt und wie Sie Abgleich und Warnungen so einstellen, dass ein Audit keine Überraschung wird.

Welches Datenmodell alles trägt

Verstehen Sie vor jedem Bericht, wie GLPI die Teile verknüpft. Es kommt auf vier native Tabellen an:

  • glpi_softwares – die Software selbst (ein Datensatz pro Name).
  • glpi_softwareversions – die Versionen jeder Software.
  • glpi_softwarelicenses – die erworbenen Lizenzen, mit Menge (Feld number), Typ, Gültigkeit (expire) und Lieferant.
  • glpi_items_softwareversions – jede erkannte Installation, die ein Element (Computer, VM) mit einer Version verknüpft.

Compliance entsteht aus der Gegenüberstellung der Summe von number in glpi_softwarelicenses mit der Anzahl der Zeilen in glpi_items_softwareversions, gruppiert nach Software. Zeigt eine der beiden Seiten auf den falschen glpi_softwares-Eintrag, geht die Rechnung schön auf – und ist falsch.

Erfassen Sie die Lizenz im richtigen Feld

Erfassen Sie jeden Kauf im Menü Verwaltung > Lizenzen (oder über den Reiter Lizenzen in der Software). Unser standardisiertes Vorgehen:

  1. Mit der richtigen Software verknüpfen – eine Lizenz gehört zu einem bestimmten glpi_softwares-Eintrag. Sie haben Office gekauft, aber die Inventarisierung hat „Microsoft Office“ und „Microsoft 365 Apps“ als zwei Softwares angelegt? Dann fehlt der Lizenz die Zuordnung zur Hälfte der Installationen.
  2. Menge in number – die Gesamtzahl vertraglich vereinbarter Plätze. Hier liegt die erste Falle: number = -1 bedeutet eine unbegrenzte Lizenz (Freeware, Standortlizenz ohne Limit). Leer lassen oder 0 setzt die Vergleichsbasis auf null.
  3. Lizenztyp – OEM, Volume, Subscription usw. (Dropdown glpi_softwarelicensetypes). Kein Schmuck: Er bestimmt die tatsächliche Compliance-Regel.
  4. Gültigkeit (expire) – füllen Sie sie bei Subscription und Software Assurance aus; lassen Sie sie bei unbefristeten Lizenzen leer.
  5. Lizenz den Installationen zuweisen – Erfassen reicht nicht. Die Lizenz muss den Elementen zugewiesen werden, die sie verbrauchen (Reiter Elemente der Lizenz), damit GLPI den Verbrauch zählt. Viele Datenbanken haben erfasste Lizenzen ohne jede Zuweisung: Der Bericht zeigt alles als verfügbar, obwohl es längst überschritten ist.

Ein Fehler aus der Praxis, der den Überhang auf null setzt: fragmentierte Namen

Im Betrieb ist der Grund Nummer 1 für „Compliance zeigt null Überhang, aber ich weiß, dass ich überlizenziert bin“ kein Berichtsfehler – sondern Namensfragmentierung. Die Inventarisierung von GLPI legt pro exaktem, vom Agenten gemeldeten Namen einen glpi_softwares-Eintrag an. „Google Chrome“, „Google Chrome (64-bit)“ und „Google Chrome“ mit einem zusätzlichen Leerzeichen werden so zu drei verschiedenen Softwares, jede mit eigener Installationszählung. Sie binden die Lizenz an eine davon, und die anderen beiden stehen „ohne erfasste Lizenz“ da – oder schlimmer, „konform“, weil jede nur wenige Installationen hat. Die Gesamtrechnung geht nie auf.

Die Korrektur gehört nicht in den Bericht, sondern in die Eingabe: Das Software-Wörterbuch (Verwaltung > Regeln > Software-Wörterbuch) normalisiert den Namen, bevor er in glpi_softwares gespeichert wird. Eine Regel, die „Google Chrome (64-bit)“ in „Google Chrome“ umschreibt, führt die Installationen in einer einzigen Software zusammen, und dann deckt die Lizenz alles ab. Ein Detail, welches nur kennt, wer im Betrieb steht: Das Wörterbuch schreibt erst beim nächsten Inventareingang um. Nach dem Anlegen der Regeln muss die Inventarisierung also erneut verarbeitet werden (oder Sie warten auf den nächsten Agentenzyklus), damit alte Installationen migrieren. Regel anwenden und den Bericht in derselben Minute prüfen täuscht: Noch hat sich nichts geändert.

Eine Abfrage, die den echten Überhang zeigt

Solange das Wörterbuch nicht sauber eingestellt ist, mischt die Compliance-Ansicht Rauschen bei. Wir führen direkt in der Datenbank eine Abfrage aus, die pro Software Installationen und Lizenzen gegenüberstellt – unbegrenzte Lizenzen (number = -1) bereits aus der Summe ausgeschlossen:

-- Softwares com mais instalacoes do que licencas (excedente de compliance).
-- number = -1 significa licenca ilimitada: excluimos do somatorio.
SELECT s.name AS software,
       COALESCE(lic.licencas, 0)     AS licencas,
       COALESCE(inst.instalacoes, 0) AS instalacoes,
       COALESCE(inst.instalacoes, 0) - COALESCE(lic.licencas, 0) AS excedente
FROM glpi_softwares s
LEFT JOIN (
    SELECT softwares_id, SUM(number) AS licencas
    FROM glpi_softwarelicenses
    WHERE is_deleted = 0 AND number > 0
    GROUP BY softwares_id
) lic  ON lic.softwares_id = s.id
LEFT JOIN (
    SELECT sv.softwares_id, COUNT(*) AS instalacoes
    FROM glpi_items_softwareversions isv
    JOIN glpi_softwareversions sv ON sv.id = isv.softwareversions_id
    WHERE isv.is_deleted = 0
    GROUP BY sv.softwares_id
) inst ON inst.softwares_id = s.id
WHERE s.is_deleted = 0
  AND COALESCE(inst.instalacoes, 0) > COALESCE(lic.licencas, 0)
ORDER BY excedente DESC;

Ergebnis ist Ihre Einkaufsliste: Jede Zeile mit positivem Überhang ist ein Strafrisiko im Audit. Gleichen Sie sie mit dem Wörterbuch ab, bevor Sie einkaufen – die Hälfte des „Überhangs“ ist meist dieselbe Software, unter zwei Namen gezählt.

Ablaufwarnungen, die wirklich auslösen

Eine abgelaufene Subscription-Lizenz bedeutet gebundenes Geld oder einen abgeschalteten Dienst. GLPI warnt, aber die Warnung hat drei Schalter, die alle eingeschaltet sein müssen – und der häufige Irrtum ist, zu glauben, ein ausgefülltes Feld expire genüge:

  • In der Einheit (Verwaltung > Einheiten, Reiter Benachrichtigungen): Alarme zu Lizenzen einschalten und die Vorlaufzeit festlegen (interne Felder use_licenses_alert und send_licenses_alert_before_delay).
  • In der Benachrichtigung (Einstellungen > Benachrichtigungen): Die Benachrichtigung zu Softwarelizenzen muss aktiv sein, mit festgelegtem Empfänger und Template.
  • Im Cron: Die automatische Aktion, welche Abläufe prüft, läuft nur, wenn der Cron von GLPI läuft. In der Produktion heißt dies: ein Cron des Betriebssystems, nicht der interne Modus, der vom Benutzerverkehr abhängt.

Die Konfiguration eines externen Cron, die wir bei jedem Kunden einrichten:

# Crontab do usuario do PHP (www-data/apache): dispara as acoes automaticas do GLPI,
# incluindo o alerta de licencas a vencer. Sem este cron externo, o alerta so roda
# "de carona" no trafego dos usuarios - e numa janela sem acesso, nunca dispara.
* * * * * www-data /usr/bin/php /var/www/glpi/front/cron.php &>/dev/null

Unabhängig von der nativen Warnung verschicken wir jeden Montag einen Ablaufbericht direkt aus der Datenbank, um uns nicht allein auf die Benachrichtigung zu verlassen:

-- Licencas que vencem nos proximos 90 dias, das mais urgentes para as menos.
SELECT s.name  AS software,
       sl.name AS licenca,
       sl.number,
       sl.expire,
       DATEDIFF(sl.expire, CURDATE()) AS dias_para_vencer
FROM glpi_softwarelicenses sl
JOIN glpi_softwares s ON s.id = sl.softwares_id
WHERE sl.is_deleted = 0
  AND sl.expire IS NOT NULL
  AND sl.expire <= DATE_ADD(CURDATE(), INTERVAL 90 DAY)
ORDER BY sl.expire ASC;

Entscheidungsmatrix nach Lizenztyp

Der Lizenztyp verändert, wie Sie in GLPI modellieren und wo ein Risiko liegt. Die Matrix, die wir beim Entwurf verwenden:

LizenztypModellierung in GLPIFeld expireHäufige Falle
OEM (an die Hardware gebunden)number = 1 pro Gerät; Typ OEMLeer (unbefristet)Wandert nicht mit auf eine andere Maschine – ein PC-Tausch erzeugt stille Nicht-Konformität
Volume (VLK / MAK / KMS)1 Datensatz, number = vertraglich vereinbarte MengeGemäß VertragEchte Aktivierungen zählen, nicht die Vertragsobergrenze
Subscription (SaaS, Microsoft 365)number = Plätze; Abgleich über den Bericht des AnbietersEnde des ZyklusInventarisierung sieht reines SaaS nicht – Erfassung ist manuell
Unbefristet + Software Assurancenumber = Menge; expire = Ende der SAEnde der SAAblauf der SA beendet nicht die Nutzung, sperrt aber ein Upgrade-Recht
Freeware / TrialFreeware: number = -1; Trial: number + expireNur beim TrialFreeware, die in einer neuen Version kostenpflichtig wird, bleibt unbemerkt

Abgleich ist Routine, kein Projekt

Software-Compliance ist kein Foto, sondern ein Film: Ihr Bestand ändert sich jede Woche. Im Betrieb bewährt hat sich ein vierteljährlicher Rhythmus für den vollständigen Abgleich (Überhangsabfrage ausführen, Wörterbuch prüfen, Zuweisungen kontrollieren) und ein monatlicher für Abläufe. Priorisieren Sie die Hersteller, die tatsächlich auditieren – Microsoft, Adobe, Oracle und Autodesk fordern nach, und die Rechnung für eine von ihnen entdeckte Nicht-Konformität ist um Größenordnungen höher als der Aufwand, eine Datenbank sauber zu halten. Ziel ist kein hübscher Bericht, sondern die Frage „Wie viele Lizenzen von X habe ich und wie viele nutze ich?“ mit einer Zahl beantworten zu können, der Sie vertrauen.

Möchten Sie Ihren Softwarebestand unter Kontrolle haben, mit abgeglichener Lizenzdatenbank und Warnungen, die tatsächlich auslösen? Lernen Sie den GLPI-Betrieb von NexTool kennen.


Geprüft vom Team der NexTool Solutions.

Häufig gestellte Fragen

Ja, wenn die Inventarisierung (GLPI Agent) aktiv ist. Jede erkannte Installation wird zu einer Zeile in glpi_items_softwareversions, die ein Element mit der Softwareversion verknüpft. Compliance vergleicht diese Zählung mit der Summe der Lizenzen. Ohne Inventarisierung müssten Sie Installationen von Hand erfassen – in großem Maßstab nicht machbar.

Fast immer liegt es an fragmentierten Softwarenamen. Die Inventarisierung legt pro exaktem Namen einen glpi_softwares-Eintrag an, sodass Varianten wie „Google Chrome“ und „Google Chrome (64-bit)“ zu verschiedenen Softwares werden und die Lizenz nur eine davon abdeckt. Normalisieren Sie die Namen im Software-Wörterbuch und verarbeiten Sie die Inventarisierung erneut; erst dann werden Installationen zusammengeführt und ein Überhang sichtbar.

Es gibt drei Schalter. Schalten Sie in der Einheit die Lizenzalarme und die Vorlaufzeit ein; unter Benachrichtigungen muss die Lizenzbenachrichtigung mit Empfänger aktiv sein; und der Cron von GLPI muss über das Betriebssystem laufen (front/cron.php in der crontab). Ein ausgefülltes Feld expire allein löst nichts aus.

Verwenden Sie im Mengenfeld (number) den Wert -1. GLPI behandelt -1 als unbegrenzt und erzeugt keinen Überhang, egal wie viele Installationen auftauchen. Vorsicht beim Summieren von Lizenzen in Berichten: Nehmen Sie die Bedingung number > 0 auf, damit die -1 die Rechnung nicht verzerren.

Ja, aber die Erfassung ist manuell. Die lokale Inventarisierung erkennt keine Plätze reiner SaaS-Dienste. Sie erfassen die Lizenz daher mit der Anzahl der Plätze und dem Ende des Zyklus in expire und gleichen den Verbrauch über den Zuweisungsbericht des Anbieters ab. Behandeln Sie das Dashboard des Anbieters als maßgebliche Quelle für die tatsächliche Nutzung.

Brauchen Sie Hilfe?