Application Insights für App Services

13.12.2019

Was ist Application Insights?

Application Insights ist ein Dienst der Microsoft-Azure Cloud mit dem sich eine Anwendung überwachen lässt. Die benötigte Leistung dieses Dienstes ist laut Microsoft sehr gering.

Von Application Insights wird überwacht:

  • Anforderungsraten, Antwortzeiten und Fehlerraten
    • Welche Seiten werden zu welchen Tageszeiten am häufigsten verwendet?
    • Wo sind unsere Benutzer?
  • Abhängigkeitsraten
    • Werden wir von einem externen Dienst verlangsamt?
  • Ausnahmen (Exceptions)
  • Seitenansichten und Ladeleistung (Browserdaten der Nutzer)
  • AJAX – Aufrufe
  • Anzahl Benutzer und Sitzungen
  • Leistungsindikatoren
    • CPU, RAM, Netzwerkverwendung
  • Hostdiagnose
    • Azure, Docker
  • Benutzerdefinierte Ereignisse
    • Selbst im Client- oder Servercode
    • z.B.: Geschäftsereignisse: verkaufte Spiele

… und vieles mehr.

Getting Started

In diesem Abschnitt kannst du nachlesen, wie Application Insights für die jeweilige Plattform eingerichtet wird. Hierbei wird grundsätzlich zwischen codebasierter Überwachung und Überwachung ohne Code unterschieden. Außerdem findest du hier Beispiele für Abfragen.

Codebasierte Überwachung

Bei dieser Methode der Einbindung von Application Insights wird der Service direkt in den Code, bzw. in das Projekt eingebunden. Im folgenden wird die Einrichtung für eine .NET Core Webanwendung gezeigt. Wie du Application Insights für andere Plattformen einrichtest kannst du hier nachlesen.

.NET Core

Visual Studio 2019 – App Service erstellen

Während dem Erstellen eines Veröffentlichungs-Profil erscheint die folgende Ansicht. Hierbei das richtige Abonnement und die richtige Ressourcengruppe auswählen. Der Hostingplan wird normalerweise automatisch generiert. Falls du spezielle Anforderungen hast, kannst du diesen aber anpassen. Außerdem kannst du hier direkt Application Insights aktivieren. Danach auf Erstellen klicken um die App zu deployen.

Daten auswerten

Da du nun Application Insights für dein Projekt aktiviert hast, kannst du die Daten im Azure-Portal einsehen. Gehe hierzu auf die Azure-Portal Website und melde dich an. Nun kannst du im Navigationsmenü links auf App Services klicken und anschließend deine Anwendung auswählen.

Anschließend wählst du noch im Navigationsmenü des neu erschienenen „Fensters“ unter Einstellungen / Application Insights aus.

Hier kannst du nun mit der Auswertung der Daten beginnen.

Überwachung ohne Code

Eine detaillierte Anleitung zur Einrichtung von Application Insights über die Azure Weboberfläche findest du hier.

Datenanalyse via Azure Portal

Bereits zu Beginn lassen sich viele Informationen auf der Oberfläche von Azure auslesen. In diesem Abschnitt findest du Informationen, wo du was findest, und welche Informationen du dort bekommen kannst.

App Service Übersicht

Zur App Service Übersicht kommst du über das Menü am linken Seitenrand unter App Services. Dann musst du noch den passenden App Service auswählen. Anschließend kannst du über das neu erschienene Menü am linken Rand Übersicht auswählen um in die folgende Ansicht zu gelangen:

Über die Auswahl einer Kachel kommst du in den Diagramm-Editor. Hierbei ist es sehr nützlich, andere Daten in das gleiche Diagramm mit einbinden zu können. So kannst du beispielsweise über die Kachel Anforderungen mit dem Anforderungsdiagramm arbeiten. Über Metriken hinzufügen kannst du andere Daten mit in das selbe Diagramm einblenden:

Nun können wir sehen, dass die Anzahl der Requests stark mit der Anzahl an HTTP-2XX Antworten korreliert.

Zu Application Insights navigieren

Als erstes musst du den passenden App Service auswählen. Das kannst du im Menü am linken Seitenrand unter Favoriten / App Services machen.

Danach kannst du Application Insights unter Einstellungen aufrufen, um die Application Insights Ansicht deines App Services zu öffnen.

Anwendungsaufbau

In der Anwendungsübersicht kannst du dir ein Bild über den Aufbau der Anwendung machen. Hier siehst du zu welcher Komponente Aufrufe, bzw. Requests, geleitet werden.

Außerdem wird dir angezeigt wie viele Aufrufe an die jeweilige Komponente gehen, sowie durchschnittliche Antwortzeiten. Über die Auswahl des „Pfeils“ erhältst du am rechten Seitenrand mehrere Informationen zu diesem Kommunikationsweg, wie z.B. die häufigsten Fehlercodes.

Intelligente Erkennung

Die intelligente Erkennung erkennt Leistungsanomalien:

  • unüblich hohe Anzahl an Fehlgeschlagenen Requests
  • unüblich lange Ladezeiten
  • unüblicher Anstieg an Exceptions

Dieses Feature kann E-Mails senden, falls eine Anomalie erkannt wird. So bekommt man Probleme direkt mit.

Beispiel:

Fehler

Über den Menüpunkt Fehler lässt sich mehr über aufgetretene Fehler auf Client- sowie auf Serverseite herausfinden. Oben rechts kannst du die Ansicht auf Browser (Client) oder auf Server ändern.

Mit Hilfe der zwei Diagramme kannst du Zusammenhänge zwischen Fehlern und anderen Faktoren, wie z.B. Seitenaufrufe ermitteln

