Visual Studio 2013

Entwicklung der nächsten Generation mit Application Insights

Charles Sterling

Das Tempo der Softwarebereitstellung hat in den letzten Jahren dramatisch zugenommen. Die Entwicklung verlief von Wasserfallmethoden zu flexiblen Entwicklungsmethoden bis hin zur heutigen kontinuierlichen Versionsfolge. Dadurch ist besseres, schnelleres und direkteres Feedback wichtiger geworden. Dies wird als Reaktionsfähigkeit bezeichnet. Entscheidungsträger benötigen Tools, die integrierte Analysen bieten und zeitabhängige Daten sofort dem gesamten Team zur Verfügung stellen.

Das neue Microsoft Application Insights, das beim Start von Visual Studio 2013 angekündigt wurde, ist eine Dienstsuite, die wichtige Fragen beantworten soll, welche sich bei Bereitstellungen in hoher Qualität stellen: Ist unsere Anwendung verfügbar? Läuft sie? Bieten wir die Funktionen, die sich unsere Benutzer wünschen?

Application Insights ist nicht auf den Betrieb beschränkt. Um Übergaben zu vermeiden und den Informationsfluss im Team zu beschleunigen, sind Tools integriert, die Entwickler und Betrieb bereits verwenden – Visual Studio und Visual Studio Online. Dadurch können alle Teammitglieder einfach die benötigten Informationen erhalten.

Application Insights wurde für die Verwendung mit in Microsoft .NET Framework, Java, Windows Azure-Diensten, Websites, Windows Store-Anwendungen und Windows Phone 8-Anwendungen integrierten Diensten entwickelt. Dank der vollständigen Komplettüberwachung erhalten Sie ein Gesamtbild Ihrer Anwendung, und nicht nur kleine Teile isolierter Daten.

Einführung in Application Insights

Die ersten Schritte mit Application Insights sind einfach. Um die Application Insights-Telemetrie zu Web-, Windows Phone- oder Windows Store-Anwendungen hinzuzufügen, laden Sie die Erweiterung Application Insights Tools for Visual Studio herunter, die Sie in der Visual Studio Gallery finden (aka.ms/aivsix). In zukünftigen Versionen von Visual Studio wird dieser Zusatzschritt nicht mehr erforderlich sein.

Wählen Sie für neue Projekte in Visual Studio 2013 „Add Application Insights to Project“ (Application Insights zu Projekt hinzufügen), wenn Sie ein neues Projekt erstellen (siehe Abbildung 1).

Add Application Insights to New Visual Studio 2013 Projects

Abbildung 1 Application Insights zu neuen Visual Studio 2013-Projekten hinzufügen

Um Application Insights mit vorhandenen Anwendungen zu verwenden, klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie „Add Applications Insights Telemetry to Project“ (Application Insights-Telemetrie zu Projekt hinzufügen) (siehe Abbildung 2).

Right-Click to Add Application Insights to an Existing Project
Abbildung 2 Mit der rechten Maustaste anklicken, um Application Insights zu einem vorhandenen Projekt hinzuzufügen

Nachdem Sie Application Insights hinzugefügt haben, weist das Projekt drei neue Knoten mit Verknüpfungen für Daten zu Verfügbarkeitsüberwachung, Leistungsüberwachung und Verwendungsanalysen in Visual Studio Online auf (siehe Abbildung 3).

New Nodes Appear in the Enabled Project
Abbildung 3 Neue Knoten werden im aktivierten Projekt angezeigt

Implementieren der Verwendungsüberwachung

Wenn Sie Application Insights einem neuen oder vorhandenen Projekt hinzugefügt haben, wird die Überwachung der Verwendung in den Web-, Windows Store- und Windows Phone-Anwendungen automatisch aktiviert. Bei älteren Anwendungen sowie Anwendungen, die keine Visual Studio Web-Anwendungen sind, können Sie diese Funktion hinzufügen, indem Sie einen JavaScript-Block zur Anwendung einfügen. Sie gelangen zu diesem JavaScript-Block, indem Sie auf „Add Application“ (Anwendung hinzufügen) klicken (siehe Abbildung 4), oder indem Sie zur Systemsteuerung gehen und „Get configuration keys and downloads“ (Konfigurationsschlüssel und Downloads erhalten) auswählen.

