-
Die Erfindung betrifft ein Verfahren, eine Überwachungsvorrichtung, ein System sowie ein Computerprogrammprodukt zur Überwachung der Auslastung einer Computer-implementierten Anwendung, die auf einer Servervorrichtung, insbesondere auf einer verteilten, gemeinsam genutzten Servervorrichtung, auch als Cloud bezeichnet, ausgeführt wird, um insbesondere eine durch Vielanfragen verbreitete Verweigerung eines Dienstes zu erkennen. Ein solcher insbesondere von mehreren Angreifern verteilter ausgeführte Angriff wird häufig auch als Distributed Denial of Service (DDoS)-Angriff bezeichnet.
-
Herkömmlicherweise werden solche durch Vielanfragen verbreitete Dienstverweigerungsangriffe durch eine Überwachung der Bandbreite und des Paketdurchsatzes in zustandslos arbeitenden Geräten, wie beispielsweise Routern, oder durch eine Überwachung der Anzahl der Verbindungen pro Sekunde und der maximalen Anzahl paralleler Verbindungen bei zustandsbasiert arbeitenden Geräten erkannt. Es wird also eine Überwachung auf Netzwerkebene gemäß einem OSI-Referenzmodell bzw. auf einer Infrastrukturebene, die eine Kommunikation mit Netzwerkexternen Managementkomponente umfasst, durchgeführt.
-
Das offene Systemverbindungs-Referenzmodell, kurz OSI-Referenzmodell, wurde durch die Internationale Telekommunikationsunion (ITU-T) sowie die Internationale Organisation für Standardisierung (ISO) als Standard veröffentlicht und beschreibt ein Modell für Netzprotokolle als Schichtarchitektur. Auf einer Applikationsebene des OSI-Referenzmodells, werden Signalisierungsnachrichten zwischen dem Nutzer der Anwendung, auch als Applikationsklient bezeichnet, und der bereitstellenden Einheit einer Anwendung, auch als Applikationsserver bezeichnet, übermittelt, die eine Anwendung im Applikationsserver aktivieren beziehungsweise den Abschluss einer Anwendung dem Applikationsklienten mitteilen. Auf Applikationsebene wird somit eine Ausführung der betrachteten Anwendung veranlasst beziehungsweise beendet.
-
Eine solche Signalisierungsnachricht zum Anfordern einer Ausführung der Anwendung wird im Weiteren als eine Anwendungsanforderungsnachricht bezeichnet. Eine solche Signalisierungsnachricht zum Abschluss einer Ausführung der Anwendung wird im Weiteren als eine Anwendungsabschlussnachricht bezeichnet. Die Bezeichnung „Dienst“ und „Anwendung“ bezeichnen eine Computer-implementierte Applikation und werden als Synonym verwendet.
-
Auf Applikationsebene ist es schwieriger festzulegen, wann eine Überlast eines Dienstes vorliegt, so dass die Dienstqualität sinkt oder der Dienst gar nicht mehr erreichbar ist beziehungsweise der Dienst dem Client durch den Applikationsserver nicht mehr bereitgestellt werden kann. Besonders schwierig ist es Abhängigkeiten zwischen dem aufgerufenen so genannten Frontend-Service, der viele beispielsweise Ausführungsaktivierungen pro Sekunde abarbeiten kann und nachgelagerten Diensten, so genannten Backend-Services, bei denen die Anzahl der möglichen Anwendungen pro Sekunde geringer sein kann, oder abhängig von der Komplexität des Dienstes stark schwankt, bei der Lastüberwachung mit einzubeziehen. Beispiele für nachgelagerte Backend-Dienste sind beispielsweise eine Authentisierung oder Datenbankanfragen, die nach dem Aktivieren einer Ausführung der Anwendung ausgeführt werden.
-
Üblicherweise werden Lastparameter von beispielsweise Routern oder Firewalls, statisch eingestellt und streng überwacht. Eine Mitigation von Lastspitzen wird üblicherweise erst auf Lastverteilern, sogenannten Loadbalancern, und Reverse Proxies ermöglicht, da diese dediziert für eine Anwendung bzw. eine Gruppe von Anwendungen „zuständig“ sind. Lastverteiler auf Anwendungsebene sind üblicherweise vorkonfiguriert, um bei Lastspitzen Anfragen auf weitere Ressourcen umzuleiten. Wird die Anwendung durch Servervorrichtungen einer Cloud bereitgestellt, wird eine Lastverteilung so vorkonfiguriert, dass neuen Vorrichtungen, häufig in Form weiterer Virtueller Maschinen, zur Bereitstellung der Applikation dynamisch erzeugt werden. Damit wird die Verfügbarkeit der Anwendung gesichert, allerdings kann ein Angreifer in dieser Weise hohe Kosten für den Anwendungsbesitzer verursachen.
-
Da auch solche Lastverteiler den Verkehr auf Vermittlungs- oder Transportschichtebene, also Layer 3 oder Layer 4 des OSI-Modells, überwachen, wird eine Überlast nicht erkannt, beispielsweise aufgrund von nachgelagerten rechenintensiven Anwendungen.
-
Es ist somit die Aufgabe der vorliegenden Erfindung die durch eine Anwendung verursachte Auslastung einer Servervorrichtung, insbesondere eine auf eine Mehrzahl von Servervorrichtungen verteilte Last, frühzeitig erkennen und insbesondere die Ursache für die Last ermitteln zu können um basierend darauf gezielt Maßnahmen ergreifen zu können.
-
Die Aufgabe wird durch die in den unabhängigen Ansprüchen beschriebenen Maßnahmen gelöst. In den Unteransprüchen sind vorteilhafte Weiterbildungen der Erfindungen dargestellt.
-
Gemäß einem ersten Aspekt betrifft die Erfindung ein Verfahren zur Überwachung der Auslastung einer Computer-implementierten Anwendung, die auf einer Servervorrichtung ausgeführt wird. Es umfasst ein
- - Detektieren einer Aktivierung einer Ausführung der Anwendung, wenn eine Anwendungsanforderungsnachricht auf Anwendungsebene entsprechend einem OSI Referenzmodell, die die Anwendung in der Servervorrichtung aktiviert, in der Servervorrichtung empfangen wird, und
Detektieren eines Abschlusses der Ausführung der Anwendung, wenn eine Anwendungsabschlussnachricht auf Anwendungsebene entsprechend einem OSI Referenzmodell, die die Anwendung in der Servervorrichtung beendet, von der Servervorrichtung ausgegeben wird,
- - Ermitteln einer Anzahl von parallel ausgeführten Ausführungen der Anwendung durch
- a) Inkrementieren eines Anwendungszählers, wenn eine Anwendungsanforderungsnachricht detektiert wurde und
- b) Dekrementieren des Anwendungszählers, wenn eine Anwendungsabschlussnachricht in der Servervorrichtung beendet, detektiert wurde;
- - Detektieren jeweils ausgeführter weiterer Transaktionen mindestens einer weiteren Transaktionsart, die nach einer Anwendungsanforderungsnachricht und vor einer Anwendungsabschlussnachricht aktiviert werden,
- - Ermitteln einer Anzahl von parallel ausgeführten weiteren Transaktionen mindestens eines weiteren Transaktionstyps, die während der Ausführung durchgeführt werden, mittels eines weiteren Transaktionstypzählers und
- - Bereitstellen des aktuellen Anwendungszählerwertes und des mindestens einen aktuellen Transaktionstypzählerwertes an eine Auswertevorrichtung.
-
Eine Ausführung einer Anwendung wird somit durch eine Anwendungsanforderungsnachricht aktiviert und durch eine Anwendungsabschlussnachricht beendet. Die Anwendungsanforderungsnachricht und Anwendungsabschlussnachricht sind Signalisierungsnachrichten der Applikationsschicht gemäß dem OSI-Referenzmodell.
-
Die Anwendung wird auf einer Servervorrichtung bereitgestellt. Eine Anwendung umfasst üblicherweise mindestens eine weitere Transaktion, die während einer Ausführung auf der Servervorrichtung oder mindestens einer mit der Servervorrichtung verbundenen weiteren Vorrichtung, durchgeführt wird. Eine weitere Vorrichtung ist beispielsweise eine Datenbank-Vorrichtung. Eine weitere Transaktion ist beispielsweise eine Datenbankabfrage oder eine Authentisierungsprozedur.
-
Dies hat den Vorteil, dass die genaue Auslastung einer Anwendung anhand der aktuell ausgeführten Ausführungen und weiteren Transaktionen ermittelt und protokolliert wird. Eine Ausführung einer Anwendung bezeichnet eine aktive Ausführung einer bestimmten Anwendung.
Dabei werden auch während der Ausführung der Anwendung angestoßene und ablaufende Transaktionen von parallel ausgeführten weiteren Transaktionsarten über einen separaten, dem weiteren Transaktionstyp zugeordneten Zähler erfasst. Weitere Transaktionen sind dabei insbesondere Transaktionen, die zur Bereitstellung der Anwendung ausgeführt werden müssen. Somit wird bereits auf Anwendungsebene die Auslastung der Servervorrichtung und weiterer Vorrichtungen erfasst. Diese Lastinformation auf Anwendungsebene kann zusammen beispielsweise mit einer auf Netzwerk- oder Transportebene gemessenen Lastinformation korreliert werden. Somit können in einem Validierungsprozess die ermittelten Zählerwerte permanent ohne eine Überprüfung eines sonstigen Kriteriums zur beispielsweise Überwachung oder Protokollierung übertragen werden. Somit können auch zielgerichtet Maßnahmen zur Lastabwehr an die vorliegende Situation angepasst und eingeleitet werden. Der Ausdruck „parallel“ wird dabei als zeitliche Angabe verwendet und bezeichnet gleichzeitig ausgeführte weitere Anwendungen.
-
Eine Ausführung kann dabei beispielsweise durch eine Anwendungssanforderungsnachricht erkannt und das Ende einer Anwendung durch eine Anwendungsabschlussnachricht erkannt werden. Eine Anwendungsanforderungsnachricht kann beispielsweise das Anfordern einer Ressource aus dem Internet durch die Nachricht „www.info-Applikationl.org“ sein. Die Anwendungsabschlussnachricht kann beispielsweise eine Übertragung der angeforderten Ressource oder eine abschließende „OK“-Nachricht sein. Weitere Transaktionen, die nach einer solchen Anwendungsanforderungsnachricht durch den Dienst aufgerufen werden, sind beispielsweise eine Nachricht an einen Namensserver zur Ermittlung einer routebaren Serveradresse, oder eine Authentisierungsanforderung zur Authentisierung des Nutzers der Anwendung.
-
Eine Ausführung wird in der Servervorrichtung detektiert. Eine Transaktion eines weiteren Transaktionstyps wird in der Servervorrichtung oder einer weiteren Vorrichtung detektiert. Das Ermitteln der Anzahl von Ausführungen bzw. der Transaktionen kann in der gleichen Servervorrichtung aufgeführt werden. Die Information der detektierten Ausführung bzw. der Transaktionen kann aber auch an eine von der Servervorrichtung unterschiedliche weitere Vorrichtung übermittelt werden. Ein in der Vorrichtung angeordneter Zähler wird bei Empfang der Information inkrementiert bzw. dekrementiert.
-
In einer vorteilhaften Ausführungsform werden der Empfangszeitpunkt und/oder die Dauer einer detektierten Ausführung der Anwendung oder einer weiteren Transaktion mindestens einer weiteren Transaktionsart ermittelt und bereitgestellt.
-
Dies erlaubt eine detaillierte Analyse der aktuellen Last durch die Anwendung und trägt somit zu einer zielgerichteten und ursachenbezogenen Verständnis und Abwehr der Last bei.
-
In einer vorteilhaften Ausführungsform wird abhängig von den parallel vorliegenden Ausführungen der Anwendung oder weiterer Transaktionen in einer vorgegebenen Zeiteinheit eine Steigerungsrate der Anzahl von parallel vorliegenden Ausführungen beziehungsweise eine Steigerungsrate der Anzahl von parallel vorliegenden weiteren Transaktionen ermittelt werden.
-
Eine solche Steigerungsrate ist ein signifikantes Indiz für die Beurteilung der aktuellen Last, die durch die Anwendung erzeugt wird.
-
Die Steigerungsrate von parallelen Ausführungen und Transaktionen ist ein aussagekräftiges Maß für die Lastentwicklung und ist somit ein frühzeitiges Indiz für eine zukünftige Lastsituation.
-
In einer vorteilhaften Ausführungsform umfasst das Verfahren des Weiteren die Verfahrensschritte: Vergleichen des Anwendungszählerwertes, des Transaktionstypzählerwertes und der jeweils entsprechend ermittelten Steigerungsrate mit einem jeweils konfigurierbaren Anwendungszählermaximalwert, einen Transaktionstypzählermaximalwert und einem jeweiligen Steigerungsmaximalwert und Bereitstellen einer Meldung, wenn der Anwendungszählerwert den Anwendungszählermaximalwert und/oder der Transaktionstypzähler den Transaktionstypzählermaximalwert und/oder jeweils eine Steigerungsrate einen Steigerungsmaximalwert überschreitet.
-
Durch die Überprüfung der aktuellen Zählerwerte mit den konfigurierbaren Maximalwerten der Zähler können zeitnah mögliche Überlastsituation erkannt werden.
-
In einer vorteilhaften Ausführungsform werden der Anwendungszählermaximalwert und/oder Transaktionstypenzählermaximalwert und/oder der Steigerungsmaximalwert durch jeweils einen automatisch ausgeführten Lasttest an der Servervorrichtung ermittelt.
-
Ein solcher automatisch ausgeführter Lasttest könnte beispielsweise in zeitlich vorgegebenen Abständen oder durch das Empfangen einer Meldung aktiviert werden.
-
In einer vorteilhaften Ausführungsform werden der Anwendungszählermaximalwert und/oder der Transaktionstypzählermaximalwert und/oder der Steigerungsmaximalwert durch zeitlich vorangehend ausgegebene Anwendungszählerwerte und/oder Transaktionstypenzählerwerte und/oder Steigerungswerte ermittelt werden.
-
Vorteilhafterweise werden durch die Verwendung der ermittelten Zählerwerte keine neuen zusätzlichen Lasttests benötigt und somit Prozessorkapazität und Performance der Servervorrichtung optimiert.
-
In einer vorteilhaften Ausführungsform werden die bereitgestellten Werte, insbesondere der aktuelle Anwendungszählerwert, der aktuelle Transaktionstypzählerwert, der Empfangszeitpunkt und/oder die Dauer mindestens einer der detektierten Ausführungen der Anwendung oder einer weiteren Transaktion an eine Auswertevorrichtung übermittelt.
-
Insbesondere kann die Auswertevorrichtung eine Logging-Vorrichtung sein, die zusätzlich zu überwachten und gespeicherten Nachrichten die Zählerwerte der Servervorrichtung speichert. Insbesondere können die dort gesammelten Zählerwerte für eine weitere Analyse und eine Weiterverarbeitung gesammelt und bereitgestellt werden.
-
In einer vorteilhaften Ausführungsform werden die bereitgestellten Werte durch maschinelles Lernen ausgewertet, insbesondere wird eine Anomalieerkennung durchgeführt, und bei einer erkannten Anomalie eine Meldung bereitgestellt.
-
Dies hat den Vorteil, dass die Anwendungszählerwerte, die Transaktionstypzähler sowie die zu den Ausführungen und Transaktionen zusätzlich ermittelten Parameter zur weiteren Analyse verwendet werden können. Durch maschinelles Lernen, insbesondere eine Anomalieerkennung können unübliche Zählerwertverläufe erkannt und somit frühzeitig mögliche Fehlverhalten oder auch Angriffe erkannt werden, insbesondere bevor die Qualität der Anwendung oder die Erreichbarkeit abnimmt. Nach einer Anlernphase können solche maschinellen Lernverfahren auch Prognosen für das Lastverhalten zu einem in der Zukunft liegenden Zeitpunkt oder Zeitraum erstellen.
-
Ein zweiter Aspekt der Erfindung betrifft eine Überwachungsvorrichtung zur Überwachung der Auslastung einer Computer-implementierten Anwendung, die auf einer Servervorrichtung ausgeführt wird, und die derart ausgebildet ist, dass vorbeschriebene Verfahren auszuführen, umfassend - eine erste Detektionseinheit, die derart ausgebildet, eine Aktivierung einer Ausführung der Anwendung zu detektieren, wenn eine Anwendungsanforderungsnachricht auf Anwendungsebene entsprechend einem OSI Referenzmodell, die die Anwendung in der Servervorrichtung aktiviert, in der Servervorrichtung empfangen wird, und
einen Abschluss der Ausführung der Anwendung zu detektieren, wenn eine Anwendungsabschlussnachricht auf Anwendungsebene entsprechend einem OSI Referenzmodell, die die Anwendung in der Servervorrichtung beendet, von der Servervorrichtung ausgegeben wird,
- - eine erste Zählereinheit, die derart ausgebildet ist, eine Anzahl von parallel ausgeführten Ausführungen der Anwendung zu ermitteln durch
- a) Inkrementieren eines Anwendungszählers, wenn eine Anwendungsanforderungsnachricht detektiert wurde und
- b) Dekrementieren des Anwendungszählers, wenn eine Anwendungsabschlussnachricht in der Servervorrichtung beendet, detektiert wurde;
- - eine zweite Detektionseinheit, die derart ausgebildet ist jeweils eine ausgeführte weitere Transaktin mindestens einer weiteren Transaktionsart, die während der Ausführung durchgeführt werden, zu detektieren,
- - eine zweite Zählereinheit, die derart ausgebildet ist, eine Anzahl von parallel ausgeführten weiteren Transaktionen (T) mindestens eines weiteren Transaktionstyps, die während der Ausführung durchgeführt werden, mittels eines weiteren Transaktionstypzählers zu ermitteln; und
- - eine Bereitstellungseinheit, die derart ausgebildet ist, den aktuellen Anwendungszählerwertes und den mindestens einen aktuellen Transaktionstypzählerwert an eine Auswertevorrichtung bereitzustellen.
-
Eine solche Vorrichtung kann als eigenständige Hardware oder als Software-technische Funktion ausgebildet sein, die zumindest teilweise in der Servervorrichtung angeordnet ist bzw. in der Servervorrichtung abläuft. Bei einer Softwaretechnischen Ausbildung kann die Überwachungsvorrichtung in einer geteilten Bibliothek gespeichert und von mehreren Servervorrichtungen aus zugreifbar, das heißt herunterladbar und aktivierbar, sein.
-
In einer vorteilhaften Ausführungsform umfasst die Überwachungsvorrichtung eine Überprüfungseinheit, die derart ausgebildet ist, einen Anwendungszählerwert, einen Transaktionstypzählerwert und eine jeweils ermittelte Steigerungsrate mit einem jeweils konfigurierbaren Anwendungszählermaximalwert, einem Transaktionstypzählermaximalwert und einem jeweiligen Steigerungsmaximalwert zu vergleichen und eine Meldung bereitzustellen, wenn der Anwendungszählerwert den Anwendungszählermaximalwert und/oder der Transaktionstypzählermaximalwert und einem jeweiligen Steigerungsmaximalwert zu vergleichen und eine Meldung bereitzustellen, wenn der Anwendungszählerwert den Anwendungszählermaximalwert und/oder der Transaktionstypzähler den Transaktionstypzählermaximalwert und/oder jeweils eine Steigerungsrate einen Steigerungsmaximalwert überschreitet.
-
Durch die Überprüfungseinheit kann in Echtzeit die Auslastung einer Anwendung, die auf einer insbesondere verteilten Servervorrichtung ausgebildet ist, ermittelt und ausgegeben werden. Durch die Ausgabe beziehungsweise das Bereitstellen der Auslastungskennzahlen, die durch die Zählerwerte gegeben sind, können anormale oder verdächtige Auslastungswerte frühzeitig erkannt und Maßnahmen zur Abwehr beziehungsweise zur Aufrechterhaltung der Anwendungsbereitstellung ausgelöst werden. Insbesondere kann die Überwachungsvorrichtung durch eine auf einer Servervorrichtung ablaufenden Anwendung aufgerufen und aktiviert werden.
-
Ein dritter Aspekt der Erfindung betrifft ein System zur Überwachung der Auslastung einer Computer-implementierten Anwendung, die auf einer Servervorrichtung ausgeführt wird, umfassend mindestens eine Servervorrichtung, mindestens eine Überwachungsvorrichtung und eine Auswertevorrichtung, die derart ausgebildet sind, das beschriebene Verfahren auszuführen.
-
Ein solches System kann durch die Überwachungsvorrichtung einen Regelkreis zur Lastauswertung, Lasterkennung und Lastabwehr implementieren und somit eine verbesserte Verfügbarkeit und eine verbesserte Qualität einer Anwendung ermöglichen.
-
In einer vorteilhaften Ausführungsform wird die Überwachungsvorrichtung getrennt von der Servervorrichtung verwaltet.
-
Beispielsweise ist die Überwachungsvorrichtung auf einer Betriebseinheit der Servervorrichtung ausgebildet, über die beispielsweise ein Server abgeschaltet oder auch aktiviert werden kann. Dies stellt sicher, dass eine Servervorrichtung, die beispielsweise aus Überlast abgeschaltet wird, dennoch die Zählerwerte ausgeben kann. Somit bleiben die Lastwerte einer Servervorrichtung der Anwendung auch im Fehlerfall lange verfügbar.
-
In einer vorteilhaften Ausführungsform ist zumindest eine Überwachungsvorrichtung derart ausgebildet, eine Registrierungsnachricht mindestens einer weiteren Anwendung, die zur Durchführung der Anwendung benötigt wird, zu empfangen und die bereitgestellten Zählerwerte der Anwendung und bereitgestellte Zählerwerte der mindestens einen registrierten weiteren Anwendung zu empfangen und gemeinsam auszuwerten und eine Meldung einer Auswertevorrichtung bereitzustellen, wenn mindestens einer der Zählerwerte einen entsprechenden Zählermaximalwert überschreitet und/oder eine Steigerungsrate einen Steigerungsmaximalwert überschreitet und eine Anpassungsvorrichtung, die derart ausgebildet ist, abhängig von einer von der Auswertevorrichtung empfangenen Meldung mindestens eine Maßnahme zur Reduzierung der Auslastung durchzuführen.
-
Dies hat den Vorteil, dass weitere Anwendungen, insbesondere die zur Ausführung der Anwendung benötigt werden, in die Lastüberwachung integriert werden können. Durch eine Registrierung von Anwendungen kann eine Auswahl von überwachten weiteren Anwendungen kontrolliert und aktiv ausgewählt werden. Somit ist ein hierarchischer Aufbau der Lastüberwachung eines solchen Systems möglich. So kann eine Überwachungsvorrichtung Nachrichten über das Erreichen von Maximalwerten von Systemen entgegennehmen, auf deren Verfügbarkeit die eigene Anwendung beruht. Eine Registrierung beziehungsweise De-Registrierung von weiteren Überwachungsvorrichtungen am System erlaubt es, diese in eine Gesamtauswertung einzubeziehen. Somit kann eine Meldung beispielsweise eine Alarmfunktion auch dann gesendet beziehungsweise bereitgestellt werden, wenn nur ein registriertes System einen vorgegebenen Maximalwert überschreitet. Eine solche Meldung kann auch zusätzliche Daten enthalten und von der zu schützenden Anwendung abgefragt werden, um anwendungsbasiert die Auslastung bestimmter Prozesse zu steuern. Des Weiteren können solche zusätzlichen Daten an die Anpassungsvorrichtung weitergegeben werden, um beispielsweise bei einer erhöhten Last der Anwendung zusätzliche Ressourcen zur Bereitstellung der Anwendung zu aktivieren.
-
In einer vorteilhaften Ausführungsform ist eine Maßnahme zur Reduzierung der Auslastung ein Blockieren von IP-Adressen, ein Zuschalten von Servervorrichtungen, ein Zuschalten von Identifizierungsabfragen an eine Clientvorrichtung oder ein Umleiten einer Anwendungsanforderungsnachricht.
-
Die genannten Maßnahmen dienen einerseits aktiv zur Reduzierung der eingehenden Anwendungsanforderungsnachrichten durch das Blockieren von IP-Adressen, aber auch ein Skalieren der Ressourcen zur Bereitstellung zusätzlicher Anwendungsinstanzen durch Hinzuschalten von Servervorrichtungen, auf denen die Anwendung bereitgestellt wird. Durch Hinzuschalten von Identifizierungsabfragen, wie beispielsweise Captchas bei Login-Masken, werden automatisierte Angriffe erschwert.
-
In einer vorteilhaften Ausführungsform wird die Überwachungsvorrichtung durch die zu überwachende Anwendung, die auf der Servervorrichtung ausgeführt wird, aktiviert.
-
Dies ermöglicht eine Beibehaltung der Implementierung der Anwendung selbst und ein kombiniertes Aktivieren der Anwendung gleichzeitigen mit einer Aktivierung der Lastüberwachung.
-
Dies erlaubt eine einfache Bereitstellung der Überwachungsvorrichtung, beispielsweise durch eine geteilte Bibliothek, über die jede Auswendung die Überwachungsvorrichtung aufrufen und starten kann.
-
Ein vierter Aspekt der Erfindung betrifft ein Computerprogrammprodukt, umfassend ein nicht vorübergehendes computerlesbares Medium, das direkt in einen Speicher eines digitalen Computers ladbar ist, umfassend Programmcodeteile, die dazu geeignet sind, die Schritte des beschriebenen Verfahrens durchzuführen.
-
Sofern es in der nachfolgenden Beschreibung nicht anders angegeben ist, beziehen sich die Begriffe „Detektieren“, „Inkrementieren“, „Dekrementieren“, „Bereitstellen“, „Ermitteln“, „Vergleichen“, vorzugsweise auf Handlungen und/oder Prozesse und/oder Verarbeitungsschritte, die Daten verändern und/oder erzeugen und/oder die Daten in andere Daten überführen, wobei die Daten insbesondere als physikalische Größen dargestellt werden oder vorliegen können, beispielsweise als elektrische Impulse. Insbesondere sollte der Ausdruck „Computer“ möglichst breit ausgelegt werden, um insbesondere alle elektronischen Geräte mit Datenverarbeitungseigenschaften abzudecken, Computer oder auch Vorrichtungen umfassen mindestens einen Prozessor und können beispielsweise ein Personalcomputer, Server, Handheld-Computersystem, die rechnergestützte Daten verarbeiten können, Prozessoren und andere elektronische Geräte zur Datenverarbeitung sein. Unter einer Servervorrichtung kann im Zusammenhang mit der Erfindung beispielsweise eine von mehreren Nutzern gemeinsam verwendete Vorrichtung verstanden werden, die aus einem oder mehreren Prozessoren ausgebildet sind, die insbesondere auch als virtuelle Maschinen oder virtuelle Prozessoren implementiert sind.
-
Eine „Einheit“, zum Beispiel eine „Detektionseinheit“, „Bereitstellungseinheit“, „Überprüfungseinheit“, kann hardwaretechnisch und/oder softwaretechnisch implementiert sein. Bei einer hardwaretechnischen Implementierung kann die jeweilige Einheit als Vorrichtung oder als Teil einer Vorrichtung, zum Beispiel als Computer oder als ein oder mehrere Mikroprozessoren, ausgebildet sein.
-
Bei einer softwaretechnischen Implementierung kann die jeweilige Einheit als Computerprogrammprodukt, als eine Funktion, als eine Routine, als Teil eines Programmcodes oder als ausführbares Objekt ausgebildet sein.
-
Ein Computerprogrammprodukt kann beispielsweise als Speichermedium, wie zum Beispiel Speicherkarte, USB-Stick, CD-ROM, DVD oder auch in Form einer herunterladbaren Datei von einem Server in einem Netzwerk bereitgestellt oder geliefert werden.
-
Die nachfolgenden Ausführungsbeispiele weisen, sofern nicht anders angegeben oder bereits angegeben, zumindest einen Prozessor und/oder eine Speichereinheit auf, um das Verfahren zu implementieren oder auszuführen.
-
Ausführungsbeispiele des erfindungsgemäßen Verfahrens, der erfindungsgemäßen Überwachungsvorrichtung sowie des erfindungsgemäßen Systems sind in den Zeichnungen beispielhaft dargestellt und werden anhand der nachfolgenden Beschreibung näher erläutert. Es zeigen:
- 1 ein Ausführungsbeispiel des erfindungsgemäßen Verfahrens als Flussdiagramm;
- 2 ein Ausführungsbeispiel der erfindungsgemäßen Überwachungsvorrichtung in Blockdarstellung; und
- 3 ein Ausführungsbeispiel eines erfindungsgemäßen Systems in Blockdarstellung.
-
Einander entsprechende Teile sind in allen Figuren mit den gleichen Bezugszeichen versehen.
-
1 zeigt ein Ausführungsbeispiel des Verfahrens zur Überwachung der Auslastung einer Computer-implementierten Anwendung, das insbesondere einen Angriff durch Vielanfragen, der zur Verweigerung der Durchführung einer Anwendung führt, erkennt.
-
Im Ausgangszustand wird eine Computer-implementierte Anwendung, ein sogenannter Dienst, von einer Servervorrichtung bereitgestellt. Die Anwendung umfasst beispielsweise eine Eingabeseite eines Informationsproviders über die Ressourcen, wie beispielsweise eine Informationseiten, zugreifbar sind. Das Verfahren kann beispielsweise softwaretechnisch implementiert und als Funktion ausgebildet sein, die von der Anwendung aufgerufen wird.
-
In einem ersten Verfahrensschritt S1 werden eine Aktivierung einer Ausführung der Anwendung und das Ende der Ausführung der Anwendung detektiert. Eine Aktivierung der Ausführung wird detektiert, wenn eine Anwendungsanforderungsnachricht auf Anwendungsebene entsprechend einem OSI-Referenzmodell, die die Anwendung in der Servervorrichtung aktiviert, empfangen wird. Wird eine Ausführung abgeschlossen, erzeugt die Anwendung eine Anwendungsabschlussnachricht auf Anwendungsebene entsprechend dem OSI-Referenzmodell und übermittelt diese beispielsweise an eine Clientvorrichtung, die eine Ausführung der Anwendung aufgerufen hat. Wird eine Anwendungsabschlussnachricht von der Servervorrichtung erzeugt, so wird dies als Abschluss der Ausführung detektiert.
-
Alle parallel in der Servervorrichtung ausgeführten Ausführungen der Anwendung werden ermittelt, siehe Verfahrensschritt S10, indem ein Anwendungszähler um einen vorgegebenen Wert, beispielsweise um den Wert 1, erhöht wird, siehe S11, wenn eine eintreffende Anwendungsanforderungsnachricht detektiert und dem Anwendungszähler von einer Detektionseinheit gemeldet wird. Wurde eine Anwendungsabschlussnachricht ReqI detektiert, wird der Anwendungszähler um einen festen Wert, beispielsweise wiederum den Wert 1, erniedrigt, siehe Schritt S12. Der Zähler wird dabei bevorzugt um den gleichen festen Wert erhöht bzw. inkrementiert und erniedrigt bzw. dekrementiert.
-
Des Weiteren werden weitere Transaktionen, die zur Ausführung der Anwendung benötigt werden, ausgewertet. Dazu wird eine Anzahl von parallel ausgeführten weiteren Transaktionen mindestens einer weiteren Transaktionsart gezählt, die zeitlich nach einer Anwendungsanforderungsnachricht zur Durchführung der Anwendung ausgelöst werden. Dies können Transaktionen mindestens einer weiteren Transaktionsart sein. So kann eine erste Transaktionsart beispielsweise eine Authentifizierung des Anwendungsnutzer, beispielsweise einer Clientvorrichtung, sein. Eine zweite Transaktionsart kann beispielsweise ein Abfragen der angeforderten Information in einer Datenbank in einem Kommunikationssystem umfassen. Im Verfahrensschritt S2 wird die Aktivierung der weiteren Transaktion sowie der Abschluss der weiteren Transaktion detektiert. Im Verfahrensschritt S50 wird eine Anzahl von parallel ausgeführten Transaktionen mindestens eines Transaktionstyps, die während einer Ausführung der Anwendung durchgeführt werde, mittels jeweils eines Transaktionstypzählers CT pro Transaktionstyp ermittelt.
-
Der aktuelle Anwendungszählerwert Z(I) und der aktuelle Transaktionstypzählerwert Z(T) des mindestens einen zusätzlichen Anwendungstyps werden einer externen Vorrichtung, beispielsweise einer Auswertevorrichtung, bereitgestellt, siehe Verfahrensschritt S20, S60.
-
Neben dem Anwendungszählerwert Z(I) beziehungsweise dem Transaktionstypzählerwert Z(T) kann der Empfangszeitpunkt TS(I) einer Anwendungsanforderungsnachricht bzw. Aktivierungszeitpunkt einer Transaktion eines weiteren Transaktionstyps TS(T) ermittelt und beispielsweise in einer Tabelle abgespeichert werden. Des Weiteren kann die Dauer D(I) der Ausführung sowie eine Steigerungsrate S(I) der in einem vorgegebenen Zeitraum hinzugekommenen oder auch, bei negativer Steigung, verminderten Anzahl von Ausführungen ermittelt werden. Der Empfangszeitpunkt TS(I) kann beispielsweise durch einen Zeitstempel bei Empfang der Anwendungsanforderungsnachricht, der Empfangszeitpunkt der Transaktion TS(T) kann bei der Aktivierung der Transaktion aufgenommen werden. Die ermittelten Anfangszeitpunkte TS(I), Dauer D(I), Steigerungsrate S(I) sowie die entsprechenden Werte der weiteren Transaktionstypen TS(T), D(T), S(T) können zusammen mit den Zählerwerten Z(I), Z(T) in Verfahrensschritt S20 beziehungsweise S60 an eine Auswertevorrichtung bereitgestellt werden. Diese Auswertevorrichtung kann nun anhand der Daten die aktuelle Auslastung der Anwendung erkennen.
-
Zusätzlich kann in einem weiteren Schritt S30 beziehungsweise S70 der aktuelle Anwendungszählerwert Z(I) beziehungsweise der Transaktionstypzählerwert Z(T) sowie die Dauer D(I), D(T) und die Steigerungsrate S(I), S(T) gegenüber entsprechenden Maximalwerten maxi, maxT für diese jeweiligen Zählerwerte und Dauer- bzw. Steigerungswerte überprüft werden und bei Überschreitung von mindestens einem der vorgegebenen Maximalwerte eine Meldung S40, S80 ausgegeben werden.
-
2 zeigt nun eine Servervorrichtung 300, die auch als eine virtuelle Maschine auf einer gemeinsam verwendeten einer Cloudvorrichtung, ausgebildet sein kann. Von der Servervorrichtung 300 wird eine Anwendung 200 bereitgestellt. Die Anwendung 200, insbesondere die Anforderung einer Ausführung der Anwendung 200, ruft die Überwachungsvorrichtung 100 auf. Die Überwachungsvorrichtung 100 kann beispielsweise in einer Managementeinheit der Servervorrichtung 300, wie beispielsweise einer „Integrated Lights Out“-Komponente eingebaut sein, die auch bei einem Ausfall der Anwendung 200 oder der Servervorrichtung 300 noch aktiv bleibt. Des Weiteren kann die Überwachungsvorrichtung 100 als ein Mikroservice ausgebildet sein. Kann die Computer-implementierte Anwendung 200 selbst nicht geändert werden, so kann die Überwachungsvorrichtung 100 und die gesamte Anwendung mit einem sogenannten Wrapper versehen werden. Ein solcher Wrapper stellt dann eine Schnittstelle zwischen der eigentlichen Anwendung 200 und der Überwachungsvorrichtung 100 bereit.
-
Die Überwachungseinheit 100 umfasst eine Detektionseinheit 1, eine erste Zählereinheit 4 und eine zweite Zählereinheit 5, eine Bereitstellungseinheit 20 und optional eine Überprüfungseinheit 30. Die Detektionseinheit 1 umfasst eine erste Detektionseinheit 2, die die Aktivierung und den Abschluss einer Ausführung der Anwendung 200 detektiert, sowie eine zweite Detektionseinheit 3, die die Aktivierung und den Abschluss einer Transaktion mindestens eines Transaktionstyps innerhalb der Anwendung 200 detektiert. Eine Aktivierung und ein Abschluss der Ausführung bzw. einer weiteren Transaktion wird an eine erste Zählereinheit 4 mit einem Anwendungszähler CI bzw. an eine zweite Zählereinheit 5 mit einem Transaktionstypzähler CT in beispielsweise durch eine Zählinformation N in Form einer Datenstruktur oder eines analogen Signals übermittelt.
-
Die erste Detektionseinheit 2 ist der Anwendung 200 räumlich zugeordnet und auf der Servervorrichtung 300, die die Anwendung 200 bereitstellt angeordnet. Die zweite Detektionseinheit 3 kann entsprechend der ersten Detektionseinheit 2 auf der Servervorrichtung 300 oder auf einer Vorrichtung, die die Transaktion ausführt, angeordnet sein. Die erste und zweite Zählereinheit 4, 5 sind beispielsweise in einer gemeinsamen Zählereinheit 10 auf der Servervorrichtung 300 angeordnet, wie in 2 dargestellt. Die erste und zweite Zählereinheit 4, 5 können aber auch räumlich voneinander getrennt, beispielsweise auf der Servervorrichtung 300 und der Vorrichtung, die die Transaktion ausführt, angeordnet sein.
-
Für jeden Zähler, beispielsweise den Ausführungszähler CI oder einen Transaktionstypzähler CT, ist ein Speicherelement, beispielsweise ein Stapelspeicher, in der Zählereinheit 10 der Überwachungsvorrichtung 100 ausgebildet. Bei Erkennen einer Anwendungsanforderungsnachricht ReqI oder einer Aktivierung der Transaktion ReqT in der ersten Detektionseinheit (1) wird eine Zählinformation N an die entsprechende erste oder zweite Zählereinheit 4, 5 übermittelt. Der Anwendungszähler CI bzw. der Transaktionstypzähler CT werden durch die Zählinformation N um einen vorgegebenen Wert, beispielsweise eine natürliche Zahl n oder in der einfachsten Form um den Wert 1 erhöht. Zu der Anforderungsanforderungsnachricht ReqI, ReqT wird ein Zeitstempel, der den Empfangszeitpunkt TS(I), TS(T) der Nachricht angibt, ermittelt und gespeichert und beispielsweise mit der Zählinformation N an die Zählereinheit 10 übermittelt. Wird eine Anwendungsabschlussnachricht EndI oder auch Abschlussnachricht EndT zu einer Transaktion in der Detektionseinheit 1 detektiert, wird eine weitere Zählinformation N an die Zählereinheit 10 übermittelt. Wird auch für die Abschlussnachrichten EndI, EndT beispielsweise ein Zeitstempel registriert, kann daraus beispielsweise die Dauer D(I), D(T) der Ausführung der Anwendung beziehungsweise der Transaktion des Transaktionstyps ermittelt werden.
In der Bereitstellungseinheit 20 der Überwachungsvorrichtung 100 wird nun aus dem Anwendungszählerwert Z(I) beziehungsweise dem Transaktionstypzählerwert Z(T) und den entsprechenden Zeitstempeln TS(I), TS(T) die Dauer D(I), D(T) sowie eine Steigerungsrate S(I), S(T) der parallel ablaufenden Ausführungen I der Anwendung beziehungsweise Transaktionen des Transaktionstypen T ermittelt.
-
Eine eingegangene Anwendungsanforderungsnachricht ReqI oder ReqT kann bevorzugt durch eine standardisierte Applikationsschnittstelle wie beispielsweise entsprechend einem „Representational State Transfer“, auch als REST bezeichnet, oder als Transaktion in einer Rich Client Platform RCT oder als Cloud Serverless Computing Function aufgerufen werden. Die Zählerwerte Z(I) und Z(T) sowie die weiteren registrierten Zeitstempel TS(I), TS(T) sowie die daraus ermittelte Dauer einer Ausprägung D(I) beziehungsweise eines Transaktionstyps D(T) sowie die entsprechenden Steigerungsraten S(I), S(T) können nun ohne weitere Überprüfung über eine Nachricht 21 beispielsweise an eine externe Auswertevorrichtung 400, siehe 3, ausgegeben werden. Bevorzugt kann eine solche Auswertevorrichtung 400 eine Logging-Funktion umfassen, die Statusmeldungen der Servervorrichtung 300 beziehungsweise der Anwendung 100 speichert. Somit kann kontinuierlich die Auslastung der Anwendung 100 beziehungsweise der bei Durchführung der Anwendung notwendigen weiteren Transaktionen T überwacht werden.
-
Zusätzlich können die Zählerwerte Z(I), Z(T), die Dauer D(I), D(T) der Ausführung beziehungsweise der Transaktion mindestens eines Transaktionstyps, über eine Nachricht 22 intern an eine Überprüfungseinheit 30 der Überwachungsvorrichtung 100 weitergegeben werden. Die Überprüfungseinheit 30 vergleicht die erhaltenen Zählerwerte Z(I), Z(T) und weitere Daten gegenüber vorgegebenen Maximalwerten maxi, maxT. Kommt es zu einer Überschreitung der Maximalwerte maxi, maxT, wird eine Meldung M1 generiert, die beispielsweise einer Anpassungsvorrichtung 500, siehe 3, bereitgestellt wird. Die Maximalwerte maxi, maxT sind beispielsweise durch automatisch ausgeführte Lasttests an der Servervorrichtung 300 ermittelt, oder können auch aus zeitlich früher von der Überwachungsvorrichtung 100 bereitgestellten Zählerwerten Z, Dauer D und Steigerungswerten S abgeleitet sein.
-
Eine solche Meldung M1 kann entweder „in-band“, also innerhalb von Datenverbindung zwischen einer Servervorrichtung 100 und einer Auswertevorrichtung 400 oder auch out-of-band, also über eine zusätzlichen Signalisierungsverbindung, an die Auswertevorrichtung 400, übermittelt werden. Die Meldung M1 kann insbesondere über ein Sicherheitsinformations- und Event-Monitoring-System zur Auswertevorrichtung 400 geführt werden. Die Meldung M1 kann über ein standardisiertes Protokoll, wie beispielsweise Netflow, übertragen werden. Die in der Meldung M1 übertragenen Daten können dabei digital signiert sein um eine Integrität der Meldung M1 sowie eine Authentizität des Senders der Meldung M1 zu gewährleisten.
-
3 zeigt ein System 600 umfassend eine Servervorrichtung 300, eine Auswertevorrichtung 400 sowie eine Anpassungsvorrichtung 500. In der Servervorrichtung 300 ist beispielhaft für eine Anwendung 200 eine Überwachungsvorrichtung 100 dargestellt. Die Detektionseinheit 10 sowie die Bereitstellungseinheit 20 sind dabei in der Servervorrichtung 300 ausgebildet, die Überprüfungseinheit 30 und optional eine Datenaufzeichnungseinheit 31 sind in der Auswertevorrichtung 400 implementiert.
-
Die Überwachungsvorrichtung 100, insbesondere die Überprüfungseinheit 30 kann Meldungen M2 von anderen Anwendungen oder Transaktionen, auf deren Verfügbarkeit die eigene Anwendung beruht empfangen. Die darüber bereitgestellte Information kann in die Lastauswertung für die betrachtete Anwendung einbezogen werden. Dazu ist eine Registrierung beziehungsweise De-Registrierung von weiteren Überwachungsvorrichtungen in einer Auswertevorrichtung 400 möglich, so dass eine Gesamtauswertung der Auslastung einer Servervorrichtung 300 beziehungsweise auch mehrerer Servervorrichtungen in einem solchen System möglich ist. In einem solchen Szenario wird eine Meldung M1 immer dann erzeugt, wenn mindestens ein Anwendungszählermaximalwert maxI oder Transaktionstypmaximalwert maxT überschritten wird. Eine Meldung M1' kann optional zusätzliche Daten enthalten und von der zu überwachenden Anwendung 100 abgefragt werden, um anwendungsbasiert die Auslastung bestimmter Anwendungen oder Prozesse zu steuern. Die Meldung M1 oder M1' kann wie in 3 dargestellt, auch an eine Anpassungsvorrichtung 500 weitergegeben werden.
-
Die Anpassungsvorrichtung 500 kann automatisiert, halbautomatisiert oder über Bedienpersonal eine Reduktion der Anwendungen durch beispielsweise vordefinierte Maßnahmen vornehmen.
-
Die Anpassungsvorrichtung 500 kann die Last der Applikation 200 auf der Servervorrichtung 300 durch Blockieren von Anwendungsanforderungsnachrichten ReqI von vorgegebenen Client-Vorrichtungsadressbereichen, von denen aus auf die Servervorrichtung zugegriffen wird, steuern. Es können weitere Ausführungen der Anwendung beispielsweise durch Hinzufügung von Infrastruktur wie beispielsweise weiteren virtuellen Maschinen, oder auch durch Zuschalten von zusätzlichen Servervorrichtungen, aktiviert werden. Des Weiteren können Methoden, die einen automatisierten Angriff erschweren, beispielsweise eine Abfragung von Captchas in Login-Masken, aktiviert werden.
-
Vorteilhafterweise werden die Zählereinheit 10, Bereitstellungseinheit 20 und die Überprüfungseinheit 30 einer Überwachungsvorrichtung 100 auf einem von der Servervorrichtung 300 getrennt verwalteten Bereich betrieben. Beispielsweise sind diese Einheiten der Überwachungsvorrichtung 100 im Administrationsnetz ausgebildet, so dass die Anwendung auch bei einer Abschaltung der Servervorrichtung beispielsweise im Überlastfall noch Lastdaten liefert. Die Detektionseinheit 1 bleibt auf der Servervorrichtung implementiert.
-
Durch das beschriebene Verfahren beziehungsweise die Überwachungsvorrichtung verfügen Anwendungen über eine dynamische Überlastüberwachung. Dies gilt für die Überwachung der Anwendung selbst sowie für andere Anwendungen, von deren Verfügbarkeit die Anwendung abhängt. Bei Änderungen der Infrastruktur, beispielsweise durch leistungsfähigere Servervorrichtungen oder das Hochskalieren von beispielsweise Servervorrichtungen, können nun die Maximalwerte, die als Schwellwert für eine Überlasterkennung dienen, automatisch konfiguriert werden. Durch Registrierung und De-Registrierung weiterer Anwendungen und deren Überwachungsvorrichtungen kann die Hierarchie der Überwachungsvorrichtung verändert und auf ein gesamtes Servernetz ausgedehnt werden. Es ist somit kaum manueller Eingriff zur Überlasterkennung, insbesondere zur Erkennung von Distributed Denial of Service-Angriffen, notwendig. Die Überwachungsvorrichtung muss selbst keine Alarmfunktion aufweisen, sondern lediglich den Anwendungszähler beziehungsweise Transaktionstypzähler erhöhen beziehungsweise erniedrigen und die in Überlasttests gefundenen Schwellwerte konfigurieren. Abhängig von weiteren Diensten kann optional auch eine Alarmfunktion durch bereitstellen oder senden einer Meldung mitberücksichtigt werden.
-
Alle beschriebenen und/oder gezeichneten Merkmale des Verfahrens und der Vorrichtung bzw. des Systems können im Rahmen der Erfindung vorteilhaft miteinander kombiniert werden. Die Erfindung ist nicht auf die beschriebenen Ausführungsbeispiele beschränkt.