Rechts findest du eine Statistik zu den Hauptfehlerquellen:

Leistung

Unter dem Menüpunkt Leistung findest du in etwa die selbe Funktionalität wie bei Fehler nur auf die Leistung, bzw. auf Antwortzeiten, bezogen.

Metriken

Unter dem Menüpunkt Metriken findest du einen mächtigen Diagrammeditor. Hier kannst du verschiedene Graphen in das selbe Diagramm zeichnen lassen, um z.B. Zusammenhänge erkennen zu können.

Beispiel: Anzahl Exceptions ↔ Serverlast

Protokolle (Analytics)

Unter Protokolle lassen sich Abfragen der Daten, die von Application Insights gesammelt wurden, durchführen. Das kann z.B. die URL, über die die Seite aufgerufen wurde, oder der Zeitpunkt des Aufrufs sein. Als erstes musst du zu Application Insights navigieren.

Danach kannst du Protokolle unter Überwachung aufrufen, um in den Abfrageeditor zu gelangen.

Im Abfrageeditor siehst du links die verfügbaren Tabellen, die ausklappbar sind, um die einzelnen Spalten sehen zu können. Rechts kommst du zum Abfrage-Explorer, in dem du bereits erstellte Abfragen abrufen kannst. Die Doku zur Abfragesprache Kusto findest du hier.

Arbeitsmappen

Unter Arbeitsmappen findest du interaktive Berichte. Hier sind standardmäßig bereits einige hinterlegt, und neue können natürlich erstellt werden.

Nutzerverhalten analysieren Quickstart

Als erstes musst du zu Application Insights navigieren. Unter Syntax findest du mehrere Tools um Informationen über die Nutzer zu gewinnen.

Benutzer

Unter Benutzer lassen sich die Nutzer segmentieren. So kannst du die Nutzer eines gewissen Zeitraums, beispielsweise nach der Region aus der der Zugriff erfolgt ist, trennen.

Sitzungen / Sessions

Unter Sitzungen findest du Informationen über die Sessions der Nutzer. Eine Session wird nach einer halben Stunde Inaktivität, oder nach 24h dauerhafter Nutzung gezählt. Ein Nutzer entspricht nicht zwingend einer Session. Wenn ein Nutzer über mehrere Geräte, oder über unterschiedliche Browser auf die Website zugreift, generiert er mehrere Sessions.

Ereignisse

Unter Ereignisse findest du Informationen über das, was die Nutzer auf der Website tun. Beispielsweise lassen sich hier Aufrufe der Website, oder REST-Calls analysieren.

Trichter

Mit dem Trichter lässt sich herausfinden, wie viele Nutzer eine bestimmte Folge von Schritten durchlaufen, bzw. wie viele Nutzer beim letzten Schritt noch übrig sind. Dieses Tool ist hilfreich, wenn man herausfinden möchte, an welchen Punkten die Nutzer abbrechen. Mehr zum Trichter findest du hier.

Benutzerabläufe

Unter Benutzerabläufe lässt sich das Nutzerverhalten analysieren. Hier siehst du wie die Nutzer auf der Website navigieren. Beispielsweise lässt sich hiermit erkennen, ob die Nutzer die Navigation falsch verwenden, bzw. nicht verstehen.

Beibehaltung

Mit Hilfe des Tools Beibehaltung lässt sich ermitteln, wie viele Nutzer nach einem bestimmten Zeitraum wieder zurückkehren.

Auswirkungen / Impact

Das Tool Auswirkungen zeigt, wie bestimmte Reaktionen der Anwendung die Nutzer beeinflussen. Beispielsweise ob die Nutzer die Website verlassen, wenn die Ladezeiten zu lange werden. Mehr zu den Auswirkungen findest du hier.

Beispiele / Templates

In diesem Abschnitt findest du Beispiele bzw. Templates für wiederverwendbare Abfragen.

Ø Anzahl Nutzer pro Wochentag

Durchschnittliche Anzahl an Nutzern pro Wochentag
1
2
3
4
5
6
7
union requests,pageViews,customEvents
// Zeitspanne individuell anpassen
| where timestamp between(datetime("2019-03-01T22:00:00.000Z")..datetime("2019-09-02T22:00:00.000Z"))
| summarize Users = dcount(user_Id) by bin(timestamp, 24h)
// Nutzer pro Wochentag zählen
| summarize AvgUsers = round(avg(Users),0) by DayOfWeek=dayofweek(timestamp)
| order by AvgUsers desc

Aufrufe einer URL zählen

Aufrufe einer oder mehrerer URLs zählen 
1
2
3
4
5
6
7
8
9
10
11
pageViews
| where timestamp between(datetime("2019-03-01T22:00:00.000Z")..datetime("2019-09-02T22:00:00.000Z"))
// URLs auswählen, von denen die Aufrufe gezählt werden sollen
// nach URL gruppieren & zählen
| summarize viewsPerUrl = count() by url

Verbrachte Zeit pro Session pro URL

Verbrachte Zeit pro Session pro URL
1
2
3
4
5
6
7
pageViews
| where timestamp between(datetime("2019-03-01T22:00:00.000Z")..datetime("2019-09-02T22:00:00.000Z"))
// an dieser Stelle lässt sich ganz einfach über ein "where"-Befehl nach den einzelnen Unterseiten einer URL filtern
// Bsp: where url contains "packinglist"
| summarize startTime = min(timestamp), endTime = max(timestamp) by session_Id, url
| summarize duration = ((sum(endTime) - sum(startTime)) / 1h) by url
| sort by duration desc

Co-Author: Felix Steck


[1] azure application insights

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*Pflichtfelder

*