Resource Monitoring Oliver Röttger Matrikelnummer: 6100325 E-Mail

Werbung
Universität Paderborn
Seminararbeit: Resource Monitoring
Oliver Röttger
Matrikelnummer: 6100325
E-Mail: [email protected]
Projektgruppe Peer-2-Peer basierte Suche nach Web-Services
Betreuer: Prof. Dr. Odej Kao, Felix Heine, Matthias Hovestadt, Dr. Achim
Streit
21. Dezember 2004
Inhaltsverzeichnis
1 Einführung und Überblick
1.1 Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2
2 Grid Monitoring Architecture
2.1 Systemarchitektur . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1 Komponenten und Interfaces . . . . . . . . . . . . . . .
2
3
4
3 R-GMA
3.1 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
7
4 GridRM
9
4.1 Local Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.1.1 Datentreiber . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2 Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5 Ganglia
5.1 Architektur . . . . . . . .
5.2 Implementierung . . . . .
5.2.1 gmond . . . . . . .
5.2.2 gmetad . . . . . . .
5.2.3 RRDtool . . . . . .
5.3 Performancebetrachtungen
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
12
13
14
14
16
16
16
6 Network Weather Service
16
6.1 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.2 Forecasts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
7 Resümee
19
1
1
Einführung und Überblick
In einem Grid werden durch verteilte Hard- und Software große Rechenressourcen zur Verfügung gestellt. Um ein Grid vernünftig nutzen zu können,
werden weitreichende Informationen über den Zustand des Grids benötigt,
damit z.B. Jobs sinnvoll auf Ressourcen verteilt werden können oder auch
Fehler im Grid schnell gefunden (und damit auch schnell beseitigt) werden.
Ressourcen, die in einem Grid überwacht werden können, umfassen computerinhärente Komponenten wie Prozessoren und Haupt- und Plattenspeicher, Netzwerkkomponenten wie z.B. Switches und Router, eingebettete Systeme, aber auch Applikationen selber, die im Grid laufen.
1.1
Anforderungen
Bei der Entwicklung einer Ressourcenüberwachung müssen einige Bedingungen sorgfältig analysiert werden. So ist zum einen die Heterogenität eines
Grids problematisch, da viele verschiedene Komponenten verschiedenste Arten Statusinformationen über das Grid liefern. Die Gültigkeit der Daten ist
häufig auch sehr kurz (Bsp. Prozessorauslastung). Daraus folgt auch, dass
die Update-Frequenz der Informationen sehr hoch sein kann. Ein weiteres
Problem ist, dass einzelne Daten oft nicht ausreichen, um eine Ressource
umfassend zu charakterisieren, da diese ggf. ein stochastisches System ist [1].
Die Anforderungen, die sich aus diesen Randbedingungen an ein Resource
Monitoring System ergeben sind daher u.a. die Normalisierung verschiedener
Daten, geringe Latenzzeiten, hohe Datenraten, die gemessenen Komponenten
dürfen nur minimal beeinträchtigt werden, d.h. der Überwachungsprozess
stellt nur einen geringen Overhead für die Ressource dar. Des Weiteren muss
das System skalierbar sein, d.h. auch in sehr großen Grids noch vernünftig arbeiten und es muss sicher sein, d.h. es muss möglich sein, Daten mit
Zugriffsrechten zu versehen und die Integrität der Daten sicherzustellen.
In dieser Arbeit werden nun einige Monitoring-Systeme vorgestellt und
dabei verschiedene Aspekte der Ressourcenüberwachung beleuchtet.
2
Grid Monitoring Architecture
Die Grid Monitoring Architecture (GMA) ist eine vom Global Grid Forum
vorgeschlagene (abstrakte) Architektur für das Monitoring verteilter Ressourcen [1].
Aus der Anforderung der Skalierbarkeit folgt, dass nicht jede Anfrage nach
Monitoringdaten über einen zentralen Server laufen darf. Die GMA schlägt
2
daher einen verteilen Directory Service vor, der Metadaten von Producer bzw.
Consumer von Monitoringdaten speichert (s. Abb.1). In den Metadaten sind
neben den Informationen über die angebotenen Monitoringdaten, Informationen enthalten, die es ermöglichen bei einer (Monitoring-)Datenanfrage eine
direkte Verbindung zwischen Consumer und Producer herzustellen.
Abbildung 1: Grobübersicht über GMA
In den folgenden Abschnitten werden die Systemarchitektur und die einzelnen Komponenten der GMA genauer beleuchtet.
2.1
Systemarchitektur
Die Möglichkeiten, mit der Consumer und Producer kommunizieren können,
sind:
Publish/Subscribe: Entweder der Consumer oder der Producer können
eine Verbindung herstellen, bei der der Initiator der Verbindung dem
Server (Wenn der Producer Initiator ist, ist der Consumer Server und
umgekehrt) Interesse“ an bestimmten Daten (mit Information über
”
die Kodierung, Updatefrequenz und weiteren Protokolldetails) mitteilt.
Nach erfolgreicher Verbindungsaufnahme befinden sich beide Kommunikationspartner in dem Zustand Subscription, in dem der Producer die
vereinbarten Daten an den Consumer sendet. Beide Partner können die
Verbindung wieder beenden.
3
Query/Response: Hierbei kann nur der Consumer eine Verbindung anstoßen und bestimmte Daten anfragen; daraufhin sendet der Producer
alle seine Daten in einem Response zurück und danach wird die Verbindung wieder beendet.
Notification: Hierbei sendet der Producer initiativ Daten an den Consumer.
2.1.1
Komponenten und Interfaces
Um Monitoringinformationen im Grid zu finden, wird eine Stelle für die
Verwaltung und Beschreibung zum Wiederauffinden dieser Informationen
benötigt, dies wird in GMA durch einen verteilen Directory Service realisiert.
Der Directory Service speichert Metadaten von Consumer und Producer,
die Verbindungen akzeptieren. Diese umfassen die Informationen über die
akzeptierten Events, Protokolle, Sicherheitsmechanismen etc.1
Mit Hilfe der folgenden Methoden realisiert der Directory Service diese
Funktionalität:
Methode
Add
Update
Remove
Search
1
Funktionalität
Fügt einen Eintrag dem Verzeichnis hinzu
Aktualisiert einen Eintrag
Entfernt einen Eintrag
Sucht nach Informationen aufgrund definierter Auswahlregeln. Es kann sowohl ein einzelnes, auf die Suche zutreffendes Ergebnis, als auch eine Menge von passenden Ergebnissen
zurückgegeben werden. Dies hat der Client bei der Anfrage
mitzuteilen.
Diese Daten werden auch registration genannt.
4
Der Producer ist das Interface, das die Daten zur Verfügung stellt und
diese als Event an Consumer senden kann. Eine Komponente wird auch als
ein Producer bezeichnet, wenn diese mindestens ein Producer-Interface zur
Verfügung stellt.
Die von dem Producer zur Verfügung gestellt Methoden umfassen:
Methode
Funktionalität
Add/Update/Remove Hinzufügen/Aktualisieren und Entfernen von Metadaten der Events, die der
Producer zur Verfügung stellt.
Accept Query
Bearbeitet einen Request von einem
Consumer, d.h. Daten werden als
Event an diesen zurückgesendet.
Accept Subscribe
Akzeptiert ein Subscribe vom Consumer. Der Consumer erhält nun Events
vom Producer, bis ein Unsubscribe
stattfindet.
Accept Unsubscri- Der Consumer bekommt keine weiteren Events zugesandt.
be
Locate Consumer
Durchsucht den Directory Service
nach einem Consumer.
Notify
Versendet ein einzelnes Event an den
Consumer.
Initiate Subscribe
Meldet beim Consumer an, dass dieser
Events zugesandt bekommt (bis zum
Unsubscribe).
Initiate Unsubscri- Beendet eine Subscription eines Conbe
sumers.
5
Korrespondenz
Add/Update/Remove
vom Directory Service
Initiate Query vom
Consumer
Initiate Subscribe
vom Consumer
Initiate Unsubscribe vom Consumer
Search vom Directory Service
Accept Notification
vom Consumer
Accept Subscribe
vom Consumer
Accept Unsubscribe
vom Consumer
Der Consumer empfängt über das Consumer-Interface Monitoringdaten
vom Producer. Wie der Producer wird auch eine Komponente mit einem oder
mehreren Consumer-Interfaces als Consumer bezeichnet.
Methode
Locate Producer
Funktionalität
Sucht im Directory Service nach einem
Producer.
Initiate Query
Fragt beim Producer nach einem
Event, der als Antwort der Anfrage
zurückkommt.
Initiate Subscribe
Führt einen Subscribe beim Producer durch, danach werden regelmäßig
Events an den Consumer versandt.
Initiate Unsubscri- Beendet eine Subscription beim Probe
ducer.
Maintain Registra- Führt ein Update der Registrierung
tion
beim Directory Service durch. Dies betrifft die Events, die der Consumer
empfangen kann.
Accept Notification Akzeptiert einen Subscribe vom Producer, der danach regelmäßig, bis die
Verbindung beendet wird, Events an
den Consumer sendet.
Accept Unsubscri- Führt einen Unsubscribe vom Prodube
cer durch. Danach werden keine weiteren Events an den Consumer gesendet.
Locate Event Sche- Sucht nach einem Event Schema im
ma
Schema Repository.
Korrespondenz
Search vom Directory Service
Accept Query vom
Producer
Accept Subscribe
vom Producer
Accept Unsubscribe
vom Producer
Add, Update und
Remove vom Directory Service
Initiate Subscribe
vom Producer
Initiate Unsubscribe vom Producer
Die GMA sieht vor, dass so genannte Intermediaries eingesetzt werden, die
sowohl Consumer als auch Producer sind. Diese Struktur könnte z.B. für
Archive interessant sein, die sowohl Daten sammeln als auch wieder zur
Verfügung stellen. Abb. 2 veranschaulicht dies.
3
R-GMA
R-GMA [2] ist eine Implementierung der GMA [1], wobei die Besonderheit
dieses Systems ist, dass es sich nach außen wie eine große relationale Datenbank verhält (R-GMA). Tatsächlich ist R-GMA keine Datenbank, sondern
verhält sich nur so. Eine weitere Eigenschaft ist, dass die Registry (Directory
Service) der (R-)GMA völlig transparent verwaltet wird.
6
Abbildung 2: Intermediaries in der GMA
3.1
Architektur
Die Ressourceninformationen werden von R-GMA in einer großen virtuellen
Datenbank mit mehreren Tabellen (pro Virtueller Organisation2 ) verwaltet.
Producer können mit dem SQL-Kommando CREATE TABLE Tabellen erstellen und mit INSERT Daten darin ablegen. Dabei haben alle Tupel einen
Timestamp (in UTC), der gleichzeitig Primary Key der SQL-Datenbank ist.
Consumer können eine SQL-Anfrage an einzelne Tabellen stellen, dabei wird
von der Registry (die für den Benutzer völlig transparent ist) der der Anfrage
am besten entsprechende Producer gewählt. Dieser Prozess wird Mediation
genannt. Abb. 3 zeigt den Aufbau der virtuellen Datenbank.
Die Datenbank ist also virtuell, da die Datenbank nicht zentral gehalten
wird, sondern die Daten von verschiedenen Producern zur Verfügung gestellt
werden. Hat die Registry einen Producer gefunden, kontaktiert der Consumer
dann den Producer auf direktem Weg, so wie es die GMA vorsieht. Die Daten
werden dann von dem Producer als Tupel zurückgegeben.
Es gibt drei verschiedene Klassen von Producern. Die Primary Producer speichern regelmäßig direkt von den Datenquellen Werte. Datenanfragen
werden direkt aus dem internen Speicher beantwortet. Die Secondary Producer aggregieren Werte aus anderen Tabellen und beantworten Anfragen
2
Eine Virtuelle Organisation ist ein Netzwerk von Organisationen oder Individuen mit
einem gemeinsamen Interesse
7
Abbildung 3: Die virtuelle Datenbank von R-GMA [2]
dann auch aus ihrem eigenen Speicher. Die On-Demand Producer beantworten Anfragen nicht aus ihrem internen Speicher, sondern nehmen bei Bedarf
die Werte direkt von den Datenquellen.
Von Producern generierte Tupel haben zusätzlich eine LatestRetentionPeriod. Diese Zeit gibt an, wie lange ein Tupel aktuell“ ist und wird auch bei
”
Übernahme von Tupeln durch den Secondary Producer vom Primary Producer mit übernommen. Zusätzlich wird in der Registry von den Producern
eine HistoryRetentionPeriod deklariert, die angibt wie lang die ältesten Tupel
von den Producern gespeichert werden. Daher haben Producer zwei logische
Tupel-Speicher, einen für Anfragen nach Tupeln, die die LatestRetentionPeriod noch nicht überschritten haben und einen für Tupel, die die HistoryRetentionPeriod noch nicht überschritten haben. Daher liefert eine Anfrage
nach den neusten Tupeln diejenigen aus dem ersten logischen Tupel-Speicher
und eine History-Anfrage alle vorhandenen Tupel.
Zusätzlich gibt es noch eine continuous-Anfrage, bei der alle neuen Tupel,
die der Anfrage entsprechen dem Consumer übermittelt zu werden, bis der
Consumer ein Stopp sendet. Dieser Anfragetyp wird jedoch nicht von OnDemand Producern unterstützt.
R-GMA ist als Web-Service nach der Web Services Architecture des W3C
implementiert, nach der jeder Service seine Operationen in einem WSDLDokument veröffentlicht. In R-GMA wird die Kommunikation zwischen Consumer und Producer über SOAP durchgeführt (Abb. 4).
Da R-GMA aber ein API für das Ansprechen von R-GMA-Services zur
Verfügung stellt, bleibt die SOAP-Kommunikation vom Benutzer vollständig
verborgen. APIs sind für R-GMA z.Z. für Java, C++, C und Python verfügbar.
Es besteht aber dennoch auch die Möglichkeit, das API zu umgehen, um so
direkt mit dem Web-Service zu kommunizieren.
Eine Instanz eines Producers wird erst angelegt, wenn von einem Benutzer
8
Abbildung 4: R-GMA Kommunikation
ein create kommt (bei Benutzung des API geschieht dies automatisch) und
der Benutzer bekommt den Identifier dieser Instanz als Antwort zurück (bzw.
das API). Bei weiteren Anfragen wird dann dieser Identifier mit übermittelt
(von dem API). Wenn eine Zeit lang keine Anfragen an diesen Identifier mehr
gestellt werden, wird diese Instanz des Producers zerstört. Damit wird verhindert, dass ein System mit gleichen Producern überladen wird. Dies wird als
Soft-State Registration bezeichnet, da der Benutzer regelmäßig den Producer
kontaktieren muss, um ihn am Leben“ zu halten. Die Registry verhält sich
”
ebenso. Registrierte Consumer und Producer müssen sich regelmäßig über
Keep-Alive Nachrichten zurückmelden.
4
GridRM
Das GridRM [3] ist ein generisches Monitoring-System, dass auch auf der
GMA [1] basiert. Das Hauptaugenmerk wird dabei auf das Monitoring von
Ressourcen (nicht Anwendungen) gelegt. Alle Knoten im GridRM besitzen
einen GridRM Gateway, der in zwei Layer, nämlich das Global und Local
Layer unterteilt ist.
Der Global Layer ist für die Vernetzung zwischen den Knoten des Grids,
wie es die GMA vorsieht, zuständig. Abb. 5 verdeutlicht diesen Aufbau.
Abbildung 5: Der Global Layer von GridRM [4]
9
4.1
Local Layer
Die Gateways stellen im Local Layer Informationen über lokale Ressourcen
zur Verfügung. Das GridRM setzt dafür die so genannte Extensible Management Architektur ein, die verschiedene Abstraktionslayer des Gateways beschreibt. Aus Abb. 6 kann z.B. das Abstract Client Interface Layer (ACIL)
und das Coarse Grained Security Layer (CGSL) als Schnittstelle zum Global
Layer erkannt werden. Das ACIL dient dabei der Abstraktion von clientspezifischen Ressourceinformationen zu abstrakten GridRM-Datenmodellen und
das CGSL der Authentifikation und Autorisierung von externen Zugriffen auf
Informationen der Site.
Abbildung 6: Die Extensible Management Architektur [3]
Aus Abb. 6 ist auch die Plug-In Struktur von GridRM zu erkennen. Das
Abstract Data Layer (ADL) abstrahiert von darunterliegenden, heterogene
Informationen liefernden Datenquellen. Diese können mit Hilfe dynamisch
zur Laufzeit in das GridRM-Framework eingebundenen Treibern angesprochen werden.
4.1.1
Datentreiber
Im GridRM werden sämtliche Anfragen an Informationen über die Structured
Query Language (SQL) realisiert. Sämtliche Datentreiber müssen ein JDBCAPI implementieren, von dem aber auch ein Großteil aller Funktionen (das
gesamte API umfasst mehrere Hundert Methoden) null zurückgeben oder
eine SQLException auslösen darf. Bei einer Weiterentwicklung der Treiber
können dann diese Funktionalitäten hinzugefügt werden.
Minimal müssen die folgenden Interfaces bzw. Klassen implementiert sein,
um für das GridRM einen korrekten Treiber zu stellen:
10
java.sql.Driver: Legt fest, ob der Treiber mit den angegebenen Datenquellen umgehen kann.
java.sql.Connection: Baut eine Verbindung zur Datenquelle auf und
initialisiert die Schema-Einstellungen (zum Umwandeln der datenquellenspezifischen Informationen in ein gemeinsames Format, s.u.).
java.sql.Statement: Übersetzt SQL-Anfragen in Anfragen an die Datenquelle.
java.sql.ResultSet: Enthält die Ergebnisse einer Anfrage
java.sql.ResultSetMetaData: Beschreibt den Aufbau des zurückgelieferten ResultSets
Das Format der Monitoringdaten in GridRM entspricht dem GLUESchema (Grid Laboratory Uniform Environment) [5]. Diese Schema ermöglicht
eine einheitliche Benennung der Informationen unabhängig von den heterogenen Datenquellen. Aus diesem Grund müssen die Datenquellen-Treiber
Daten zwischen dem GLUE-Schema und dem proprietären DatenquellenFormat konvertieren können, wobei sie den Schema Manager zu Hilfe nehmen können, da dieser schon Mapping Funktionen für GLUE bietet. Falls
eine Konvertierung von bestimmten Werten einer Datenquelle nicht möglich
oder noch nicht implementiert ist, kann ein Treiber null zurückgeben.
Treiber können beim Gateway registriert werden, wenn der Gateway startet, oder dynamisch, sobald ein Client einen Treiber zu Verfügung stellt.
Wenn ein Treiber schon einmal beim Gateway registriert war, ist dieser im
Connection Manager gecacht, und wird auch nach einem Neustart des Gateway sofort wieder registriert. Es ist auch möglich einen Treiber erst bei einer
konkreten Anfrage eines Clients an eine bestimmte Datenquelle zu registrieren. Sämtliche Treiber-Registrierungen werden über den GridRM Driver
Manager abgewickelt. Eine typische Abfrage nach Informationen ist in Abb.
7 dargestellt.
Aus Abb. 7 ist außerdem der Event Manager zu erkennen. Dieser nimmt
native Daten von Datenquellen entgegen, die ohne Umweg eines Treiber erzeugt werden, speichert diese dauerhaft und leitet sie an dafür registrierte
Komponenten weiter. Zudem können Events von GridRM in ein für die Datenquellen verständliches Format konvertiert werden.
11
Abbildung 7: Ein Query im GridRM Gateway [3]
4.2
Status
Ein großer Nachteil des GridRM ist, dass es noch in der Entwicklung ist und
noch nicht zur Verfügung steht. Auf der offiziellen Internetseite des Projektes
wird ein Release für Ende dieses Jahres (2004) angekündigt3 . Es steht schon
fest, dass initial Datenquellentreiber für Ganglia, NetLogger, den Network
Weather Service (NWS), das Simple Network Managment Protocol (SNMP)
und das Scalable Cluster Management System (SCMS) zur Verfügung stehen
werden.
5
Ganglia
Ganglia [6] ist ein weiteres skalierbares, verteiltes Monitoringsystem für Grids,
wobei diese in der Ganglia-Terminologie ein Zusammenschluss verschiedener Cluster sind. Ganglia überwacht den Zustand eines Clusters basierend
auf einem multicastbasierten listen/announce Protokoll und setzt verbreitete und etablierte Techniken wie XML, XDR (External Data Representation,
ein Standard für die Binärcodierung von Daten) [7] ein und das RRDtool
zum Speichern und Visualisieren von Daten.
3
Meldung vom 8.11.2004
12
5.1
Architektur
In jedem Cluster benutzen einzelne Knoten Heartbeat Messages, die an eine
bekannte Multicast-Addresse versendet werden, um die Mitgliedschaft in dem
Cluster aufrecht zu halten. Werden über eine gewisse Anzahl von typischen
Announcement-Intervallen keine Heartbeat-Messages versandt, nimmt Ganglia an, dass der Knoten nicht mehr zur Verfügung steht. Die Knoten in einem
Cluster überwachen ihre lokalen Ressourcen und senden, wenn sich signifikante Änderungen ergeben, diese Informationen an die bekannte MulticastAdresse. Auch Applikationen können Informationen über eigene Metriken in
der gleichen Weise an diese Adresse veröffentlichen. Alle Knoten innerhalb eines Clusters akzeptieren Multicast-Pakete sowohl von Applikationen als auch
die von anderen Knoten. Damit hat jeder Knoten innerhalb eines Clusters
die gleichen Informationen. Nach einem Crash kann so schnell der Zustand
des Clusters wiederhergestellt werden.
In Ganglia werden verschiedene Cluster über eine Baumstruktur miteinander verbunden, wie in Abb. 8 dargestellt ist. Da jeder Knoten in einem
Abbildung 8: Die Ganglia Architektur [6]
Cluster ja Informationen über alle anderen Knoten und auch Applikationen
innerhalb des Clusters hat, kann das gesamte Cluster durch einen einzelnen,
beliebigen Knoten repräsentiert werden. Knoten, die höher in dem Baum
liegen, halten aus Redundanzgründen trotzdem Verbindungen zu mehreren
Knoten in einem Cluster. Damit repräsentiert jeder Knoten in dem Baum
eine Menge von Clustern und Informationen können über regelmäßiges Polling tieferliegenden Knoten aggregiert werden. Dabei werden auch immer alle
13
Informationen eines Knoten übertragen.
5.2
Implementierung
Ganglia ist durch die zwei Daemonen gmond und gmetad implementiert.
gmond ist der Daemon, der auf jedem Knoten gestartet wird und zum einen
für die Built-In Metriken als auch für die benutzer-/applikationsspezifischen
Metriken zuständig. gmetad ist für Informationen von Clusterverbünden zuständig.
5.2.1
gmond
gmond selber in mehrere Threads aufgeteilt, die alle dedizierte Aufgaben
haben (s. Abb. 9). Der Collect and Publish Thread sammelt lokale Informationen und versendet sie über Multicast. Außerdem sendet er die periodischen Heartbeat Messages. Die Listening Threads empfangen MulticastNachrichten von anderen Knoten im Cluster und legen diese Daten in einem als hierarchischer Hashtable organisierten lokalen Speicher ab. Als dritte Gruppe von Threads akzeptieren die XML Export Threads Anfragen nach
Daten von anderen Knoten und versenden diese entsprechend XML-kodiert.
Es ist normalerweise der Fall, dass die Anzahl eingehender Multicast-Nachrichten
die Anzahl an Requests von anderen Knoten bei weitem überwiegen.
In Ganglia werden die Multicastnachrichten XDR [7] kodiert versendet
und auch als Binärdaten abgelegt, da dies einen viel effizienteren Zugriff
ermöglicht und viel weniger Platz benötigt als eine XML-Kodierung.
Abbildung 9: Der Aufbau des gmond-Daemonen [6]
Typische Built-In Metriken, die vom gmond überwacht werden sind Dinge wie CPU-Auslastung, Speicherverbrauch, Prozesstabellen, System und Betriebssystemdetails etc. Diese Informationen werden über Standard-Interfaces
14
gesammelt (z.B. /proc). Applikationen können Metriken über das Kommandozeilentool gmetric publizieren. Um die Datenmengen, die per Multicast
versendet werden, zu minimieren, werden für die Built-In Metriken so genannte Static Metric Lookup-Tabellen eingeführt, in denen zu einem eindeutigen Key die Charakteristiken der entsprechenden Metrik verzeichnet sind.
Bei applikationsspezifischen Metriken müssen die Charakteristika jedoch explizit angegeben werden. Tabelle 1 stellt beispielhaft so eine Tabelle dar.
In weiteren Tabellen werden zu jeder Metrik Intervalle, Schwellwerte usw.
Key (xdr u uint) Metric
Value Format
0
User-defined Explicit
xdr u short
1
cpu num
2
cpu speed
xdr u uint
3
mem total
xdr u uint
4
swap total
xdr u uint
...
...
...
Tabelle 1: Eine Teil einer Static Metric Lookup Tabelle
festgelegt. Schwellwerte legen fest, ab wann Monitoringdaten dieser Metrik
versendet werden. So werden Ressourcen eingespart, wenn keine Daten in uninteressanten Wertebereichen zur Verfügung stehen. Die Intervalle kann man
für praktisch konstante Werte (z.B. Anzahl der CPUs) sehr groß wählen
und damit einer Ressourcenverschwendung vorbeugen. Die Intervalle werden
über Time Thresholds beschrieben. In Ganglia werden Nachrichten bis zu
dieser Maximalzeit zufallsverteilt versendet, damit die Netzwerklast zeitlich
möglichst gleichmäßig verteilt wird. Durch die Obergrenze (Time Threshold)
kann jedoch trotzdem ein Nicht-Ankommen von Nachrichten festgestellt werden.
Monitoringdaten haben einen Timestamp und werden von gmond mit
zwei Zeitlimits versehen. Bei einer Anfrage bekommt ein Client zusätzlich zu
den Monitoringdaten selber das Soft Limit mitgeteilt. Ist die aktuelle Zeit
über dem Soft Limit, weiß der Client, dass diese Daten evtl. schon veraltet
sind. Ist das Hard Limit überschritten werden die Monitoringdaten gelöscht
und so wieder Speicher freigegeben.
Um festzustellen, ob Knoten zwischen zwei Heartbeat-Messages neu gestartet worden sind, werden die Heartbeat-Messages mit der Startzeit des
gmond als Timestamp versehen. Stellt ein Knoten zwischen zwei HeartbeatMessages eines anderen Knoten eine veränderter Zeit fest, weiß er, dass der
Knoten neue Monitoringdaten braucht, um wieder den aktuellen Zustand des
Clusters zu kennen. Dazu werden im alle Time Thresholds zurückgesetzt und
15
so werden Monitoringdaten versandt, sobald sie bereitstehen. Dies ist besonders bei selten publizierten Daten (wie z.B. die Anzahl CPUs eines Knoten)
wichtig.
5.2.2
gmetad
Mit dem gmetad-Daemon werden Verbünde von Clustern überwacht und Daten von verschieden Clustern zusammengeführt (s. Abb. 8). Jeder gmetadDaemon pollt regelmäßig Informationen von den Datenquellen (d.h. von
gmond-Daemonen, die ein ganzes Cluster repräsentieren oder von anderen
gmetad-Daemonen, die Verbünde von Clustern repräsentieren), parst und
aggregiert die ankommende XML-Daten und stellt diese so anderen Clients
wieder als XML-Daten zur Verfügung. Zu jeder Datenquelle werden in einer Konfigurationsdatei des gmetad verschiedene IP-Adressen von tiefer im
Baum liegenden Knoten abgelegt, um Daten auch bei Wegfall eines Knoten
weiter sammeln zu können. Im gmetad wird für jede Datenquelle ein eigener
Thread gestartet.
5.2.3
RRDtool
In Ganglia werden Daten im RRDtool abgelegt, mit dem diese auch visualisiert werden können. Das RRDtool (Round Robin Database Tool) [8] kann
Zeitreihen von Daten in einer konstant großen Datenbank ablegen, in dem
bei Daten mit fortschreitendem Alter die Granularität schrittweise gröber
wird. Gleichzeitig kann das RRDtool aus den Datenbeständen die Werte der
verschiedenen Metriken von Ganglia als Graph gegen die Zeit auftragen.
5.3
Performancebetrachtungen
In [6] werden Messungen von Ganglia auf verschiedenen Grids beschrieben.
Die Messungen zeigen, dass Ganglia linear mit der Anzahl der Knoten und
der Clustergröße in dem Grid skaliert. Dies betrifft Parameter wie benötigte
Bandbreite, Anzahl Pakete, Speicherverbrauch etc. Dies ermöglicht Cluster
mit hunderten von Knoten und Verbünde mit bis zu 100 Clustern; dies kann
sogar noch gesteigert werden, wenn weitere Optimierungen wie z.B. Komprimierung eingesetzt werden.
6
Network Weather Service
Der Network Weather Service (NWS) [9] erhält seinen Namen dadurch, dass
er ähnlich einer Wettervorhersage, Vorhersagen über die Performance eines
16
Netzwerks und einzelner Computer macht. Die Vorhersagen werden auf Basis
historischer Daten für einen befristeten Zeitraum gemacht. Durch solche Aussagen können z.B. Scheduler optimiert werden. Ziel des NWS ist es, neben den
in der Einleitung genannte allgemeingültigen Zielen für Monitoring-Systeme
im Grid, eine möglichst präzise Vorhersage zu treffen.
6.1
Architektur
Im NWS werden vier verschiedene Teilprozesse4 eingesetzt. Der Persistant
State Prozess legt Messwerte dauerhaft in einem persistenten Speicher ab
und kann diese bei Bedarf auch von dort wieder laden. Der Name Server
Prozess verknüpft symbolische Namen mit Low-Level Kontaktinformationen
(z.B. IP-Adresse und Port). Die Sensor Prozesse sammeln von den überwachten Ressourcen die Messwerte. Der Forecaster Prozess trifft für eine
spezifizierte Ressource eine Performance-Vorhersage (für ein bestimmtes Intervall). Abb. 10 zeigt wie die Prozesse auf verschiedene Computer verteilt
werden können. In einem System gibt es nur einen Name Server, der auch
Abbildung 10: Die verschiedenen Prozesse im NWS
als einziger eine allgemein bekannte Adresse besitzt und bei dem alle anderen Prozessen beim Start die Bindings ihrer Namen registrieren. Nach einer
spezifizierten Zeit verlieren die Bindings ihre Gültigkeit und müssen neu registriert werden. Daher müssen sich aktive Prozesse regelmäßig beim Name
Server Prozess melden. Die Sensor Prozesse monitoren die Performance des
4
in [9] als Component Processes bezeichnet
17
Netzwerks und der Prozessoren und legen diese Informationen im Persistant
State Prozess ab. Der Forecaster Prozess agiert als Proxy zwischen Workstations und Benutzeranfragen. Alle Prozesse im NWS sind stateless, d.h. alle
Messungen (inkl. Timestamp) werden vom Persistant State Prozess sofort
persistent gespeichert und dann ein Acknowledge versendet. Da Messungen
für eine Vorhersage nur bis zu einem bestimmte Alter eine Rolle spielen,
werden zu alte Messungen verworfen.
6.2
Forecasts
Um eine Vorhersage zu machen, fragt der Forecaster beim Persistant State
Prozess nach einer Zeitreihe eines bestimmten Parameters. Das NWS versucht nicht messwertspezifische Vorhersagemodelle auf eine Zeitreihe anzuwenden, sondern versucht aus einer Menge von unspezifischen VorhersageModellen das auszuwählen, das wahrscheinlich die höchste Genauigkeit liefern wird. Dazu werden die Modelle auf verschieden große erste Teile“ der
”
Zeitreihe von Messwerten angewandt und daraus die restlichen Werte vor”
hergesagt“. Das Modell, dass kumulativ den geringsten Fehler bei der Vor”
hersage“ der schon bekannten Werte hat, wird benutzt um Werte aus der
(nahen) Zukunft vorherzusagen. Der Vorteil daraus ist, dass nicht für alle
gemessenen Parameter Vorhersage-Modelle vorliegen müssen. Die verschiedenen Vorhersage-Modelle, aus denen schließlich das beste gewählt wird, sind
über ein Interface beliebig erweiterbar. Beim Bestimmen einer Vorhersage
werden alle registrierten Prediction Module nach einer Vorhersage befragt.
Die Güte einer solchen Vorhersage ist aus Abb. 11 ersichtlich. Auf der
linken Seite der Abbildung ist die tatsächliche Netzwerklast einer Verbindung zwischen der University of California, Santa Barbara und der Kansas
State University zu sehen. Auf der rechten Seite ist die Vorhersage des NWS
dargestellt.
Abbildung 11: Links: Die gemessene Netzwerklast, Rechts: Die Vorhersage
vom NWS[9]
18
7
Resümee
In den vorhergehenden Kapiteln wurden nun einige Monitoringsysteme für
Ressourcen in Grids vorgestellt. Die beiden System R-GMA und GridRM
basieren auf der GMA vom GGF (Global Grid Forum), wobei das GridRM
in Global und Local Layer untergliedert wird, von dem nur“ der Global
”
Layer über eine GMA-Architektur vernetzt ist. Bei GridRM wird besonderer Wert auf die Erweiterbarkeit gelegt, da alle denkbaren Datenquellen um
Treiber erweitert werden können, die sich statisch oder dynamisch bei dem
Local Layer des verwaltenden Gateway registrieren. Sämtliche Kommunikation wird wie beim R-GMA über die Datenbanksprache SQL durchgeführt
wobei die Architektur des R-GMA explizit vorsieht, dass sich das System
nach außen hin wie eine große relationale Datenbank verhält und der interne
Aufbau des Systems bei der Kommunikation so wenig wie möglich eine Rolle
spielt.
Bei Ganglia ist eine ausgeklügelte Architektur mit hoher Ausfallsicherheit
erkennbar. Dadurch, dass Ressourceninformationen des Systems auf allen
Knoten verteilt sind, ist es für die Verfügbarkeit von Daten nicht tragisch,
wenn ein System ausfällt. Durch die Baumstruktur ist es leicht möglich einen
Überblick über die Ressourcen des Grids (bzw. eines Teils des Grids) zu
bekommen, bevor detaillierte Informationen angefordert werden.
Mit dem Network Weather Service liegt ein Resource-Monitoring System
vor, mit dem aus Zeitreihen von beliebigen Parametern Vorhersagen über die
zukünftige Performance des Systems getroffen werden kann. Daraus ergeben
sich enorme Vorteile beim Schedulen von Jobs, da hier mit hoher Wahrscheinlichkeit ein sehr guter Schedule aufgestellt werden kann.
19
Literatur
[1] B. Tierney, R. Aydt, D. Gunter, W. Smith, M. Swany, V. Taylor, and
R. Wolski. A grid monitoring architecture. Technical report, Global Grid
Forum, January 2002.
[2] R-gma: Relational grid monitoring architecture, 2004. Verfügbar bei
http://www.r-gma.org.
[3] Mark Baker and Garry Smith. GridRM: An extensible resource monitoring system. Technical report, Distributed Systems Group, University of
Portsmouth, UK, June 2003.
[4] Garry Smith. GridRM: A resource monitoring architecture for the grid,
2002.
[5] Glue-schema. Verfügbar bei http://www.hicb.org/glue/glue-schema/
schema.htm.
[6] Matthew L. Massie, Brent N. Chun, and David E. Culler. The ganglia
distributed monitoring system: design, implementation, and experience.
Technical report, Elsevier B.V., Amsterdam, 2003.
[7] R. Srinivasan. XDR: External data representation standard (rfc1832).
Technical report, Network Working Group, 1995.
[8] Ketan Patel.
RRD beginner guide.
Verfügbar bei http:
∼
//people.ee.ethz.ch/ oetiker/webtools/rrdtool/tutorial/
rrdbeginners.html.
[9] Rich Wolski, Neil T. Spring, and Jim Hayes. The network weather service: A distributed resource performance forecasting service for metacomputing. Technical report, National Partnership for Advanced Computational Infrastructure, 1999.
20
Herunterladen