Select Add Application to Add JavaScript Block to Older Apps
Abbildung 4 „Add Application“ auswählen, um JavaScript-Block zu älteren Anwendungen hinzuzufügen

Implementieren von Leistungsüberwachung

Trotz des Namens bietet Ihnen Leistungsüberwachung Informationen, die über reine Leistungsdaten hinausgehen. Sie werden über Ausnahmen, Aufruflisteninformationen, Abhängigkeitsinformationen, Objektzuordnungen und sogar über die zugrunde liegende Infrastruktur benachrichtigt. Microsoft Monitoring Agent (MMA) erfasst zudem automatisch IntelliTrace-Protokolle hinsichtlich Ausnahmen und langsamen Aufrufen des Codes. In den meisten Fällen können Sie Leistungsüberwachung einfach durch die Installation von MMA aktivieren, das Sie unter aka.ms/aimma finden.

Wenn Sie MMA installieren, wird es standardmäßig alle Webanwendungen auf Ihrem Computer überwachen. Dies ist wahrscheinlich ideal für einen Entwicklungsrechner, aber nicht für Produktionsserver mit vielen Webanwendungen. MMA sollte während der Überwachung der Anwendung nicht mehr als 5 Prozent Leistungsabfall verursachen.

Um MMA auf später hinzugefügten Anwendungen zu aktivieren, können Sie die Überwachung einfach manuell über einen Windows PowerShell-Befehl aktivieren:

Start-WebApplicationMonitoring -name "www.microsoft.com/games" -mode Monitor -outputchannel cloud

In zukünftigen Versionen von MMA und Visual Studio wird dieser Schritt nicht mehr erforderlich sein.

Sie können die Leistungsüberwachung zudem auf Java- und Windows Azure-Anwendungen aktivieren. Die einfachste Startmöglichkeit ist es, auf „Add Application“ (Anwendung hinzufügen) im Application Insights-Portal zu klicken, wie zuvor bei der Implementierung der Verwendungsüberwachung gezeigt.

Implementieren der Verfügbarkeitsüberwachung

Die Verfügbarkeitsüberwachung funktioniert für alle Webanwendungen, unabhängig von der Plattform, auf der diese ausgeführt wird. Sie muss lediglich über das Internet verfügbar sein. Sie können die Verfügbarkeit und Leistung der Webanwendung von der ganzen Welt aus testen. Dieses Modul ist am einfachsten auszuführen.

Wenn Sie das Verfügbarkeitsmenü in Application Insights auswählen, werden Sie aufgefordert, die URL für die Webanwendung anzugeben. Dadurch wird eine einfache URL-basierte synthetische Überwachung mit einem einzigen Überwachungsort erstellt.

Wenn Sie kompliziertere Transaktionen überwachen müssen, sollten Sie lieber einen codierten Visual Studio-Webleistungstest verwenden. Die synthetische Überwachung basiert auf derselben Aufzeichnungsfunktion, die meist für Auslastungstests bei Webanwendungen verwendet wird. Damit können Sie einen komplexen Aktionssatz testen. Klicken Sie auf das grüne Symbol zum Hinzufügen einer neuen synthetischen Überwachung, und konfigurieren Sie die gewünschten Einstellungen, um eine synthetische Überwachung für eine einzige URL oder mehrere Schritte hinzuzufügen (siehe Abbildung 5).

Configure the Settings for a New Synthetic Monitor
Abbildung 5 Konfigurieren der Einstellungen für eine neue synthetische Überwachung

Einsetzen von Application Insights

