Cloud-Anwendungen unter Kontrolle

Workshop: So überwachen Sie Azure-basierte Cloud-Anwendungen

Vorbereitung einer Cloud-Anwendung

Cloud-Anwendungen müssen mithilfe ein paar weniger Code-Zeilen auf das Sammeln und Auslesen von Diagnosedaten vorbereitet werden. Zunächst muss in einer zu überwachenden Rolle innerhalb der OnStart()-Methode eine neue Instanz eines Diagnostics Monitors erzeugt werden. Diese ist dann für die Steuerung von Datensammlung und -transfer verantwortlich.

Listing 1

using Microsoft.WindowsAzure.Diagnostics;
// Aktivierung der Windows Azure Diagnostics in der OnStart()-Methode einer Rolle
public override bool OnStart()
{
// Start des Diagnostic Monitors. Der Parameter referenziert einen Connection String,
// der in der Servicekonfiguration spezifiziert ist. Dort ist unter anderem hinterlegt
// in welchen Storage Account die Diagnosedaten später übertragen werden sollen.
// Wenn der Wert hier "UseDevelopmentStorage=true" lautet, werden die Diagnosedaten in
// den Development Storage übertragen.
DiagnosticMonitor.Start("DiagnosticsConnectionString");

Die Initialisierung des Diagnostics Monitors wie im Listing oben beschrieben bewirkt, dass Diagnosedaten entsprechend der generellen Voreinstellung erzeugt werden, das heißt, es werden nur solche Daten gesammelt, die in der zuvor erwähnten Tabelle entsprechend gekennzeichnet sind. Das folgende Listing zeigt, wie davon abweichend zusätzliche Daten gesammelt werden können.

Listing 2

public override bool OnStart()
{
// Ermittle die voreingestellte Konfiguration
var config = DiagnosticMonitor.GetDefaultInitialConfiguration();
// Füge einen Performance Counter zur Konfiguration hinzu
config.PerformanceCounters.DataSources.Add(
new PerformanceCounterConfiguration()
{
CounterSpecifier = @"\Processor(_Total)\% Processor Time",
SampleRate = TimeSpan.FromSeconds(5)
});
// Füge der Konfiguration auch noch Einträge aus dem Windows Event Log hinzu
config.WindowsEventLog.DataSources.Add("System!*");
// Veranlasse einen regelmäßigen Datentransfer in Windows Azure Storage
config.DiagnosticInfrastructureLogs.ScheduledTransferLogLevelFilter = LogLevel.Error;
config.DiagnosticInfrastructureLogs.ScheduledTransferPeriod = TimeSpan.FromMinutes(5);
// Starte den Diagnostic Monitor mit der angepassten Konfiguration.
DiagnosticMonitor.Start("DiagnosticsConnectionString", config);
return base.OnStart();
}

In diesem Beispiel wird konfiguriert, dass neben den Standardinformationen auch noch alle fünf Sekunden die Prozessorauslastung (der Performance Counter "\Processor(_Total)\% Processor Time") sowie die das System betreffenden Einträge aus den Windows Event Logs gespeichert werden. Für die Diagnostic Infrastructure Logs wird darüber hinaus festgelegt, dass die enthaltenen Fehlermeldungen alle fünf Minuten in Windows Azure Storage übertragen werden.