-
HINTERGRUND
-
Die Offenbarung bezieht sich im Allgemeinen auf die Überwachung von Computerservern, insbesondere auf die Überwachung einzelner Komponenten angeordnet auf Computerservern.
-
Internetbasierte Anwendungen sind gängige Werkzeuge für die Bereitstellung von Inhalten und Diensten für Benutzercomputergeräte. Diese Anwendungen werden typischerweise innerhalb einer skalierbaren Komponente, wie etwa innerhalb eines Betriebssystemcontainers, auf einem Host ausgeführt, der Inhalte für die Computergeräte bereitstellt, indem er Anfragen von den Computergeräten empfängt und Antworten an die Computergeräte sendet. Historisch betrachtet können Komponenten, die verwandte Anwendungen enthalten, innerhalb eines gemeinsamen Hosts gemeinsam angeordnet oder über mehrere Hosts verteilt sein. Jede Komponente kann von einem Überwachungssystem auf eine Leistungs- und Zustandsinformation überwacht werden, während eine Anforderung bearbeitet wird.
-
Das Überwachungssystem kann eine Leistungs- und Zustandsinformation von Komponenten empfangen, die die Hosts, auf denen sie ausgeführt werden, nicht identifizieren. Infolgedessen kann das Überwachungssystem möglicherweise Komponenten nicht identifizieren, die auf einem gemeinsamen Host ausgeführt werden. Infolgedessen kann das Überwachungssystem möglicherweise Komponenten nicht identifizieren, die auf einem gemeinsamen Host ausgeführt werden. Diese Abstraktion kann sich für die Leistungsüberwachung als problematisch erweisen, da das Überwachungssystem möglicherweise nicht in der Lage ist, eine Komponente einer anderen Komponente zuzuordnen, die auf dem gleichen Host gemeinsam angeordnet sind. Darüber hinaus kann diese Abstraktion zu Schwierigkeiten bei der Lizenzverwaltung führen, da Anwendungen, die innerhalb von Containern ausgeführt werden, die über Hosts verteilt sind, die Lizenznutzungskennzahlen für ein Preismodell verschleiern können, das auf einer per Host-Basis basiert.
-
ZUSAMMENFASSUNG
-
Ein Überwachungssystem empfängt Information von Agenten, die Komponenten, wie etwa Container oder Anwendungen in Containern, überwachen und hostsübergreifend ausführen, um eine aggregierte Zustandsinformation auf einer per Host-Basis zu erzeugen. Mehrere Container können auf einem einzigen Host gemeinsam angeordnet werden. Das System empfängt die Information einschließlich Zustandsinformation für jeden Container, Bootskennungen, die den Hosts des Containers zugeordnet sind, und Kennungen für die Container. Die Zustandsinformation beinhaltet Daten bezüglich des Zustands eines Containers oder einer Anwendung, die im Container ausgeführt wird und auf dem Host ausgeführt wird. Die Bootkennung beinhaltet eine Kennung für eine Bootsitzung des Hosts, die vom Host aus für jeden Agenten zugänglich ist. Die Containerkennung identifiziert bei der Übertragung jeden Container eindeutig. Das Überwachungssystem vergleicht Bootskennungen, die in Verbindung mit Zustandsinformationen von Agenten empfangen werden, die Container überwachen, um zu bestimmen, ob die Container gemeinsam angeordnet sind. Zum Beispiel zeigen zwei Container, die innerhalb eines definierten Zeitfensters die gleiche Boot-ID verwenden, an, dass sie sich in einer gemeinsamen Bootsitzung (der Zeitspanne, in der ein Betriebssystem in den Speicher des Hosts geladen wird) eines Hosts befinden. Für den Fall, dass Container eine Bootkennung gemeinsam haben, bestimmt das Überwachungssystem, dass die Container auf dem Host, der die Bootkennung erzeugt hat, gemeinsam angeordnet sind. Wenn Container keine Bootskennungen gemeinsam haben (z.B. und die Bootsitzung durch Kommunikation mit anderen Agenten als noch aktiv bestimmt wird), bestimmt das Überwachungssystem, dass die Container nicht auf einem Host gemeinsam angeordnet sind und kann jeden Container mit unterschiedlichen Bootkennungen ihren jeweiligen Hosts zuordnen. Darüber hinaus ermöglicht die eindeutige Identifizierung von gemeinsam angeordneten Containern dem Überwachungssystem, die gesammelte Information zwischen Containern und dem zugrunde liegenden Host zu korrelieren.
-
Figurenliste
-
- 1 ist ein Blockdiagramm einer Systemumgebung zum Überwachen von Hosts gemäß einer Ausführungsform.
- 2 ist ein schematisches Blockdiagramm, das ein Überwachungssystem darstellt, das Komponenten und Hosts überwacht, gemäß einer Ausführungsform.
- 3 ist ein Flussdiagramm, das den Prozess zum Bestimmen und Speichern von Zustandsinformationen von gemeinsam angeordneten Komponenten darstellt, gemäß einer Ausführungsform.
- 4 ist ein Flussdiagramm, das einen Prozess zum Sammeln und Berichten von Zustandsinformationen durch den Agenten einer Komponente, die auf einem Host ausgeführt wird, darstellt, gemäß einer Ausführungsform.
- 5 ist ein Flussdiagramm, das den Prozess zum Identifizieren von gemeinsam angeordneten Komponenten in einem Host und zum Erzeugen von aggregierten Zustandsinformationen über den Host darstellt, gemäß einer Ausführungsform.
- 6 stellt einen Prozess zur Behandlung neuer Bootsitzungen in einem Host dar, gemäß einer Ausführungsform.
- 7 ist ein hochrangiges Blockdiagramm, das ein Beispiel für einen Computer darstellt, gemäß einer Ausführungsform.
- 8A ist ein schematisches Diagramm eines Hosts, der Boot-IDs beinhaltet, gemäß einer Ausführungsform.
- 8B ist ein schematisches Diagramm eines Hosts der aktualisierte Boot-IDs beinhaltet, gemäß einer Ausführungsform.
-
DETAILLIERTE BESCHREIBUNG
-
1 stellt eine Systemumgebung zur Überwachung von Hosts gemäß einer Ausführungsform dar. Die Umgebung beinhaltet ein Überwachungssystem 102 (siehe 2), eine Client-Vorrichtung 104 und Hosts 106a - 106n (oder „Host 106“). Die Hosts 106a - 106n, das Überwachungssystem 102 und die Client-Vorrichtung 104 können über ein Netzwerk 124 kommunizieren, das das Internet beinhalten kann.
-
Die Client-Vorrichtung 104 ist eine Vorrichtung mit Rechenfunktionalität und Datenkommunikationsfähigkeiten, die sowohl Benutzereingaben empfangen als auch Daten über das Netzwerk 124 senden und/oder empfangen kann. Die Client-Vorrichtung 104 kommuniziert mit dem Host 106 über das Netzwerk 124. In verschiedenen Ausführungsformen kann die Client-Vorrichtung 104 eine verkabelte Benutzervorrichtung, etwa ein Desktop-Computer, oder eine mobile Benutzervorrichtung, wie ein Laptop-Computer, ein Personal Digital Assistant (PDA), ein Mobiltelefon, ein Smartphone, ein Tablett oder eine tragbare Vorrichtung sein. Die Client-Vorrichtung 104 kann von einem Betreiber des Hosts 106 und/oder des Überwachungssystems 102 verwendet werden. Zum Beispiel kann die Client-Vorrichtung 104 von einem Betreiber des Überwachungssystems 102 verwendet werden, um vom Host 106 Updates über die Leistung der auf dem Host 106 ausgeführten Komponenten 108 zu empfangen. Obwohl in 1 eine einzelne Client-Vorrichtung 104 dargestellt ist, kann die Umgebung eine beliebige Anzahl von Client-Vorrichtungen 104 beinhalten.
-
Der Host 106 kann eine Schaltung (z.B. Server) beinhalten, die ein Betriebssystem 110, Komponenten 108 und einen oder mehrere Agenten 112 ausführt. Die Komponenten 108 können Container beinhalten, die auf dem Host 106 ausgeführt werden, und/oder Anwendungen und Agenten, die in den Containern ausgeführt werden. Jede Komponente 108, die auf dem Host 106 ausgeführt wird, kann einer Komponentenkennung zugeordnet werden, die das Überwachungssystem 102 zusammen mit der Boot-ID 114 verwendet, um gemeinsam angeordnete Komponenten im gleichen Host 106 zu bestimmen.
-
Die Boot-ID 114 ist ein Wert (z.B. Hash), der die Bootsitzung des Betriebssystems 110 eindeutig identifiziert. Das Betriebssystem 110 kann die Boot-ID 114 beim Start oder als Reaktion auf eine Anforderung erzeugen und die Boot-ID als zugängliche Daten für den Agenten 112 und/oder die Komponente 108 speichern. Der Host 106 kann eine physische Maschine (z.B. ein Server), eine virtuelle Maschine oder eine Cloud-Instanz sein. In einigen Ausführungsformen ist die Boot-ID ein großer zufällig erzeugter Wert, um die Wahrscheinlichkeit von Kollisionen der Boot-ID-Werte zwischen verschiedenen Hosts in verschiedenen Bootsitzungen zu verringern.
-
Zum Beispiel, wenn der Host 106a einen Start- oder Neustartvorgang durchgeführt hat, kann das Betriebssystem 110 der auf dem Host 106a laufenden Bootsitzung für die neue Bootsitzung eine andere Boot-ID 114a zuweisen. Ebenso kann der Host 106n, der ein weiterer vom System 102 überwachter Host ist, beim Start eine Boot-ID erzeugen und die Boot-ID während der Bootsitzung beibehalten (z.B. auch wenn der Host 106a eine neue Boot-ID für eine neue Bootsitzung erzeugt). Diese Boot-IDs 114 sind den Komponenten 108 zugeordnet, etwa durch die Verwendung der Komponentenkennung, um Komponenten zu bestimmen, die gemeinsam auf demselben Host 106 angeordnet sind. Boot-IDs 114 werden dem Überwachungssystem 102 von jedem Agenten 112 berichtet, der auf jedem Host 106 ausgeführt wird.
-
In einer Ausführungsform führt der Host 106 zusätzlich zu den Komponenten 108 einen Agenten 112 aus. Der Agent 112 überwacht die Leistung der Komponente 108, wie etwa Prozesse, die auf dem Host 106 laufen, die Reaktionszeit der Komponente 108, Transaktionen in der Komponente 108, die Auswirkung von Backend-Prozessen auf die Leistung der Komponente 108 auf Client-Vorrichtungen 104 oder andere Arten von Zustandsinformationen. In einer Ausführungsform führt jede Komponente 108 ihren eigenen Agenten 112 aus, der die Leistung der Komponente 108 überwacht. In einer weiteren Ausführungsform gibt es einen Agenten 112, der auf dem Host 106 ausgeführt wird, der eine Zustandsinformation über mehrere Komponenten 108 überwacht und erzeugt. In einigen Ausführungsformen sind die Komponenten 108 (z.B. Anwendungen, Container usw.) und die Agenten 112 gemeinsam auf einem gemeinsamen Kernel des Betriebssystems 110 angeordnet und haben Zugriff auf einige gemeinsame Information wie die Boot-ID 114. Der Agent 112 sammelt und speichert Zustandsinformationen, die für die Leistung der Anwendung relevant sind, und meldet die Zustandsinformation periodisch an das Überwachungssystem 102 in Verbindung mit der Boot-ID 114 des Hosts zur Hostidentifizierung.
-
2 ist ein schematisches Blockdiagramm, das ein Überwachungssystem 102 darstellt, das Komponenten 108 und Hosts 106 überwacht, gemäß einer Ausführungsform. Das Überwachungssystem 102 beinhaltet einen Überwachungsserver 200 und einen Hostdatenspeicher 220.
-
Der Überwachungsserver 200 ist eine externe Rechenvorrichtung für den Host 106, die die Leistung des Host 106 und seiner Komponenten 108 überwacht. Der Überwachungsserver 200 kann die Leistung einer beliebigen Anzahl von Hosts 106 auf einer per Host-Basis oder der Komponenten von Hosts überwachen. Während der Host 106 den Agenten 112 ausführt, kommuniziert der Überwachungsserver 200 mit dem Agenten 112, um die Leistung der Komponenten 108 im Host 106 zu überwachen. Der Überwachungsserver 200 empfängt Berichte von dem Agenten 112 und formatiert Daten in den Berichten zur Analyse durch einen Administrator des Hosts 106, so dass sich der Administrator mit allen Leistungsproblemen in der Komponente 108 oder dem Host 106 befassen kann. Zum Beispiel erzeugt der Überwachungsserver 200 Diagramme, die die Antwortzeiten der Komponente 108 darstellen, zeigt Transaktionsspuren von langsamen oder anderweitig bemerkenswerten Transaktionen an und liefert Statistiken von dem Host (z.B. virtuelle Maschine), auf dem die Komponente 108 läuft.
-
In einer Ausführungsform empfängt der Überwachungsserver 200 auch eine Information von einem Agenten 112, der auf dem Host 106 ausgeführt wird, die die Boot-ID 114 beschreibt, die der Bootsitzung auf dem Host 106 zugewiesen wurde. Die Boot-ID 114, die vom Betriebssystem 110 auf dem Host 106 erzeugt wird, ist jeder Komponente 108 zugeordnet, die auf dem Host 106 ausgeführt wird. Der Agent 112 holt die Boot-ID 114 zusätzlich zu Komponentenkennungen und Komponentenzustandsinformationen und liefert diese Daten an den Überwachungsserver 140. Der Überwachungsserver 140 verwendet die Daten des Agenten 112, um eine aggregierte Information über Komponenten und/oder Hosts zu bestimmen. Zum Beispiel kann eine Nutzungsinformation per Host-Basis über mehrere, gemeinsam angeordnete Container hinweg verfolgt werden, um eine Lizenzverbrauchsinformation auf einer per Host-Basis zu bestimmen. Der Überwachungsserver 200 kann Zustandsinformation von mehreren gemeinsam angeordneten Komponenten aggregieren, um die Gesamtnutzung für den zugrundeliegenden Host 106 zu bestimmen.
-
Das Überwachungssystem 102 verwendet den Hostdatenspeicher 220, um Identitäten von gemeinsam angeordneten Komponenten 108 zu speichern, die auf einem Host 106 in Bezug auf die Boot-IDs 114 ausgeführt werden. Das Überwachungssystem 102 bestimmt gemeinsam angeordnete Komponenten 108 und speichert die Komponentenkennung für jede Komponente mit der Boot-ID 114 der Bootsitzung, die zum Zeitpunkt der Identifizierung der gemeinsamen Anordnung aktuell ausgeführt wird. Im Falle eines Starts, der eine neue Bootsitzung auf dem Host 106 verursacht, sendet der Agent 112 anschließend eine erzeugte Zustandsinformation mit einer neuen Boot-ID der neuen Bootsitzung. Der Überwachungsserver 200 kann die im Hostdatenspeicher 220 gespeicherte Information verwenden, um zuvor gespeicherte Komponentenkennungen, die dem Überwachungssystem 102 zur Verfügung gestellt werden und zu den Komponenten 108 gehören, die zur gemeinsamen Anordnung bestimmt sind, zu vergleichen. Der Überwachungsserver 200 kann diese Information aktualisieren, um die neue Boot-ID 114 einzubinden, die aufgrund der Neustartinstanz gemeldet wurde, so dass der Überwachungsserver 200 trotz einer Änderung der Boot-ID 114 weiterhin eine Nutzungsinformation für den Host 106 aggregieren kann. Zum Beispiel, wenn die Komponenten A, B und C gemeinsam auf dem Host 106a angeordnet sind, kann der Hostdatenspeicher 220 jede Komponente der neuen Boot-ID 114 zuordnen, die für die neue Bootsitzung erzeugt wurde. Wenn der Host 106a einen Neustart durchlief, würde das Betriebssystem 110a eine neue Boot-ID 114 erzeugen, um die neue Bootsitzung wiederzugeben. Um die Überwachung der Leistung und Nutzung von Host 106a fortzusetzen, kann der Überwachungsserver 200 die Komponenten A, B und C im Hostdatenspeicher 220 identifizieren und aus der gemeinsamen Nutzung der vorherigen Boot-ID 114 bestimmen, dass sie gemeinsam angeordnet sind. Der Überwachungsserver 200 kann dann die neue Boot-ID 114 im Hostdatenspeicher 220 speichern und die Überwachung des Hosts 106a fortsetzen.
-
3 ist ein Flussdiagramm, das den Prozess des Bestimmens und Speicherns einer Zustandsinformation der gemeinsam angeordneten Komponenten 108 darstellt, gemäß einer Ausführungsform. Obwohl ein einzelner Agent vom Betriebssystem 110 und der Komponente 108 in der in 3 dargestellten Ausführungsform geteilt wird, können das Betriebssystem 110 und jede Komponente 108 einen eigenen Agenten enthalten. Wenn der Agent 114 eine Instanz einer Zustandsinformation über eine Komponente 108 meldet, greift der Agent 114 auf die Boot-ID 114 zu, die vom Betriebssystem 110 des Hosts 106 der Boot-Sitzung erzeugt wird. Darüber hinaus kann der Agent 114 die Zustandsinformation und die Komponentenkennung von der Komponente 108 sammeln. Der Agent 114 stellt dem Überwachungsserver 200 im Überwachungssystem 102 die Zustandsinformation in Verbindung mit der Boot-ID (und der Komponentenkennung, in einigen Ausführungsformen) bereit. Der Überwachungsserver 200 verwendet die Boot-ID 114, um die gemeinsame Anordnung der Komponente 108 mit anderen Komponenten zu bestimmen, die die gleiche Boot-ID gemeldet haben. In einem weiteren Beispiel vergleicht der Überwachungsserver 200 die Komponentenkennung der Komponente 108 mit früheren Komponentenkennungen, die von der Komponente 108 gemeldet wurden, um eine neue Bootsitzung zu identifizieren. Die Boot-IDs, die anderen bekannten Komponenten 108 zugeordnet sind, die gemeinsam im Host angeordnet sind, können entsprechend aktualisiert werden.
-
4 ist ein Flussdiagramm, das einen Prozess 400 zum Sammeln und Berichten einer Zustandsinformation durch den Agenten 112 einer Komponente 108 darstellt, die auf einem Host 106 ausgeführt wird, gemäß einer Ausführungsform. Wie vorstehend erläutert, kann der Host 106 ein Server, eine Cloud-Instanz oder eine virtuelle Maschine sein. Die überwachte Komponente 108 kann eine Anwendung oder eine Anwendung sein, die im Container ausgeführt wird. Der Agent 112 beobachtet jede Komponente 108 auf dem Host 106 und erzeugt 410 eine Zustandsinformation, um den Zustand jeder Komponente 108 entlang verschiedener überwachter Parameter wie Antwortzeiten, Verkehr oder Netzwerknutzung, Anzahl der Anfragen, Nutzungsmengen usw. zu beschreiben. Der Agent 112 kann die Zustandsinformation regelmäßig oder geplant oder bei Erkennung von Ereignissen in der Komponente 108 oder dem Host 106 erzeugen, die die Sammlung der Zustandsinformation auslösen.
-
Als Reaktion auf das Erzeugen der Zustandsinformation ruft 420 der Agent 112 eine Boot-ID 114 des Hosts 106 ab, die vom Betriebssystem 110 erzeugt wird, um eine Bootsitzung auf dem Host 106 zu identifizieren. Container bieten per Design eine Isolierung der Anwendung von dem zugrundeliegenden Host. Dies macht es schwierig, gewisse Fakten (wie z.B. den Hostnamen) über den zugrundeliegenden Host zu bestimmen, die für den Prozess innerhalb des Containers nützlich sein können, ohne dass der Container mit speziellen Privilegien oder speziellen Konfigurationen ausgeführt werden muss. Als solches verwendet der Agent 112 eine Information, die für jede unprivilegierte Anwendung zugänglich ist, die zur Identifizierung des Hosts verwendet werden kann. Obwohl hierin eine Boot-ID als Hostkennung diskutiert wird, können andere Arten von Host- oder Hostvorrichtungen verwendet werden, die Daten identifizieren, die das Betriebssystem der Anwendung im Container erlauben kann.
-
Der Agent 112 bestimmt 430 eine Komponentenkennung der Komponente, die sich auf die Zustandsinformation auf dem Host 106 bezieht. Die Komponentenkennung kann eine Kennung einer Anwendung oder des Containers sein, die das Betriebssystem nicht vom Agenten 112 beschränkt. Jeder vom Überwachungssystem 102 überwachte Container kann eine eindeutige Komponentenkennung aufweisen.
-
Der Agent 112 sendet 440 die Zustandsinformation, die Boot-ID und die Komponenten-ID an das Überwachungssystem 102 zur Bestimmung der gemeinsam angeordneten Komponenten und überwacht die Gesamtnutzung von Host 106. Der Prozess 400 kann parallel von mehreren Agenten 112 durchgeführt werden, die mehrere Komponenten überwachen. Die Komponenten 108 können auf mehrere Hosts 106 verteilt sein, die das Überwachungssystem 102 mit Boot-IDs der Agenten 112 auflösen kann.
-
5 ist ein Flussdiagramm, das den Prozess 500 zum Identifizieren von gemeinsam angeordneten Komponenten 108 in einem Host 106 und zum Erzeugen einer aggregierten Zustandsinformation über den Host 106 darstellt, gemäß einer Ausführungsform. Im Prozess 500 wird eine Zustandsinformation, die von zwei Agenten verschiedener Komponenten empfangen wird, als in Ausführung auf demselben Host oder verschiedenen Hosts identifiziert.
-
Der Überwachungsserver 200 empfängt 510 erste Zustandsinformation und eine erste Boot-ID 114 von einem Agenten 112, der auf einer ersten Komponente 108 ausgeführt wird. Zum Beispiel kann der Agent 112 die Zustandsinformation und die Boot-ID senden, wie im Prozess 400 und 4 beschrieben.
-
Der Überwachungsserver 200 empfängt 520 zweite Zustandsinformation und eine zweite Boot-ID 114 von einem Agenten einer zweiten Komponente 108. Die zweite Zustandsinformation kann nach der ersten Zustandsinformation empfangen werden, oder die erste Zustandsinformation kann nach der zweiten Zustandsinformation empfangen werden.
-
In einigen Ausführungsformen kann der Überwachungsserver 200 bestimmen, dass die erste Komponente 108 und die zweite Komponente 108 verschiedene Komponenten basierend auf den Komponenten-IDs sind. Die erste Komponenten-ID der ersten Komponente 108 kann mit der ersten Zustandsinformation bei 510 empfangen werden, und die zweite Komponenten-ID für die zweite Komponente 108 kann mit der zweiten Zustandsinformation 520 empfangen werden. Der Server 200 vergleicht die Komponenten-IDs und bestimmt, dass die erste Komponente 108 und die zweite Komponente 108 unterschiedlich sind, wenn die Komponenten-IDs nicht übereinstimmen, und bestimmt, dass die erste und zweite Komponente 108 die gleichen sind, wenn die Komponenten-IDs übereinstimmen.
-
Der Überwachungsserver 200 bestimmt 530, ob die erste Boot-ID 114 mit der zweiten Boot-ID 114 übereinstimmt. Als Reaktion auf das Bestimmen, dass die ersten und zweiten Boot-IDs 114 übereinstimmen (oder anderweitig entsprechen), bestimmt 540 der Überwachungsserver 200, dass die erste Komponente 108 und die zweite Komponente 108 auf einem Host 106 gemeinsam angeordnet sind. In einigen Ausführungsformen kann der Überwachungsserver 200 bestimmen, ob die erste Boot-ID 114 und die zweite Boot-ID 114 innerhalb eines Zeitfensters empfangen wurden (z.B. der Zeitraum, in dem ein Betriebssystem 110 in den Speicher des Host 106 geladen wird und somit eine bestimmte Boot-ID verwendet). Wenn der Überwachungsserver 200 bestimmt, dass die erste und zweite Boot-ID innerhalb eines Zeitfensters empfangen wurden und übereinstimmen, können die erste und zweite Boot-ID 114 als entsprechend zu Komponenten auf dem gleichen Host 106 bestimmt werden. Im Gegensatz dazu, wenn zwei identische Boot-IDs 114 außerhalb des Zeitfensters empfangen werden, kann der Überwachungsserver 200 bestimmen, dass sie nicht übereinstimmen, oder kann weitere Analysen durchführen, um so die aktuelle Boot-ID des Betriebssystems durch Kommunikation mit einem Agenten zu bestätigen.
-
Der Überwachungsserver 200 ordnet 550 die erste Zustandsinformation und die zweite Zustandsinformation dem identifizierten Host 106 zu. Zum Beispiel können die erste Komponente und die zweite Komponente als gemeinsam angeordnet zugeordnet werden (z.B. durch Boot-ID). Nachfolgende Änderungen der von einer der Komponenten empfangenen Boot-ID können an Zuordnungen anderer Komponenten weitergegeben werden.
-
Der Überwachungsserver 200 erzeugt 560 aggregierte Zustandsinformation für den Host 106 unter Verwendung der ersten und zweiten Zustandsinformation. Zum Beispiel kann die Zustandsinformation von gemeinsam angeordneten Komponenten kombiniert werden, um eine Information über den Host bereitzustellen. Zum Beispiel, wenn gemeinsam angeordnete Komponenten Container mit Anwendungs-Servern sind, dann kann die Zustandsinformation von jeder der Anwendungen, wie Antwortzeit, Anzahl der Anfragen, Bandbreitenauslastung usw., über die gemeinsam angeordneten Komponenten im Host hinweg kombiniert werden, um eine Zustandsinformation oder andere Analysen, die auf der Zustandsinformation basiert, auf einer per Host-Basis bereitzustellen.
-
Zurück zu 530, wenn die erste Boot-ID 114 und die zweite Boot-ID 114 nicht mit 530 übereinstimmen, bestimmt 570 der Überwachungsserver 200, dass die erste Komponente 108 und die zweite Komponente 108 auf verschiedenen Hosts 106 angeordnet sind. Zum Beispiel arbeiten mehrere Hosts 106 gleichzeitig in separaten Bootsitzungen, die jeweils durch eine eindeutige Boot-ID identifiziert werden. Wenn verschiedene Boot-IDs von verschiedenen Komponenten 108 empfangen werden, dann können die Komponenten 108 so bestimmt werden, dass sie auf verschiedenen Hosts 106 sind.
-
Der Überwachungsserver 200 die 580 die erste Zustandsinformation und die zweite Zustandsinformation verschiedenen Hosts 106 zu. Zum Beispiel kann die erste Zustandsinformation anderen Zustandsinformationen zugeordnet werden, die mit der ersten Boot-ID empfangen wurden, und die zweite Zustandsinformation kann anderen Zustandsinformationen zugeordnet werden, die mit der zweiten Boot-ID empfangen wurden.
-
6 veranschaulicht einen Prozess 600 zur Handhabung neuer Bootsitzungen in einem Host gemäß einer Ausführungsform. Der Prozess 600 beinhaltet das Empfangen verschiedener Instanzen eines Zustandsinformationsrahmens einer Komponente, die sich auf einem einzelnen Host befindet. Wenn eine neue Instanz einer Zustandsinformation für eine Komponente, die zuvor einer Boot-ID zugeordnet war, in Verbindung mit einer anderen Boot-ID empfangen wird, kann bestimmt werden, dass der Host eine neue Bootsitzung gestartet hat. Die vorherige Boot-ID kann als veraltet identifiziert werden, und andere Komponenten, die der veralteten Boot-ID zugeordnet sind, können aktualisiert werden, um Zuordnungen zur neuen Boot-ID zu beinhalten. Wenn die Boot-ID ein großer Zufallswert ist, ist die Wahrscheinlichkeit von Kollisionen der Boot-ID zu einem beliebigen Zeitpunkt gering, auch wenn der Überwachungsserver 200 mehrere Hosts 106 und Komponenten 108 überwacht. Zum Beispiel kann der Überwachungsserver neue Instanzen von Boot-IDs nur mit aktiven, nicht veralteten Boot-IDs vergleichen.
-
Der Überwachungsserver 200 empfängt 610 erste Zustandsinformation und eine erste Boot-ID 114 von einem Agenten 112 einer ersten Komponente 108. Der Überwachungsserver 200 ordnet 620 die erste Zustandsinformation einem Host 106 basierend auf der ersten Boot-ID 114 zu.
-
Der Überwachungsserver 200 empfängt 630 zweite Zustandsinformation und eine zweite Boot-ID 114 von einem Agenten der ersten Komponente 108. Die zweite Zustandsinformation wird nach der ersten Zustandsinformation empfangen. Wie vorstehend erläutert, kann eine von dem Agenten 112 an den Überwachungsserver 200 übertragene Komponenten-ID verwendet werden, um die Komponenten 108 eindeutig zu identifizieren. So bestimmt der Überwachungsserver 200, dass die erste und zweite Zustandsinformation und die erste und zweite Boot-ID 114 von derselben Komponente 108 stammen. Die erste und zweite Zustandsinformation können durch den selben Agenten 112 oder einen anderen Agenten 112 übertragen werden. Zum Beispiel kann der Agent, der die zweite Zustandsinformation und die Boot-ID 114 sendet, derselbe Agent sein, der die erste Zustandsinformation und die Boot-ID 114 in Schritt 610 gesendet hat. In einem weiteren Beispiel können mehrere Agenten eine Komponente überwachen oder ein Agent kann einer anderen Komponente neu zugeordnet werden.
-
Der Überwachungsserver bestimmt 640, ob die erste Boot-ID 114 mit der zweiten Boot-ID 114 übereinstimmt. Als Reaktion auf das Bestimmen, dass die erste Boot-ID 114 nicht mit der zweiten Boot-ID übereinstimmt, ordnet 650 der Überwachungsserver 200 dem Host 106 die zweite Boot-ID 114 zu. Wenn die Komponente 108 im gleichen Host ausgeführt wird, kann bestimmt werden, dass sich die Boot-ID für den Host geändert hat, und somit eine neue Bootsitzung gestartet wurde.
-
Der Überwachungsserver 200 ordnet 660 die zweite Zustandsinformation dem Host 106 zu. Zum Beispiel können sowohl die erste als auch die zweite Zustandsinformation dem gleichen Host 106 zugeordnet sein, auch wenn eine andere Boot-ID empfangen wurde. Somit behält der Server 200 die Identifizierung von gemeinsam angeordneten Containern in Hosts effizient bei, auch wenn die Hosts Neustartvorgänge zu intermittierenden, unbekannten oder ungeplanten Zeiten durchführen.
-
Der Überwachungsserver 200 erzeugt 670 aggregierte Zustandsinformation für den Host 106 unter Verwendung der ersten Zustandsinformation und der dem Host 106 zugeordneten zweiten Zustandsinformation. Die aggregierte Zustandsinformation für den Host 106 wird durch die Verarbeitung mehrerer Instanzen einer Zustandsinformation erzeugt, die als dem Host 106 zugeordnet identifiziert wurde.
-
Zurück zu 640, als Reaktion auf das Bestimmen, dass die erste Boot-ID mit der zweiten Boot-ID übereinstimmt, ordnet 660 der Überwachungsserver 200, die zweite Zustandsinformation dem Host 106 zu. Die Boot-ID hat sich nicht geändert, was anzeigt, dass sich der Host in der gleichen Bootsitzung befindet, und dass auch andere Komponenten 108, von denen bekannt ist, dass sie gemeinsam im Host angeordnet sind, die gleiche Boot-ID zurückgeben sollten. Der Überwachungsserver 200 erzeugt 670 dann aggregierte Zustandsinformation für den Host 106 unter Verwendung der ersten Zustandsinformation und der zweiten Zustandsinformation, die dem Host 106 zugeordnet sind.
-
7 ist ein hochrangiges Blockdiagramm, das ein Beispiel für einen Computer 700 darstellt, gemäß einer Ausführungsform. Der Computer 700 ist ein Beispiel für eine Schaltung, die Komponenten des Überwachungssystems 102, der Client-Vorrichtung 104 oder der Hosts 106 implementiert. Gezeigt sind mindestens ein Prozessor 702, der mit einem Chipsatz 704 gekoppelt ist. Der Chipsatz 704 beinhaltet einen Speicher-Controller-Hub 720 und einen Ein-/Ausgabe-(I/O-)Controller-Hub 722. Ein Speicher 706 und ein Graphikadapter 712 sind mit dem Speicher-Controller-Hub 720 gekoppelt, und eine Anzeigevorrichtung 718 ist mit dem Graphikadapter 712 gekoppelt. Eine Speichervorrichtung 708, eine Tastatur 710, eine Zeigevorrichtung 714 und ein Netzwerkadapter 716 sind mit dem I/O-Controller-Hub 722 gekoppelt. Andere Ausführungsformen des Computers 700 haben unterschiedliche Architekturen. Zum Beispiel ist der Speicher 706 in einigen Ausführungsformen direkt mit dem Prozessor 702 gekoppelt.
-
Die Speichervorrichtung 708 beinhaltet ein oder mehrere nichtflüchtige, computerlesbare Speichermedien, wie z.B. eine Festplatte, einen Compact Disk Nur-Lese-Speicher („CD-ROM“), eine DVD oder eine Festkörper-Speichervorrichtung. Der Speicher 706 enthält Anweisungen und Daten, die vom Prozessor 702 verwendet werden. Die Zeigevorrichtung 714 wird in Kombination mit der Tastatur 710 zur Eingabe von Daten in das Computersystem 700 verwendet. Der Grafikadapter 712 zeigt Bilder und andere Informationen auf der Anzeigevorrichtung 718 an. In einigen Ausführungsformen beinhaltet die Anzeigevorrichtung 718 eine Touchscreen-Funktion zum Empfangen von Benutzereingaben und Auswahlen. Der Netzwerkadapter 716 koppelt das Computersystem 700 an das Netzwerk 124. Einige Ausführungsformen des Computers 700 weisen unterschiedliche und/oder andere Komponenten auf als die in 7 gezeigten.
-
Der Computer 700 ist angepasst, zum Ausführen von Computerprogrammmodulen zur Bereitstellung hierin beschriebener Funktionalität. Zum Beispiel können einige Ausführungsformen eine Rechenvorrichtung mit einem oder mehreren Modulen beinhalten, die konfiguriert sind, um die in den 4, 5 und 6 gezeigten Prozesse 400, 500 und 600 auszuführen. Wie hierin verwendet, bezieht sich der Begriff „Modul“ auf Computerprogrammanweisungen und/oder andere Logik, die verwendet werden, um die spezifizierte Funktionalität bereitzustellen. Dadurch kann ein Modul in Hardware, Firmware und/oder Software implementiert werden. In einer Ausführungsform werden Programmmodule, die aus ausführbaren Computerprogrammanweisungen bestehen, auf der Speichervorrichtung 708 gespeichert, in den Speicher 706 geladen und vom Prozessor 702 ausgeführt.
-
8A ist ein schematisches Diagramm eines Hosts der Boot-IDs beinhaltet, gemäß einer Ausführungsform. Die Komponente ist ein (z.B. Linux) Container, der mit standardmäßigem, unprivilegiertem Zugriff auf den zugrundeliegenden Host 800 und sein Betriebssystem ausgeführt wird. Der zugrundeliegende Host 800 erzeugt eine 32-stellige Boot-ID, die für jeden Container zugänglich ist. Die 32-stellige Boot-ID kann alphanumerische Zeichen in jeder Ziffer enthalten, um eine große Anzahl möglicher eindeutiger Boot-IDs bereitzustellen. In der in 8A dargestellten Ausführungsform ist die Boot-ID 28980862-3263-4f7ca154-bf2d67a731ac für die Container #1, #2, #3 und #4 zugänglich. In anderen Ausführungsformen kann eine größere oder kleinere Anzahl von Containern auf einem zugrundeliegenden Host 800 ausgeführt werden. Andere Ausführungsformen können auch eine größere oder kleinere Anzahl von Ziffern beinhalten, die eine eindeutige Boot-ID umfassen.
-
8B ist ein schematisches Diagramm des Hosts von 8A der aktualisierte Boot-IDs beinhaltet, gemäß einer Ausführungsform. Ein Neustart, Start oder ein anderer Prozess auf dem Host, kann zu einer neuen Bootsitzung und Boot-ID führen. Eine aktualisierte Boot-ID kann als Reaktion auf einen Neustart, einen Start oder einen anderen Prozess erzeugt werden, der zu einer neuen Bootsitzung auf dem zugrundeliegenden Host 800 führen kann. Die aktualisierte Boot-ID des zugrundeliegenden Hosts 800 ist für jeden der Container zugänglich, die gemeinsam auf dem zugrundeliegenden Host 800 angeordnet sind. In der in 8B dargestellten Ausführungsform ist die aktualisierte Boot-ID d66020a3-9e47-4eee-bcbe-2d6c8b56c587 für die Container #1, #2, #3 und #4 zugänglich. In anderen Ausführungsformen kann eine größere oder kleinere Anzahl von Containern auf einem zugrundeliegenden Host 800 ausgeführt werden. Andere Ausführungsformen können auch eine größere oder kleinere Anzahl von Ziffern mit einer eindeutigen Boot-ID beinhalten.
-
ABSCHLUSS
-
Die vorstehende Beschreibung der Ausführungsformen der Offenbarung wurde zur Veranschaulichung vorgelegt; sie soll nicht abschließend sein oder die Offenlegung auf die genau offenbarten Formulare beschränken. Fachkundige Personen können sich darüber im Klaren sein, dass aufgrund der oben genannten Offenbarung viele Änderungen und Variationen möglich sind.
-
Einige Teile dieser Beschreibung beschreiben die Ausführungsformen der Offenbarung in Form von Algorithmen und symbolischen Darstellungen von Operationen an Informationen. Diese algorithmischen Beschreibungen und Darstellungen werden von Fachkundigen Personen der Datenverarbeitungsbranche häufig verwendet, um die Substanz ihrer Arbeit effektiv an andere Fachkundige Personen weiterzugeben. Diese Operationen, obwohl funktional, rechnerisch oder logisch beschrieben, werden als durch Computerprogramme oder gleichwertige elektrische Schaltungen, Mikrocodes oder dergleichen ausgeführt. Die beschriebenen Operationen können in Software, Firmware, Hardware oder einer beliebigen Kombination davon ausgeführt werden.
-
Alle hierin beschriebenen Schritte, Operationen oder Prozesse können mit einem oder mehreren Hard- oder Softwaremodulen, allein oder in Kombination mit anderen Geräten, durchgeführt oder implementiert werden. In einer Ausführungsform ist ein Softwaremodul mit einem Computerprogrammprodukt implementiert, das ein computerlesbares Medium umfasst, das einen Computerprogrammcode enthält, der von einem Computerprozessor ausgeführt werden kann, um einen oder alle der beschriebenen Schritte, Operationen oder Prozesse auszuführen.
-
Ausführungsformen der Offenbarung können sich auch auf eine Vorrichtung zur Durchführung der hierin beschriebenen Vorgänge beziehen. Diese Vorrichtung kann speziell für die erforderlichen Zwecke konstruiert sein und/oder eine Mehrzweck-Computervorrichtung umfassen, die selektiv durch ein im Computer gespeichertes Computerprogramm aktiviert oder rekonfiguriert wurde. Ein solches Computerprogramm kann auf einem greifbaren, computerlesbaren Speichermedium oder jeder Art von Medien, die zur Speicherung elektronischer Anweisungen geeignet sind, gespeichert und an einen Computersystembus gekoppelt werden. Des Weiteren können alle in der Spezifikation genannten Computersysteme einen einzelnen Prozessor beinhalten oder Architekturen sein, die zur Erhöhung der Rechenleistung Mehrfach-Prozessor-Designs verwenden.
-
Schließlich wurde die in der Spezifikation verwendete Sprache hauptsächlich zur Lesbarkeit und zu Anweisungszwecken ausgewählt, und sie wurde möglicherweise nicht ausgewählt, um den erfinderischen Gegenstand abzugrenzen oder zu umschreiben. Es ist daher beabsichtigt, den Umfang der Offenbarung nicht durch diese detaillierte Beschreibung, sondern durch alle Ansprüche, die sich auf eine darauf basierende Anwendung beziehen, zu begrenzen. Dementsprechend soll die Offenbarung der Ausführungsformen der Offenbarung den Umfang der Erfindung illustrieren, aber nicht einschränken.