Im letzten Jahr testeten fast 100 interne Microsoft-Teams sowie externe Branchenexperten erste Versionen von Application Insights und gaben innerhalb eines Technical Adoption-Programms ihr Feedback ab. Einiges sorgte für Überraschungen beim Entwicklungsteam, besonders das starke Interesse und Engagement der Produktbesitzer und nicht technischen Teammitglieder.

Die Erstanwender waren sich einig, dass ein zentraler Wert von Application Insights dessen Fähigkeit ist, den Entwicklungszyklus zu beschleunigen, indem alle Analyseinformationen zu einem einzigen Ort in Visual Studio Online überführt werden.

Messen einer Webkampagne Einer der ersten externen Kunden, die Application Insights ausprobierten, war das Schulungs- und Consulting-Unternehmen Wintellect. Sie wollten den Einfluss der Kursbeschreibungen für ihr neues On-Demand-Schulungsprodukt WintellectNOW untersuchen.

Mithilfe des Seitenanzeigeberichts in Application Insights konnten Entwickler von Wintellect eine JavaScript-Funktion zur Anmeldeschaltfläche hinzufügen, ähnlich wie:

function trackCourse() { window.__da.trackEvent("Course", window.location.hostname + window.location.pathname, {"CourseID": "Test401"}, {"RatingValue": 400}); }

Dadurch konnten sie messen und visualisieren, welche Kursbeschreibungen am effektivsten zu tatsächlichen Anmeldungen führten. Weitere Informationen zur Implementierung von eigenen Ereignissen in Application Insights finden Sie unter aka.ms/aijs.

Messen von globalem Webverkehr Wintellect wollte sich bei der TechEd 2013 Europe in Madrid, Spanien, präsentieren. Die Mitarbeiter suchten eine einfache Möglichkeit, um zu messen, ob die Präsenz des Unternehmens das Bewusstsein für dessen Angebote auf dem europäischen Markt vergrößern würde.

Das Unternehmen richtete mithilfe von Application Insights Verwendungsberichte ein, und verglich die Woche vor der TechEd mit der darauffolgenden Woche. Der Verkehr von Europa aus stieg um 7 Prozent, und der Verkehr aus Spanien verdoppelte sich sogar. Wintellect musste keinerlei besondere Anforderungen an die Entwickler stellen, um diese Ergebnisse zu messen, sodass sich die technischen Teams auf die Ergebnisse konzentrieren konnten.

Optimiertes Suchen, Beheben und Veröffentlichen

Application Insights wird auch bei Microsoft eingesetzt. Die Servicetechniker, die sich um die Website und Startseite von Microsoft kümmern, verwalten Tag für Tag über 400 Anwendungen. Oberste Priorität hat es, die Zeit von der Entdeckung eines Problems bis hin zur Behebung zu reduzieren. Durch die Einrichtung von Dashboards und Warnungen mit Application Insights erhalten die Techniker Echtzeitbenachrichtigungen bei fehlgeschlagenen Verfügbarkeitstests, Leistungsereignissen oder einem sinkenden Leistungsindex. Dadurch können Probleme behoben werden, bevor Kunden überhaupt bemerken, dass etwas nicht funktioniert.

Ein Team richtete eine Verfügbarkeitsüberwachung mit maximal zulässiger Laufzeit ein, das einen Alarm auslöste, wenn die Zeitgrenze überschritten wurde. Die Techniker können dann den Grund für den Fehler direkt in der Webansicht ermitteln, oder diese in Visual Studio herunterladen und als Webtestergebnis anzeigen. Der Synthetic Monitors-Bericht zeigt, dass diese Tests erst nach einer Bereitstellung fehlgeschlagen sind. Nach einer weiteren Bereitstellung konnten diese wieder erfolgreich ausgeführt werden. Etwa vier Stunden später wurden elf Konfigurationsänderungen vorgenommen. Das Verfügbarkeitsproblem konnte direkt zum tatsächlichen Code und den Konfigurationsänderungen zurückgeführt werden. Dadurch konnte die Ursache des Ereignisses direkt diagnostiziert werden.

