Next: 3.4.3.3 Korrelation von Subtransaktionen
Up: 3.4.3 Application Response Measurement
Previous: 3.4.3.1 Die Computer Measurement
Der Kerngedanke des Ansatzes der CMG ist Markierung der für die zu
überwachenden Transaktionen zuständigen Codesequenzen (siehe
http://www.hp.com/go/arm). Der Aufruf
entsprechender Methoden der ARM API am Anfang und am Ende der
Transaktionen ermöglicht es Agenten, die ebenfalls mit der ARM API
bestückt sind, diese Applikation zu beobachten. Die Architektur
eines solchen Ansatzes ist in Abbildung 3.8
dargestellt.
Abbildung 3.8:
Die Architektur der ARM-API
|
Die ARM API [ARM 97] besteht aus einem Satz von Funktionen, die
in einer Shared Library zur Verfügung gestellt werden. Jeder Agent
verfügt über eine eigene Implementierung dieser Library. Die zur
Verfügung stehenden Funktionen werden in Tabelle 3.2
kurz dargestellt.
Tabelle:
Übersicht über die ARM-Funktionen
arm_init |
Initialisiert die ARM-Umgebung für die
Applikation. |
arm_getid |
Mit arm_getid wird eine Transaktion in
ARM registriert und bezeichnet. |
arm_start |
arm_start signalisiert den Beginn der
Transaktion. |
arm_update |
Diese optionale Funktion kann nach
arm_start und vor arm_stop aufgerufen werden, um
genauere Informationen über die Transaktion zu erhalten. |
arm_stop |
arm_stop signalisiert das Ende der
Transaktion. |
arm_end |
Am Ende der Applikation kann arm_end
aufgerufen werden, um z.B. allokierten Speicher wieder freizugeben. |
Nun soll anhand eines Beispieles dargestellt werden, wie eine
Applikation instrumentiert wird. Dazu wird angenommen, eine
Geschäftsapplikation mit diversen Server-Anfragen soll so bestückt
werden, daß einzelne Transaktionen gemessen werden können.
Vereinfacht würde das wie folgt aussehen:
APPL = arm_init("Application Name", "User Name")
A = arm_getID("Transaction A", APPL)
B = arm_getID("Transaction B", APPL)
C = arm_getID("Transaction C", APPL)
loop until program ends
arm_start(A)
arm_start(B)
// do some work
arm_stop(B, status)
arm_start(C)
loop until transaction ends
// do some work
arm_update(C)
end loop
arm_stop(C, status)
arm_stop(A, status)
end loop
arm_end
Zu Beginn der Applikation wird die Methode arm_init mit den
Parametern Application Name und User Name
aufgerufen. Ziel dieser Initialisierung ist die Vereinfachung der
Organisation der später gemessenen Werte. Diese Methode gibt einen
Identifikator zurück, der durch den ARM-Agenten vergeben wird und
eine Klasse von Transaktionen durch ihre Beziehung zu einer
Applikation definiert.
arm_getID wird typischerweise in der Initialisierungsphase
einer Applikation aufgerufen, um einen Transaktionsnamen zu
erstellen. Die Kombination von Transaktionsnamen und
Applikationsidentifikator ergibt einen
eindeutigen Schlüssel zur Identifikation einer Transaktion. Der
Rückgabewert der Methode arm_getID stellt einen
eindeutigen Identifikator für eine Transaktion dar und wird später
den einzelnen arm-Aufrufen als Parameter übergeben.
arm_start signalisiert dem Agenten nun den Beginn der zu
messenden Transaktion. Hierbei können sich diese Transaktion
ineinander verschachteln.
arm_update stellt eine Methode dar, deren Benutzung optional
ist. Sie teilt dem Agenten mit, daß die betreffende Transaktion noch
läuft. Typischerweise wird sie bei längeren Transaktionen
eingesetzt, und zwar in bestimmten Zeitintervallen (Heartbeat, z.B. einmal
pro Minute) oder nach dem Abarbeiten einer bestimmten Menge der
Transaktion (z.B. nach je 1000 abgearbeiteten Datensätzen).
arm_stop indiziert das Ende einer Transaktion und kann von
einem neuen Prozess oder Thread bekanntgegeben werden. Diese Methode
übergibt neben dem Transaktionsbezeichner auch eine Statusmitteilung,
die folgende Werte annehmen kann:
- GOOD
Die Transaktion wurde erfolgreich ausgeführt und
der beabsichtigte Dienst wurde erbracht.
- ERROR
Die Transaktion wurde mit einem Fehler beendet
und der beabsichtigte Dienst wurde nicht erbracht.
- ABORT
Die Transaktion wurde nicht beendet und der
Dienst wurde nicht erbracht. Ein möglich Fehler könnte ein Time
Out Fehler o.ä. sein.
arm_end teilt dem Agenten mit, daß die Applikation keinen
Aufruf der ARM-API mehr tätigen wird. Diese Methode wird
typischerweise beim Beenden der Applikation aufgerufen. Alle nicht
gestoppten Transaktionen dieser Applikation werden durch den Agenten
verworfen.
Next: 3.4.3.3 Korrelation von Subtransaktionen
Up: 3.4.3 Application Response Measurement
Previous: 3.4.3.1 Die Computer Measurement
Copyright Munich Network Management Team