<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 22773 -->
<!-- Reviewed: no -->
<sect1 id="zend.service.windowsazure.diagnostics.manager">
    <title>Zend_Service_WindowsAzure_Diagnostics_Manager</title>

    <para>
        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.
    </para>

    <para>
        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.
    </para>

    <para>
        Mehr Informationen darüber welche Logs, Geschwindigkeits Messungen, Crash Dumps, ...
        gemonitort werden können, können auf der <ulink
            url="http://msdn.microsoft.com/en-us/library/ee758705(v=MSDN.10).aspx">entsprechenden
            MSDN Webseite</ulink> gefunden werden.
    </para>

    <para>
        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.
    </para>

    <para>
        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.
    </para>

    <sect2 id="zend.service.windowsazure.diagnostics.manager.api">
        <title>API Beispiele</title>

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

        <sect3 id="zend.service.windowsazure.diagnostics.manager.api.config-exists">
            <title>
                Prüfen ob eine Diagnose-Konfiguration für die aktuelle Rollen Instanz existiert
            </title>

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

            <example id="zend.service.windowsazure.diagnostics.manager.api.config-exists.example">
                <title>
                    Prüfen ob eine Diagnose Konfiguration für die aktuelle Rollen Instanz exisztiert
                </title>

                <programlisting language="php"><![CDATA[
/** 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';
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.windowsazure.diagnostics.manager.api.config-load">
            <title>Laden der Diagnose Konfiguration für die aktuelle Rollen Instanz</title>

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

            <example id="zend.service.windowsazure.diagnostics.manager.api.config-load.example">
                <title>Laden der Diagnose Konfiguration der aktuellen Rollen Instanz</title>

                <programlisting language="php"><![CDATA[
/** 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();
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.windowsazure.diagnostics.manager.api.config-store">
            <title>Speichern der Diagnose Konfiguration der aktuellen Rollen Instanz</title>

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

            <example id="zend.service.windowsazure.diagnostics.manager.api.config-store.example">
                <title>Speichern der Diagnose Konfiguration der aktuellen Rollen Instanz</title>

                <programlisting language="php"><![CDATA[
/** 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);
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.windowsazure.diagnostics.manager.api.config-perf">
            <title>Einschreiben für einen Geschwindigkeits Zähler</title>

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

            <example id="zend.service.windowsazure.diagnostics.manager.api.config-perf.example">
                <title>Einschreiben für einen Geschwindigkeits Zähler</title>

                <programlisting language="php"><![CDATA[
/** 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);
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.windowsazure.diagnostics.manager.api.config-roleid">
            <title>Die Id der Rollen Instanz erhalten</title>

            <para>
                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.
            </para>

            <example id="zend.service.windowsazure.diagnostics.manager.api.config-roleid.example">
                <title>Erhalten der Id der aktuellen Rollen Instanz</title>

                <programlisting language="php"><![CDATA[
echo 'Die Id der Rollen Instanz ist ' . $_SERVER['RdRoleId'];
]]></programlisting>
            </example>
        </sect3>
    </sect2>
</sect1>
