Seminararbeit über das Thema: Logdaten unterschiedlicher Lizenzserver-Produkte - Entwurf eines normalisierten Datenmodells und einer einheitlichen Auswerte-Schnittstelle vorgelegt von: Robert Patrick Degen aus Neuss Geschrieben am Fachbereich Medizintechnik und Technomathematik der Fachhochschule Aachen (Standort Jülich) bei Prof. Dr. Andreas Terstegge (2. Betreuer: Dr. Thomas Eifert) Im Wintersemester 2011/1012 Kurzfassung Floating-Lizenzen spielen aus wirtschaftlicher Sicht eine große Rolle in großen Unternehmen oder Organisationen deren Struktur die klassische Bindung zwischen Rechner und Programm unattraktiv machen. Eine dynamische und damit kosteneffizientere Nutzung kommerzieller Programme entspricht der Arbeitsweise eines modernen IT Dienstleisters. Diese Arbeit beschäftigt sich mit Analyse der Nutzung von Softwarelizenzen aus der Sicht des anbietenden Dienstleisters und den Möglichkeiten im speziellen mit Hilfe des Lizenzmanagers FLEXlm ein generelles Modell zu entwickeln, das nach Gesichtspunkten eines proaktiven ITSM nach ITIL, dieses unterstützt und ihm gerecht wird. Schlagwörter: ITSM, FLEXlm, Lizenzmanager, Auswertung, Asset-Management 2 Erklärung Ich erkläre hiermit, die vorgelegte Arbeit ohne fremde Hilfe verfasst zu haben. Ich habe keine andere als die angegebene Literatur verwendet. Alle wörtlichen oder gedanklichen Übernahmen sind zitiert. Aachen, den 16. Dezember 2011. Unterschrift 3 Inhaltsverzeichnis Kurzfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Erklärung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Inhaltsverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Abbildungsverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Abkürzungsverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Einleitung 8 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Problemstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 FLEXlm Logfile . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 FLEXlm Instanzen / Ports . . . . . . . . . . . . . . . . . . . . . . 11 Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Datenkonsistenz . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Auswertung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Workflow Latenz . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1 Stand der Technik 1.1 1.2 1.3 15 Lizenzserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.1.1 DEBUG Mode Logfile . . . . . . . . . . . . . . . . . . . . 15 1.1.2 Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Wireshark Network Sniffer . . . . . . . . . . . . . . . . . . . . . . 16 1.2.1 Dump-/Logfile . . . . . . . . . . . . . . . . . . . . . . . . 16 1.2.2 Rotation und Nachbearbeitung . . . . . . . . . . . . . . . 16 Defizite des Systems . . . . . . . . . . . . . . . . . . . . . . . . . 17 2 Analyse 18 2.1 Software-Recherche . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2 Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.1 ITIL Anforderungen: Floating-Lizenzen . . . . . . . . . . . 18 2.2.2 Datenstrukturen . . . . . . . . . . . . . . . . . . . . . . . 19 2.2.3 Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4 2.3 2.4 Datenkonsistenz . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3.1 Berücksichtigung des Dienst-Zyklus . . . . . . . . . . . . . 20 2.3.2 Strategie der Korrektur . . . . . . . . . . . . . . . . . . . 21 Auswertung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.4.1 Betriebsunterbrechungen . . . . . . . . . . . . . . . . . . . 23 2.4.2 Abrechnung (Accounting) . . . . . . . . . . . . . . . . . . 23 2.4.3 Qualitätssicherung . . . . . . . . . . . . . . . . . . . . . . 25 3 Zusammenfassung 27 3.1 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2.1 Erweiterung der Produktunterstützung . . . . . . . . . . . 27 3.2.2 Integration in den Batchbetrieb . . . . . . . . . . . . . . . 27 Literatur 29 Anhang 30 3.3 SQL Table Creation . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.4 SQL Test-Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5 Abbildungsverzeichnis 1 Floating-Lizenzen Modell (schematisch) . . . . . . . . . . . . . . . 2 Schematischer Aufbau der Datenerfassung . . . . . . . . . . . . . 12 3 Aufbau der Ziel-Architektur (schematisch) . . . . . . . . . . . . . 14 6 8 Abkürzungsverzeichnis BSI British Standards Institution ITIL IT Infrastructure Library ITSM IT Service Management LM License Manager NTP Network Time Protocol RZ Rechen- und Kommunikationszentrum der RWTH Aachen TCP Transmission Control Protocol VPN Virtual Private Network 7 Einleitung Motivation Das Rechen- und Kommunikationszentrum der RWTH Aachen hat sich entschieden, die bereitgestellten Dienstleitungen nach ITIL, einer ursprünglich in England durch das BSI entwickelten und definierten Norm, umzustrukturieren [RWT08]. Würde man ITIL mit nur wenigen Worten erklären müssen, so könnte man vielleicht sagen, daß die zentrale Aufgabe von ITIL darin besteht, IT-Dienste planbar, messbar und damit optimierbar zu gestalten und zu betreiben. Das hohe Ziel all dieser Bemühungen ist eine verbesserte Berücksichtigung der spezifischen Anforderungen, die jedes Unternehmen an einen modernen IT Dienstleister stellt. Geschäftsprozesse im Sinne von ITIL zu unterstützen, stellt also einen wesentlichen Anteil der Arbeit der Mitarbeiter des Rechen- und Kommunikationszentrum der RWTH Aachen dar. Diese Seminararbeit beschäftigt sich mit Aspekten der Dienstüberwachung sowie der zugehörigen Abrechnung, Planung und Analyse der Lizenzdienste (vgl. Abbildung 1, S. 8) für kostenpflichtige Software innerhalb der Hochschule. Organisation/Firma Keine zeitgleiche Nutzung (hier: max. 3, Ersparnis pro Nutzer: [Y-X]/X Lizenzkosten) Lizenz 1 Lizenz 2 Lizenz 3 Nutzer 1 Nutzer 2 Nutzer 3 Lizenz-Manager Nutzer 4 Nutzer 5 Nutzer 6 Netzwerk Nutzer 7 Nutzer 8 Nutzer ... Anzahl der Nutzer: X Anzahl der Lizenzen: Y X«Y Abbildung 1: Floating-Lizenzen Modell (schematisch) 8 Über die vergangenen Jahre wurden zu diesem Zweck im Bereich der Lizenzserver1 zahlreiche Skript-Programme erzeugt, die aus den erzeugten Logdateien aller Dienste möglichst sinnvoll bzgl. einer Weiterverarbeitung Protokolldaten extrahieren. Für einen Softwareentwickler ist die Verbesserung eines existierenden SoftwareSystems ein alltägliches Szenario. Neben den Möglichkeiten Fehler zu korrigieren, müssen auch Erfahrungen und Erkenntnisse umgesetzt werden. Die Machbarkeit technischer Feinheiten spielt eine wichtige Rolle bei der Umsetzung von Verbesserungen im Bezug auf höhere Konzepte, hier am Beispiel ITIL. 1 Ein Lizenzserver ist ein Dienst, der die Verteilung von Softwarelizenzen im Netzwerk verwaltet. Netzwerklizenzen ermöglichen den Zugriff auf lizenzpflichtige Software dynamisch zu gestalten. Meistens nutzen nur sehr weniger Benutzer gleichzeitig eine kostenpflichtige Software. Wenn eine Softwarelizenz nicht an einen speziellen Computer gebunden ist können eine deutlich größere Zahl von Nutzern mit der gleichen Anzahl von Lizenzen zurechtkommen. Die finanzielle Ersparnis kann dann offensichtlich wieder auf alle beteiligten Nutzer umgelegt werden. 9 Problemstellung Das Rechen- und Kommunikationszentrum der RWTH Aachen betreibt mehr als 50 Instanzen der Lizenzsoftware FlexLM auf einem zentralen Lizenzserver. Jede dieser Instanzen verwaltet eine lizenzpflichtige Softwarekomponente, die im Netzwerk der Hochschule (und für Angehörige der Hochschule auch extern über VPN Dienste) genutzt werden kann. Für die Auswertung wird zum einen das proprietäre Logfile des FLEXlm Prozesses rotiert2 , nachbearbeitet und archiviert und desweiteren ein für den Lizenzserver im gleichen Zeitraum speziell gefiltertes und ausgewertetets Protokoll auf Ebene des Netzwerks mit Hilfe einer sogenannten Sniffersoftware namens Wireshark3 auf Basis einer heuristischen Funktion zu einem zusammengesetzten Logfile verarbeitet, das im wesentlichen dem Logfile des FLEXlm entspricht, nun aber um einige Daten (wie z.B. die IP Adresse des Nutzers) erweitert ist (vgl. Abbildung 2 auf S. 12). FLEXlm Logfile Im Logfile des FLEXlm wird die Verteilung der zur Verfügung stehenden Floating Lizenzen mit Hilfe von IN-, OUT- und DENY-Transaktionen protokolliert. Für ein fiktives Softwareprodukt SW-A wäre folgender schematisch veranschaulichter Log2 Unter der Rotation von Logfiles versteht man den Vorgang kontinuierlich wachsende Dateien wie z.B. Protokolldateien in sortierte Segmente zu zerlegen, um die Dateigröße handlich zu halten so daß auf sehr einfache Art und Weise alte Daten nach Bedarf entfernt werden können. Der Vorgang ist ein kritischer Moment der Ausführung, da der schreibende Dienst gestoppt werden muss um während der Dateioperationen keinen Datenverlust zu erzeugen. Aus dem gleichen Grund kann auch nicht zuverlässig aus dem aktiven Logfile gelesen werden. Manche Betriebssysteme sperren sogar den Lesezugriff 3 ganz sofern ein anderer Prozess die jeweilige Datei geöffnet hat. Eine Netzwerk-Sniffersoftware ermöglicht ein Mitschneiden aller Datenpakete einer Netzwerkkarte ohne an die Zugangsmechanismen des Betriebssystems gebunden zu sein, wie z.B. Sockets und Sessions des IP. Die erhobenen Daten sind u.U. sehr Umfangreich und müssen gefiltert werden. Die Filterung der Daten kann nur eingeschränkt für den Zeitpunkt der Erfassung eingestellt werden. Aus diesem Grund schneidet man in genügend großen Blöcken den gesamten Verkehr mit und führt anschließend eine zeitunkritische Nachbearbeitung (Filterung) durch. 10 fileeintrag möglich: 1 # anwendung startet 2 TIMESTAMP -1 SW - A OUT ( number of licenses =7 , client = user 1@instit ut ) 3 [...] 4 # anwendung verlaengert 5 # kein neuer eintrag im logfile 6 [...] 7 TIMESTAMP -2 SW - A IN ( number of licenses =7 , client = user1@ institut ) Aus verschiedenen Gründen kann es dazu kommen, daß der Rechner auf dem die Lizenzserversoftware betrieben wird abstürzt oder aus Wartungsgründen neugestartet werden muss. Gleich welchen Falles entsteht dabei in der Historie der protokollierten Lizenzzugriffe eine Inkonsistenz, die zu fehlerhaften Schlüssen in der weiteren Verarbeitung führen kann. 1 TIMESTAMP -1 SW - A OUT ( number of licenses =7 , client = user 1@instit ut ) 2 [...] 3 # system stuerzt ab oder muss neugestartet werden 4 [...] 5 # anwendung verlaengert 6 # erneuter checkout wird markiert , software laeuft weiter 7 # wenn software regulaer beendet ist , bleibt eine anzahl von checkouts uebrig 8 TIMESTAMP -1 SW - A OUT ( number of licenses =7 , client = user 1@instit ut ) 9 [...] 10 TIMESTAMP -2 SW - A IN ( number of licenses =7 , client = user1@ institut ) Es ist eine Inkonsistenz enstanden. Zählt man die OUT-Einträge, so errechnet man zwangsweise eine falsche Zahl an genutzten Lizenzen. FLEXlm Instanzen / Ports Für jede Software läuft eine einzelne Instanz des FLEXlm Daemons, die wiederum exklusiv an einen TCP/UDP Port auf der Servermaschine gebunden ist. Diese Bindung wird vom Administrator des Systems frei gewählt. Anhand der gewählten Portnummern und dem Sniffer-Logfile (das ja die Portnummern enthält) kann eindeutig erkannt werden, zu welchem Lizenzprodukt ein Datenpaket gehört. Die Zeitstempel von Lizenz-Logfile und Sniffer-Logfile stammen von der gleichen 11 Maschine. Anhand der Zeitstempel können die Sniffer-Pakete den jeweiligen LizenzEinträgen zugeordent werden, um reale IP Daten zu ermitteln. Sniffer protokolliert Netzwerkverkehr Software: Wireshark Pro Tag ca: 10 MB Text Mehr als 100.000 Zeilen Lizenzserverinstanz protokolliert nach proprieträem Format Software: FlexLM Pro Tag ca: 1 MB Text Mehr als 30.000 Zeilen Zentrales Logfile enthält nun Informationen kombiniert/synchronisiert und aufbereitet Abbildung 2: Schematischer Aufbau der Datenerfassung 12 Zielsetzung Schnittstelle Es ist eine Schnittstelle zu entwickeln, die in der Lage ist, alle Informationen bereitzustellen, die zur weiteren Verarbeitung (Analyse) geeignet ist. Diese Schnittstelle soll nur relevante Daten enthalten. Prinzipiell soll es möglich sein zu einem späteren Zeitpunkt weitere Lizenz-Produkte in die Verarbeitung mit aufzunehmen (Normierung). Neben den Möglichkeiten zur qualitativen Bewertung der Dienste sollen die Daten der Schnittstelle außerdem dazu geeignet sein, dem Nutzer gegenüber transparent Rechenschaft4 über die genutzten Dienste ablegen zu können. Datenkonsistenz Die gewonnenen Daten müssen konsistent sein. Ein Neustart des Lizenzserverprozesses beispielsweise darf zu keiner falschen Auswertung führen. Auswertung Die Daten der Lizenz-Nutzung sollen in einen für die Geschäftsprozesse nach ITIL aussagekräftigen Bericht verwertet werden. Das dazu nötige Konzept ist nach folgenden Aspekten zu entwickeln: • (A) Welcher Nutzer hat (B) wann (C) wie viele Instanzen (D) eines welchen Produkts (E) von welchem Rechner aus (E) wie lange genutzt? • Erkennung überflüssiger Lizenzkontingente • Erkennung nicht ausreichender Lizenzkontingente 4 Der Hintergrund dieser Funktionalität ist in der Arbeitsweise der Lizenzsoftware begründet. Diese sieht technisch vor, daß Clients (also Lizenz-Konsumenten-Software) den Nutzernamen des angemeldeten Benutzers sowie den eingetragenen Hostnamen mitsenden. Oft sind diese Hostnamen nicht eindeutig. Im Falle einer Rückfrage durch den Kunden muss das System in der Lage sein diese (für den Betreiber der Lizenzserver ursprünglich irrelevante) Information zu geben um dem Kunden wiederum gemäß seiner Infrastruktur einen verwertbaren Hinweis auf die Konsumierung geben zu können. 13 Zusätzlich sollen weitere Berichte leicht implementiert werden können. Workflow Latenz Die Nutzung des Sniffer-Logfiles kann nicht performant in Echtzeit ausgeführt werden. Um die Fehlerquellen5 möglichst gering zu halten genügt eine Auswertung wie bisher im 24h Rhythmus. Lizenzserver Client Software Server-Prozess Lizenz-Log Ethernet Sniffer Eth-Log Matlab, Intel-Compiler Ergänztes Lizenzlogfile (IP...) Report Datenbank Abbildung 3: Aufbau der Ziel-Architektur (schematisch) 5 Das zu erstellende Logfile basiert auf der Zusammenführung von 2 einzelnen Logfiles. Quelle dieser Logfiles sind mit hoher Frequenz auftretende Ereignisse aus dem Netzwerk. Je häufiger diese beiden Dateien rotiert werden, desto größer wird auch die Wahrscheinlichkeit, daß einzelne Pakete wegen der nicht unbegrenzt genau zeitlich kontrollierbaren Verzögerung der beiden Rotationen verloren gehen, d.h. nicht mehr in den korrekten Dateiblöcken auftauchen und sogar ganz verschwinden. 14 1 STAND DER TECHNIK 1 Stand der Technik 1.1 Lizenzserver Die Lizenzdienste des Rechen- und Kommunikationszentrum der RWTH Aachen basieren hauptsächlich auf der Software FLEXlm der Firma Flexera Soft. 1.1.1 DEBUG Mode Logfile Der Lizenzserver-Daemon wird im DEBUG-Modus betrieben. Auf diese Art wird ein Logfile erzeugt, in dem Uhrzeit, exakter Produktname, Anzahl der Lizenzen, Aktion (Nutzung, Freigabe, Verweigerung) sowie ein Zeitstempel erzeugt wird. Auszug aus dem Logfile (Software: Abaqus): 1 [...] 2 19:49:04 ( ABAQUSLM ) OUT : " parallel " user1@client1 3 19:49:05 ( ABAQUSLM ) OUT : " abaqus " user2@client2 4 19:49:05 ( ABAQUSLM ) OUT : " explicit " user2@client2 5 19:49:05 ( ABAQUSLM ) OUT : " abaqus " user2@client2 6 19:49:05 ( ABAQUSLM ) OUT : " explicit " user2@client2 7 19:49:05 ( ABAQUSLM ) 1315936149/0/6.8 -1/0/500/12 ,22/12/ sta_par /2536/ user1 / 8 19:49:05 ( ABAQUSLM ) OUT : " abaqus " user1@client1 (8 licenses ) (5 licenses ) (5 licenses ) (5 licenses ) (5 licenses ) unknown (12 licenses ) 9 19:49:05 ( ABAQUSLM ) OUT : " standard " user1@client1 (12 licenses ) 10 19:49:05 ( ABAQUSLM ) OUT : " parallel " user1@client1 (8 licenses ) 11 19:49:07 ( ABAQUSLM ) IN : " standard " user1@client1 12 19:49:07 ( ABAQUSLM ) IN : " abaqus " user1@client1 13 19:51:10 ( ABAQUSLM ) DENY : " abaqus " user1@client1 14 [...] (12 licenses ) (12 licenses ) (9 licenses ) 1.1.2 Rotation Die Logfiles des FLEXlm Daemon werde jede Nacht um 23:45h6 rotiert. Erst nach einer Rotation können die Daten des Logfiles für den zurückliegenden Zeitraum ohne Probleme durch den Schreibzugriff durch den Daemon verarbeitet werden. Hieraus ergibt sich eine Verzögerung vom Erhalt der Analysedaten von maximal 24h. 6 Die Systemzeit wird über einen zentralen NTP-Server synchronisiert. 15 1.2 Wireshark Network Sniffer 1 STAND DER TECHNIK 1.2 Wireshark Network Sniffer Jeder Lizenzserverprozess eines Produktes (wie z.B. MATLAB, Simulink, etc) nutzt einen eigenen TCP Kanal7 . Um neben den durch das Lizenzserverprotokoll übermittelten Rechnerdaten an die reale IP Adresse des Rechners der eine Liznez konsumiert hat zu gelangen kann die Information über den Kanal dazu genutzt werden eben diese aus dem mitgeschnittenen Netzwerkverkehr eindeutig zu extrahieren. Für jedes Produkt wird der Kanal manuell durch den Administrator eingestellt. Aus diesem Grund ist es leicht anhand der Portkonfiguration Rückschlüsse auf die verwendete Software zu ziehen. 1.2.1 Dump-/Logfile Eine Verarbeitung der Netzwerkdaten zum Zeitpunkt der Erfassung (Echtzeitverarbeitung) ist mit den eingesetzten Werkzeugen und unter Berücksichtigung der Leistungsfähigkeit des Rechners nicht möglich. Daten des Netzwerkverkehrs werden aus diesem Grund im ersten Schritt vollständig in eine Datei geschrieben. 1.2.2 Rotation und Nachbearbeitung Die Datei mit den Netzwerkdaten wird analog zu den von FLEXlm generierten Logdateien rotiert. Im Anschluß analysiert eine bereits erstellte Software aus den binären Daten die relevanten Informationen und gleicht diese Daten auf Basis einer heuristischen Funktion mit den FLEXlm Logdaten zu einer kombinierten Logdatei ab. Die erzeugte Logdatei gibt nun Aufschluß über die bereits im FLEXlm Format vorliegenden Daten und fügt zusätzlich die IP Adresse des Rechners ein, der die Anfrage zum Lizenzdienst erzeugt hat. 7 Kanäle entsprechen einer Nummer zwischen 1 und 65536. Kommuniziert ein Computersystem über IP so kann ein Kanal nur von einer Anwendung gleichzeitig verwendet werden. 16 1.3 Defizite des Systems 1 STAND DER TECHNIK Ein Auszug aus dieser Datei wird im folgenden dargestellt und erläutert. Die Nutzerund Rechnernamen wurden aus Gründen des Datenschutz ersetzt. 1 / - - UNIXTIME 2 | / - - YYYY - MM - DD_HH - MM - SS 3 | | / - - DNS - NAME 4 | | | / - - Username 5 | | | | / - - Hostname 6 | | | | | / - - SW 7 | | | | | | 8 1317110413:2011 -09 -27 _10 -00 -13: cli -1. inst - x . RWTH - Aachen . DE :u -1 @cli -1: 9 1317110413:2011 -09 -27 _10 -00 -13: cli -1. inst - x . RWTH - Aachen . DE :u -1 @cli -1: INTEL 10 1317110413:2011 -09 -27 _10 -00 -13: cli -1. inst - x . RWTH - Aachen . DE :u -1 @cli -1: rational 11 1317110413:2011 -09 -27 _10 -00 -13: cli -1. inst - x . RWTH - Aachen . DE :u -1 @cli -1: toolworks 12 1317110413:2011 -09 -27 _10 -00 -13: cli -1. inst - x . RWTH - Aachen . DE :u -1 @cli -1: eds_id11 13 1317110413:2011 -09 -27 _10 -00 -13: cli -1. inst - x . RWTH - Aachen . DE :u -1 @cli -1: cdlmd 14 1317110413:2011 -09 -27 _10 -00 -13: cli -1. inst - x . RWTH - Aachen . DE :u -1 @cli -1: eds_id11 15 1317110413:2011 -09 -27 _10 -00 -13: cli -1. inst - x . RWTH - Aachen . DE :u -1 @cli -1: INTEL 16 1317110413:2011 -09 -27 _10 -00 -13: cli -1. inst - x . RWTH - Aachen . DE :u -1 @cli -1: rational 1.3 Defizite des Systems Das implementierte System bietet bisher noch nicht die gewünschte Funktionalität. Die Grundfunktionalitäten wurden hergestellt. Für jeden technischen Teilbereich existieren Lösungen, die rudimentär über Skripte miteinander verknüpft wurden. Eine Automatisierung Aufbereitung der bisherigen Daten zu einer korrekten Wissensbasis hat noch nicht stattgefunden. • Die zur Auswertung und Analyse benötigten Daten liegen in Form von einzelnen Logdateien vor. Abfragen müssen mit Hilfe von Kommandozeilentools gestellt werden und sind bei sehr spezifischen Anfragen sehr umständlich zu generieren bzw. erfordern ein hohes Maß an Shell-Kenntnissen. • Alle Programmabläufe sind skriptgesteuert und verteilen sich über zahlreiche Dateien. Durch die skriptgestützte Entwicklung sind nur wenige Tests entwickelt worden, die die Integrität der Arbeitsweise absichern. • Die durch Dienstunterbrechung (s.o.) beschriebenen Dateninkonsistenzen machen die Auswertung über beliebige Zeiträume unmöglich. 17 2 ANALYSE 2 Analyse 2.1 Software-Recherche Für die Software FLEXlm existieren laut [Wik11] zahlreiche Zusatzmodule zur Echtzeitauswertung der Lizenznutzung. Mit einer Ausnahme sind all diese Produkte kostenpflichtig. Das einzige Open Source Projekt scheint nicht mehr aktiv weiterentwickelt zu werden. Firma/Produkt Open-Source Quelle Aktiv JTB FLEX report nein (freeware) [JTB11] ja OpenIT License Analyzer nein [IT11] ja X-Formation nein [XF11] ja in charge nein [Nov11] ja phpLicenseWatch ja [Sou11] nein Die frei zur Verfügung stehenden Werkzeuge sind nicht in der Lage denselben Grad an Informationen zur Verfügung zu stellen wie die Erweiterung auf Basis des Sniffers, die bereits implementiert ist. Bei den restlichen Werkzeugen ist dies ebenso der Fall. Zudem kommt hinzu daß die Lizenzmodelle eine Weiterentwicklung ausschließen. 2.2 Schnittstelle 2.2.1 ITIL Anforderungen: Floating-Lizenzen Die Unterstützung des Geschäftsprozesses der erbrachten IT-Dienstleistung findet unter folgenden Gesichtspunkten statt: • Dienstqualität - Standen für einen Lizenzdienst stets genügend Lizenzen zur Verfügung oder konnte ein Kunde eine Lizenz nicht nutzen, weil die vorhanden Lizenzen alle gebunden waren? Diese Information ist von großer Bedeutung für eine proaktive Strategie des Dienstleisters. 18 2.3 Datenkonsistenz 2 ANALYSE • Kapazitätsmanagement - Zu viele nicht genutzte Lizenzen verursachen unnötige Kosten wohingegen stets knappe Kontingente eine Schlecht Dienstverfügbarkeit verursachen können. Es ist wichtig Trends in der Nutzung zu erkennen, um Kapazitäten so früh wie möglich anzupassen. • Abrechnung - Die Basis-Software zur Verwaltung von Floating-Lizenzen sieht derzeit nicht vor innerhalb der geschlossenen Organisation in der es angewendet wird, exakt Aufschluß über die Verteilung. 2.2.2 Datenstrukturen Für die Darstellung der Informationen werden die gewonnenen Protokolldaten immer wieder nach unterschiedlichen Gesichtspunkten aggregiert und tabellarisch (oder grafisch) dargestellt. Eine relationale Datenbank eignet sich als Datenstruktur hervorragend um derartige Darstellungen auf einer Datenmenge zu berechnen. Die Struktur ist gleichermaßen leicht erweiterbar wie auch jede erdenkliche Darstellung der Daten mit Hilfe der Abfragesprache SQL modelliert werden kann. 2.2.3 Modell Attribut-Name Attribut-Typ Beschreibung the time Timestamp Zeitpunkt der Operation the op VARCHAR(4) Art der Operation: IN, OUT, DENY, RSET sw VARCHAR(32) Software Beschreibung sw detail VARCHAR(32) Software Beschreibung, Zusatz (Modul) the ipv4 VARCHAR(32) IPv4 Adresse (Abgleich: Sniffer-Logfile) ou VARCHAR(32) Kunde/Organisationseinheit (Hier: IKZ) custom user VARCHAR(64) Benutzername (durch Client übermittelt) custom host VARCHAR(64) Rechnername (durch Client übermittelt) 2.3 Datenkonsistenz Lizenzen, die durch einen Neustart des Serverprozesses aus dem Gedächtnis der Verwaltung entfernt aber dennoch genutzt werden8 führen zu einer falschen Bilanz. 8 Dieser Vorgang ist durchaus legitim, da bei einer temporären Nicht-Verfügbarkeit des Lizenzservers ohne ein derart tolerantes Laufzeitverhalten bereits gestartetete Programme abstürzen könnten. 19 2.3 Datenkonsistenz 2 ANALYSE Das Ziel ist es derart ungültige Informationen aus dem Datenbestand herauszufiltern bzw. die Qualität der Heuristik zur Einschätzung der Lizenznutzung deutlich zu verbessern indem ungültige Transaktionen so gut wie möglich gelöscht werden. 2.3.1 Berücksichtigung des Dienst-Zyklus Ungültige Transaktionen entstehen, wenn der Lizenz-Server-Daemon während des Betriebes unterbrochen oder angehalten wird. Eine Eliminierung der Unterbrechungen ist nicht möglich wenn man mögliche Ursachen (z.B. programmabstürze, wichtige Aktualisierungen, Stromausfall, Hardwaredefekte) in Betracht zieht. Die einzige verlässliche Größe in diesem Zusammenhang wird durch den Zeitstempel im Logfile geliefert, der den Start des Lizenz-Server-Daemon signalisiert (siehe folgendes Listing). 1 [...] 2 19:48:43 ( lmgrd ) Starting vendor daemons ... 3 [...] Diese Information ist der einzige zur Verfügung stehende Indikator für ein Zurücksetzen der Lizenzzählung, um eine falsche Zählung zu vermeiden. Bei der Überführung der Protokolldaten in die Datenbank müssen die betreffenden Datensätze eliminiert bzw. ergänzt werden. Zu diesem Zweck werden die Ereignisse eines beschriebene neustarts des Lizenz-Server-Daemon mit Hilfe einer neuen Transaktion9 mit der der Datenbank abgespeichert. Diese Transaktion (RSET) impliziert für die weitere Verarbeitung der Logdaten also, daß die Lizenzzähler zurückgesetzt werden müssen. Exemplarisch (siehe vorheriges Beispiel unter der Annahme eines Datums vom 31.01.2011) lautet dann der zugehöriger INSERT Befehl für die Datenbank: 1 INSERT INTO lic_log 9 bisher nur IN, OUT und DENY 20 2.3 Datenkonsistenz 2 3 2 ANALYSE ( the_time , the_op , sw , sw_detail , the_ipv4 , ou , custom_user , custom_host ) VALUES 4 ( TIMESTAMP ’2011 -01 -31 19:48:43 ’ , ’ RSET ’ , NULL , NULL , NULL , NULL , NULL , NULL ) 5 ; Im Folgenden wird analysiert, wie ein solcher RESET weiterverarbeitet werden muss um eine korrekte Zählweise der genutzten Lizenz zu ermöglichen. Das Ziel ist in der Datenbank zu einem definierten Zeitpunkt nur noch korrekte (gemäß den zugrundeliegenden Rahmenbedingungen10 ) IN-OUT Tupel zu speichern. Wichtig dabei ist, daß während der Verarbeitung der Daten dieser Zustand nicht immer gewährleistet ist. Auswertungen auf den Daten dürfen also nicht zum Zeitpunkt der Verarbeitung neuer Daten erfolgen sondern müssen zeitlich synchronisiert, also später ausgeführt werden um zu korrekten Ergebnissen zu führen. 2.3.2 Strategie der Korrektur Das Ziel der Korrektur ist die Gewährleistung einer korrekten Anzahl an IN/OUTPaaren zu einem Benutzer-Rechner-Software Tupel in einem Dienst-Interval 11 existiert. An dieser Stelle können verschiedene Situationen eintreten, die unterschiedliche Lösungsstrategien implizieren. Fall 1: Anforderungout → Server/Crash/Restart → Rückgabe während Downtime In diesem Fall fehlen für (Benutzer × Rechner/IP × Software) IN Operationen. Lösung: → Finde Datensätze vor Crash-Zeitpunkt mit fehlenden OUT Folgesätzen → Erzeuge Datensätze mit OUT Operationen für alle gefundenen verwaisten Einträge (Zeitstempel Crash-Zeitpunkt) 10 11 Dazu zählt z.B. die durch einen Ausfall entstehende Ungenauigkeit, daß beispielsweise ein DENY während einer Nichtverfügbarkeit gar nicht erfasst werden kann (u.v.m.). Ein Dienst-Interval ist das zeitliche Interval zwischen 2 Zeitpunkten der Nichtverfügbarkeit des Lizenzservers. 21 2.3 Datenkonsistenz 2 ANALYSE Fall 2: Anforderungout → Server/Crash/Restart → Verlängerungout → Rückgabein In diesem Fall werden bei der Verlängerung erneut OUT Operationen registriert. Die IN Operationen vor dem Crash-Zeitpunkt fehlen auch. Lösung: → Lösung aus Fall 1 deckt auch hier alles ab Fall 3: Anforderungout → Server/Crash/Restart → Rückgabein In diesem Fall kann keine Rückgabe protokolliert werden. Es fehlen also die zugehörigen IN Operationen. Lösung: → Lösung aus Fall 1 deckt auch hier alles ab Die Betrachtung der Zeitintervalle der Verfügbarkeitsphasen (anstatt einer Gesamtbetrachtung) führt zu einer geringeneren Anzahl von notwendigen Korrekturen an den Datensätzen (vgl. Fall 1-3 ohne Berücksichtigung der zeitlichen Intervalle). 22 2.4 Auswertung 2 ANALYSE 2.4 Auswertung 2.4.1 Betriebsunterbrechungen Für eine Überwachung der Dienstqualität ist eine Übersicht über alle Unterbrechungen der Lizenzdienste besonders interessant. Alle derartigen Unterbrechungen können an hand der Neustarts des Lizenz-Server-Daemon erkannt werden. Das SQL Kommando für eine direkte Auflistung aller Zeitpunkte zu dem der LizenzServer-Daemon neugestartet wurde lautet für den Monat Januar 2011 : 1 SELECT 2 3 the_time " Ausfall " FROM 4 5 lic_log WHERE 6 the_op = ’ RSET ’ 7 AND 8 the_time 9 BETWEEN 10 TIMESTAMP ’2011 -01 -01 00:00:00 ’ 11 AND 12 TIMESTAMP ’2011 -02 -01 00:00:00 ’ 13 ORDER BY " Ausfall " 14 ; 2.4.2 Abrechnung (Accounting) Die Abrechnung von Lizenznutzung kann nach sehr verschiedenen Gesichtspunkten entwickelt werden. Interessant für eine Kostenverteilung am Rechen- und Kommunikationszentrum der RWTH Aachen ist die Nutzung von Lizenzen über einen Zeitraum pro Institut der Hochschule. Eines der denkbar einfachsten Diagramme stellt zu diesem Zweck ein Kuchendiagramm mit der prozentualen Aufteilung der Gesamtnutzung einer Lizenz für alle beteiligten Institute dar. Anhand dieser Information kann überprüft werden, ob die Finanzierung durch die jewieligen Einrichtungen prinzipiell richtig dimensioniert waren oder angepaßt werden müssen um der Realität zu entsprechen. Sei T1 , T2 zwei aufeinanderfolgende Zeitpunkte, die einen Dienstzyklus beschrei- 23 2.4 Auswertung 2 ANALYSE ben. IKZ sei die Institutskennziffer, die den Nutzer eindeutig einer Einrichtung der Hochschule zuordnet (Datenbank: Spalte ou) und SWNAME der name des eingesetzten Softwareprodukts. Die folgende Abfrage ergibt für das Zeitinterval alle Lizenzoperationen, die zur Aufsummierung der Nutzung notwendig sind (Platzhalter in <...>): 1 SELECT 2 the_op , 3 4 the_time FROM 5 6 lic_log WHERE 7 the_op IN ( ’ IN ’ , ’OUT ’) 8 AND 9 ou = < IKZ > 10 AND 11 sw = < SWNAME > 12 AND 13 the_time 14 BETWEEN 15 <T1 > 16 AND 17 <T2 > 18 ORDER BY the_time 19 ; Beispielhaft könnte eine derart konkrete Abfrage folgendes Ergebnis liefern: 1 + - - - - - - - -+ - - - - - - - - - - - - - - - - - - - - -+ 2 | the_op | the_time 3 + - - - - - - - -+ - - - - - - - - - - - - - - - - - - - - -+ 4 | OUT | 2011 -12 -14 08:00:01 | 5 | IN | 2011 -12 -14 08:35:00 | 6 | OUT | 2011 -12 -14 08:36:00 | 7 | OUT | 2011 -12 -14 08:36:00 | 8 | IN | 2011 -12 -14 08:38:00 | 9 | IN | 2011 -12 -14 08:39:00 | | 10 + - - - - - - - -+ - - - - - - - - - - - - - - - - - - - - -+ 11 8 rows in set (0.00 sec ) Um die Lizenznutzung zu bestimmen müssen nun die Lizenz-Zeiten gemäß der Anzahl über die Zeit aufsummiert werden. 24 2.4 Auswertung Zeitpunkt Lizenzen 2 ANALYSE P t 08:00:00 0 0 08:00:01 1 0 08:35:00 0 (1 · 34m59s) 08:36:00 2 (1 · 34m59s) 08:38:00 1 (1 · 34m59s) + (2 · 2m) 08:39:00 0 (1 · 34m59s) + (2 · 2m) + (1 · 1m) Die auf diese Weise ermittelten Zeiten können zur Gesamtzeit einer Lizenz in Relation für den jeweiligen Kunden gesetzt werden. Beispiel: Kunde/IKZ Nutzung (abs.) Nutzung (rel.) 022000 128:00:00 50% 022001 64:00:00 25% 022002 64:00:00 25% 2.4.3 Qualitätssicherung Sei T1 , T2 zwei aufeinanderfolgende Zeitpunkte, die einen Dienstzyklus beschreiben. Die folgende Abfrage ergibt für das Zeitinterval eine Auflisting der Anzahl fehlgeschlagener Lizenzanfragen pro Kunde und Software. 1 SELECT 2 ou , 3 sw , 4 5 6 7 count (*) FROM lic_log WHERE 8 the_op = ’ DENY ’ 9 AND 10 the_time 11 BETWEEN 12 13 14 <T1 > AND <T2 > 25 2.4 Auswertung 15 2 ANALYSE GROUP BY 16 ou , 17 sw 18 ORDER BY the_time 19 ; 26 3 ZUSAMMENFASSUNG 3 Zusammenfassung 3.1 Fazit Überwachung und Analyse von Dienstleistungen stellen einen wichtigen Schritt in Richtung proaktives IT Service Management dar. Am Beispiel der Lizenzdienste des Rechen- und Kommunikationszentrum der RWTH Aachen hat sich gezeigt, daß durch Erweiterungen bestehender Infrastruktur bzgl. ihrer Transparenz ein Schritt in die richtige Richtung unternommen wurde. Der relativ geringe Entwicklungsaufwand im Bereich der Analyse der Lizenzdienste führt dazu die Qualität einer bisher als Blackbox zu betrachtende zentralen Dienstleistung messbar zu gestalten. 3.2 Ausblick Die Analyse der Nutzung von Softwarelizenzen am Rechen- und Kommunikationszentrum der RWTH Aachen steht sicherlich noch am Anfang einer möglichen Entwicklung. Durch die Einführung eines ITSM nach ITIL ergeben sich zahlreiche Stellen, an denen Informationen aus dem Betrieb benötigt werden, für die es bisher noch keine Quellen gibt. 3.2.1 Erweiterung der Produktunterstützung Natürlich ist es wünschenswert, daß alle eingesetzten Lizenz-Manager-Produkte des Betriebes in der Lage sind Daten in die Analyse einzuliefern. Zu diesem Zweck wurde die Schnittstelle (siehe Abschnitt 2.2.3, S. 19) entwickelt und definiert. 3.2.2 Integration in den Batchbetrieb Das Rechen- und Kommunikationszentrum der RWTH Aachen betreibt einen Hochleistungsrechner bestehend aus mehreren tausend Einzelsystemen, die miteinander vernetzt sind. Die Programmsteuerung auf diesen Systemen läuft zentral organi- 27 3.2 Ausblick 3 ZUSAMMENFASSUNG siert über ein sogenanntes Batchsystem12 . An dieser Stelle ist es äußerst interessant heuristisch bestimmte Informationen über die zeitliche Verfügbarkeit von Lizenzen automatisiert in den Planungsprozess der Ablaufsteuerung miteinfließen zu lassen. Ein geplanter Programmstart, der durch eine nicht verfügbare Lizenz abgebrochen wird ist einerseits aus der Sicht eines wartenden Nutzers ärgerlich, aber auch die Strategie des planenden Batch-Controllers eine unberechenbare Größe, die den Ablauf erheblich stören kann. 12 Ein Batchsystem dient dazu die Programmstarts auf vielen Rechnern automatisch, also ohne Interaktion des Benutzers, zu steuern. Nutzer fordern für den Lauf eines Programmes sogenannte Resourcen an (Arbeitsspeicher, Anzahl der Rechenkerne, etc.) so daß der Batch-Controller eine effiziente Verteilung auf alle vorhanden Resourcen vornehmen kann, die aus Sicht des Benutzers nicht mehr zu überblicken wäre. Ziel ist es die vorhandenen Resourcen möglichst effizient zu nutzen. Oftmals ist eine effiziente Nutzung nicht intuitiv bestimmbar. 28 Literatur Literatur Literatur [IT11] Open IT. License Analyzer Produkt-Homepage. Webseite, 2011. http: //www.openit.com/products/licenseanalyzer.html. [JTB11] JTB. JTB FLEX Report Produkt-Homepage. Webseite, 2011. http: //www.jtbworld.com/jtbflexreport/jtbflexreportlt.htm. [Nov11] NovaTec. in charge Produkt-Homepage. Webseite, 2011. http://www. incharge.eu/. [RWT08] ITIL Projektgruppe RWTH. IT Servicemanagement am Rechen- und Kommunikationszentrum der RWTH Aachen. Webseite, 2008. http: //www.rz.rwth-aachen.de/go/id/tdu/. [Sou11] Sourceforge. PHP License Watch Produkt-Homepage. Webseite, 2011. http://phplicensewatch.sourceforge.net/. [Wik11] Enzoklopedia Wikipedia. FLEXlm Lizenzmanager. Webseite, 2011. http://de.wikipedia.org/wiki/FLEXlm. [XF11] X-Formation. X-Formation Produkt-Homepage. Webseite, 2011. http: //www.x-formation.com/. 29 Anhang 30 3.3 SQL Table Creation 1 DROP TABLE IF EXISTS lic_log ; 2 CREATE TABLE lic_log ( 3 the_time TIMESTAMP , 4 the_op VARCHAR (4) , 5 sw VARCHAR (128) , 6 sw_detail VARCHAR (128) , 7 the_ipv4 VARCHAR (15) , 8 ou VARCHAR (128) , 9 custom_user VARCHAR (128) , 10 11 custom_host VARCHAR (128) ); 3.4 SQL Test-Daten 1 -- Testdaten 2 3 DELETE FROM lic_log ; 4 5 INSERT INTO lic_log 6 7 ( the_time , the_op , sw , sw_detail , the_ipv4 , ou , custom_user , custom_host ) VALUES 8 ( TIMESTAMP ’2011 -12 -14 08:00:01 ’ , ’OUT ’ , ’SW -A ’ , ’ COMPONENT -A ’ , ’137.226.0.0 ’ , ’022000 ’ , ’ test - user ’ , ’ test - cluster ’) , 9 ( TIMESTAMP ’2011 -12 -14 08:35:00 ’ , ’IN ’ , ’SW -A ’ , ’ COMPONENT -A ’ , ’137.226.0.0 ’ , ’022000 ’ , ’ test - user ’ , ’ test - cluster ’) , 10 ( TIMESTAMP ’2011 -12 -14 08:36:00 ’ , ’OUT ’ , ’SW -A ’ , ’ COMPONENT -A ’ , ’137.226.0.0 ’ , ’022000 ’ , ’ test - user ’ , ’ test - cluster ’) , 11 ( TIMESTAMP ’2011 -12 -14 08:36:00 ’ , ’OUT ’ , ’SW -A ’ , ’ COMPONENT -A ’ , 12 ( TIMESTAMP ’2011 -12 -14 08:39:00 ’ , ’ RSET ’ , NULL , 13 ( TIMESTAMP ’2011 -12 -14 12:40:00 ’ , ’OUT ’ , ’SW -A ’ , ’ COMPONENT -A ’ , 14 ( TIMESTAMP ’2011 -12 -14 12:42:02 ’ , ’IN ’ , 15 ( TIMESTAMP ’2011 -12 -14 16:00:00 ’ , ’ RSET ’ , NULL , ’137.226.0.0 ’ , ’022000 ’ , ’ test - user ’ , ’ test - cluster ’) , NULL , NULL , NULL , NULL , NULL ) , ’137.226.0.0 ’ , ’022000 ’ , ’ test - user ’ , ’ test - cluster ’) , ’SW -A ’ , ’ COMPONENT -A ’ , ’137.226.0.0 ’ , ’022000 ’ , ’ test - user ’ , ’ test - cluster ’) , NULL , 16 NULL , NULL , NULL , NULL ) , ( TIMESTAMP ’2011 -12 -15 08:40:00 ’ , ’OUT ’ , ’SW -A ’ , ’ COMPONENT -A ’ , ’137.226.0.0 ’ , ’022000 ’ , ’ test - user ’ , ’ test - cluster ’) , 17 ( TIMESTAMP ’2011 -12 -15 08:40:02 ’ , ’IN ’ , ’SW -A ’ , ’ COMPONENT -A ’ , ’137.226.0.0 ’ , ’022000 ’ , ’ test - user ’ , ’ test - cluster ’) , 18 ( TIMESTAMP ’2011 -01 -08 06:00:00 ’ , ’ RSET ’ , NULL , NULL , 19 NULL , NULL ) ; 20 21 SELECT * FROM lic_log ; 31 NULL , NULL , 22 23 SELECT * FROM lic_log WHERE the_op = ’ RSET ’ AND the_time >= TIMESTAMP ’2011 -12 -14 00:00:00 ’ AND the_time < TIMESTAMP ’2011 -12 -15 00:00:00 ’; 24 25 SELECT * FROM lic_log WHERE the_time >= TIMESTAMP ’2011 -12 -14 00:00:00 ’ AND the_time < TIMESTAMP ’2011 -12 -15 00:00:00 ’; 32