# Zend_Service_WindowsAzure_Diagnostics_Manager

Der Blob Speicher speicher ein Set von Binären Daten. Der Blob Speicher bietet die folgenden drei Windows Azure Diagnostiken und erlaubt es diagnostische Daten von einem Service zu sammeln welches in Windows Azure läuft. Dies kann für Aufgaben verwendet werden, wie Debugging und Fehlersuche, Geschwindigkeitsmessung, Monotoring der Ressourcen Verwendung, Verkehrsanalysen, Kapazitätsplanung und Bekanntgabe. Sobald die diagnostischen Daten gesammelt wurden können Sie zu einem Windows Azure Speicheraccount geschickt werden um persistent zu bleiben. Die Übermittlung kann entweder zeitgesteuert oder auf Wunsch passieren.

Man kann die Windows Azure Diagnose vom Code aus konfigurieren welcher in einer Rolle läuft. Man kann Sie auch von der Ferne, über eine Anwendung welche außerhalb von Windows Azure läuft, konfigurieren. Durch das entfernte Managen der Windows Azure Diagnose kann man seinen Service mit einer initialen Diagnose Konfiguration starten, und dann diese Konfiguration vom Code aus verbessern welche außerhalb des Services läuft, ohne das der Service hochgerüstet werden muss.

Mehr Informationen darüber welche Logs, Geschwindigkeits Messungen, Crash Dumps, ... gemonitort werden können, können auf der entsprechenden MSDN Webseite gefunden werden.

Beachte: Diagnosen werden auf einer pro-Rollen Basis konfiguriert. Dies bedeutet dass jede Rolle separat konfiguriert werden sollte. Die Spezifikation der Diagnose Anleitungen für eine Rollen Instanz impliziert nicht das diese Konfiguration auf anderen Rollen Instanzen geladen wird.

Die Diagnose API für die Windows Azure SDK für PHP kann nur verwendet werden wenn der DiagnosticMonitor während des Starts der Rolle gestartet wurde. Aktuell wird dies nur Unterstützt wenn eine Anwendung mit dem Windows Azure Command-Line Tools für PHP Entwickler gepackt wurde.

## API Beispiele

Diese Überschrift zeigt einige Beispiele der Verwendung der `Zend_Service_WindowsAzure_Diagnostics_Manager` Klasse. Andere Features sind auch im Download Paket vorhanden, sowie eine detailierte API Dokumentation dieser Features.

### Prüfen ob eine Diagnose-Konfiguration für die aktuelle Rollen Instanz existiert

Durch Verwendung des folgenden Codes kann man prüfen ob eine Diagnose Konfiguration für die aktuelle Rollen Instanz existiert.

#### Prüfen ob eine Diagnose Konfiguration für die aktuelle Rollen Instanz exisztiert

    /** Zend_Service_WindowsAzure_Storage_Blob */
    require_once 'Zend/Service/WindowsAzure/Storage/Blob.php';

    /** Zend_Service_WindowsAzure_Diagnostics_Manager */
    require_once 'Zend/Service/WindowsAzure/Diagnostics/Manager.php';

    $storageClient = new Zend_Service_WindowsAzure_Storage_Blob();
    $manager = new Zend_Service_WindowsAzure_Diagnostics_Manager($storageClient);

    $configurationExists = $manager->configurationForCurrentRoleInstanceExists();

    echo 'Die Konfiguration ' . ($configurationExists ? 'existiert' : 'existiert nicht';

### Laden der Diagnose Konfiguration für die aktuelle Rollen Instanz

Durch Verwendung des folgenden Codes kann man die Diagnose Konfiguration der aktuellen Rollen Instanz laden.

#### Laden der Diagnose Konfiguration der aktuellen Rollen Instanz

    /** Zend_Service_WindowsAzure_Storage_Blob */
    require_once 'Zend/Service/WindowsAzure/Storage/Blob.php';

    /** Zend_Service_WindowsAzure_Diagnostics_Manager */
    require_once 'Zend/Service/WindowsAzure/Diagnostics/Manager.php';

    $storageClient = new Zend_Service_WindowsAzure_Storage_Blob();
    $manager = new Zend_Service_WindowsAzure_Diagnostics_Manager($storageClient);

    $configuration = $manager->getConfigurationForCurrentRoleInstance();

### Speichern der Diagnose Konfiguration der aktuellen Rollen Instanz

Durch Verwendung des folgenden Codes kann man die Diagnose Konfiguration der aktuellen Rollen Instanz speichern.

#### Speichern der Diagnose Konfiguration der aktuellen Rollen Instanz

    /** Zend_Service_WindowsAzure_Storage_Blob */
    require_once 'Zend/Service/WindowsAzure/Storage/Blob.php';

    /** Zend_Service_WindowsAzure_Diagnostics_Manager */
    require_once 'Zend/Service/WindowsAzure/Diagnostics/Manager.php';

    $storageClient = new Zend_Service_WindowsAzure_Storage_Blob();
    $manager = new Zend_Service_WindowsAzure_Diagnostics_Manager($storageClient);

    $configuration = // ...;
    $manager->setConfigurationForCurrentRoleInstance($configuration);

### Einschreiben für einen Geschwindigkeits Zähler

Durch Verwendung des folgenden Codes kann man sich für einen Geschwindigkeits Zähler einschreiben.

#### Einschreiben für einen Geschwindigkeits Zähler

    /** Zend_Service_WindowsAzure_Storage_Blob */
    require_once 'Zend/Service/WindowsAzure/Storage/Blob.php';

    /** Zend_Service_WindowsAzure_Diagnostics_Manager */
    require_once 'Zend/Service/WindowsAzure/Diagnostics/Manager.php';

    $storageClient = new Zend_Service_WindowsAzure_Storage_Blob();
    $manager = new Zend_Service_WindowsAzure_Diagnostics_Manager($storageClient);

    $configuration = $manager->getConfigurationForCurrentRoleInstance();

    // Einschreiben für die \Processor(*)\% Prozessor Zeit
    $configuration->DataSources->PerformanceCounters->addSubscription('\Processor(*)\% Processor Time', 1);

    $manager->setConfigurationForCurrentRoleInstance($configuration);

### Die Id der Rollen Instanz erhalten

Die Id der aktuellen Rollen Instanz ist in der Server Variable RdRoleId definiert. Sie ist nur vorhanden wenn die Anwendung in der Entwickler Fabrik oder der Windows Azure Fabrik läuft.

#### Erhalten der Id der aktuellen Rollen Instanz

    echo 'Die Id der Rollen Instanz ist ' . $_SERVER['RdRoleId'];