Mit Application Insights können Sie Ihre Anwendung optimieren, noch bevor ein Alarm ausgelöst wird. Im Dashboard werden aktive Warnungen, Ausnahmeereignisse, Leistungsereignisse, Speicherereignisse sowie Leistungs- und Zuverlässigkeitsgrafiken angezeigt. All diese Kennzahlen bieten leicht verständliche Informationen für Technikteams, die ihre Anwendungen verbessern möchten.

Die Auswahl einer dieser Kacheln bringt Sie zu den Daten, die höchstwahrscheinlich zu einer Aktion führen. Wenn Sie zum Beispiel im Application Insights-Dashboard auf die Leistungsgrafik klicken (Abbildung 6), werden Sie zur Leistungsseite (Abbildung 7) geführt. In diesem Beispiel können Sie sehen, dass ein starker Zusammenhang zwischen Abhängigkeiten, einem Webdienst und den Reaktionszeiten besteht.

The Application Insights Dashboard
Abbildung 6 Application Insights-Dashboard

The Application Insights Performance Page
Abbildung 7 Die Application Insights-Leistungsseite

Klicken Sie auf die Speicher-, Ausnahme- oder Leistungsereigniskacheln im Dashboard, um zur Ereignisseite zu gelangen. Hier können Sie die Speicherdiagnosesitzung filtern, auswählen und öffnen, eine IntelliTrace-Fehlerbehebungssitzung starten oder die Änderungen, die das Ereignis verursacht haben, in Visual Studio anzeigen.

Zusammenfassung

Dies sind nur einige Beispiele, wie Entwicklungsteams Application Insights nutzen, um enger mit dem Betriebsteam zusammenzuarbeiten und schneller bessere Software bereitzustellen. Sie können auf Application Insights über Visual Studio Online (visualstudio.com) zugreifen.

In einem späteren Artikel werde ich die Integration cloudbasierter Auslastungstests mit Application Insights behandeln. Weitere Informationen zur Erstellung von Webtests finden Sie unter bit.ly/1im10YI. Weitere Informationen zur Verfügbarkeitsüberwachung mit Application Insights finden Sie unter bit.ly/1gxgLYk.

Die Überwachung kann einfach zum Code hinzugefügt werden, es ist eine enge Integration mit Visual Studio Online und eine große Zeitersparnis möglich. Dies alles sind Gründe, warum Sie diese Szenarien definitiv ausprobieren sollten und erfahren können, was Sie mit Application Insights erreichen können.

Charles Sterling ist seit 20 Jahren bei Microsoft. Vor Microsoft arbeitete er als Meeresbiologe für die United States National Marine Fisheries und erforschte Meeressäuger im Beringmeer. Nach einem sechsjährigen Aufenthalt in Australien als Microsoft-Produktmanager ist Sterling derzeit als Senior Program Manager im Visual Studio-Entwicklungsteam nach Redmond zurückgekehrt. Sie erreichen ihn unter chass@microsoft.com.

Unser Dank gilt den folgenden technischen Experten für die Durchsicht dieses Artikels:
John Robbins ist Mitbegründer von Wintellect, wo er die Beratungs- und Fehlerbehebungsdienste des Unternehmens leitet. Er reist zudem um die Welt, um seine Kurse „Mastering .NET Debugging“ und “Mastering Windows Debugging“ zu halten, mit denen Entwickler auf der ganzen Welt die Techniken erlernen können, die er zur Lösung der schwierigsten bekannten Softwareprobleme nutzt.
Cheryl Hammond ist ein ALM-Consultant und leitet das Practices-Team bei Northwest Cadence, wo er sich darauf konzentriert, wie durch Agilität, Architektur und Testverfahren das Leben von Entwicklern verbessert, Teams gestärkt und bessere Software bereitgestellt werden kann.