Zkoumání selhání, výkonu a transakcí pomocí Application Insights

Application Insights shromažďuje telemetrii z vaší aplikace, aby pomohla diagnostikovat selhání a prošetřovat pomalé transakce. Obsahuje čtyři základní nástroje:

  • Zobrazení chyb – Sleduje chyby, výjimky a chyby a nabízí jasné přehledy pro rychlé řešení problémů a vylepšenou stabilitu.

  • Zobrazení výkonu – Rychle identifikuje a pomáhá vyřešit kritické body aplikace zobrazením doby odezvy a počtu operací.

  • Zobrazení hledání – Umožňuje uživatelům vyhledávat a zkoumat jednotlivé položky telemetrie, jako jsou zobrazení stránek, výjimky a vlastní události.

  • Diagnostika transakcí – Pomáhá rychle identifikovat problémy v komponentách prostřednictvím komplexního přehledu o komplexních podrobnostech o transakcích.

Tyto nástroje společně zajišťují průběžný stav a efektivitu webových aplikací. Můžete je použít k určení problémů nebo vylepšení, které by měly největší dopad na uživatele.

Pokud se chcete dostat do zobrazení Selhání v Application Insights, vyberte graf Neúspěšné žádosti v podokně Přehled nebo Selhání v kategorii Prošetření v nabídce prostředků.

Snímek obrazovky znázorňující, jak se dostat do zobrazení Selhání v Application Insights

K zobrazení selhání se můžete dostat také z mapy aplikace tak, že vyberete prostředek a pak v části prošetříte selhání .

Poznámka:

Diagnostiku transakce můžete získat prostřednictvím některého z dalších tří prostředí. Další informace najdete v tématu Zkoumání telemetrie.

Přehled

Zobrazení Selhání zobrazuje seznam všech neúspěšných operací shromážděných pro vaši aplikaci s možností přejít k podrobnostem jednotlivých operací. Umožňuje zobrazit jejich četnost a počet ovlivněných uživatelů, abyste se mohli zaměřit na problémy s nejvyšším dopadem.

Snímek obrazovky, zobrazující pohled

Poznámka:

Kromě vestavěné telemetrie posílané distribucí Azure Monitor OpenTelemetry nebo JavaScript SDK můžete přidávat a upravovat telemetrii (například vlastní události).

Další informace najdete v tématu Přidat a upravit Azure Monitor OpenTelemetry pro .NET, Javu, Node.jsa aplikace Pythonu.

Filtrování telemetrie

Výchozí filtry

Všechna prostředí umožňují filtrovat telemetrii podle časového rozsahu. Každé prostředí má navíc vlastní výchozí filtr:

Z nabídky filtru rolí můžete vybrat, která služba (název cloudové role) nebo počítač nebo kontejner (instance cloudové role) se má zobrazit. Tato akce umožňuje izolovat problémy nebo trendy výkonu v konkrétních částech aplikace.

Informace o tom, jak nastavit Cloud Role Name a Cloud Role Instance, najdete v tématu Konfigurace Azure Monitor OpenTelemetry.

Přidat filtry

Události můžete filtrovat podle hodnot jejich vlastností. Dostupné vlastnosti závisí na vybraných typech událostí nebo telemetrie. Přidání filtru:

  1. Výběrem ikony Filtr přidáte filtr.

    Filtrační tlačítko

  2. V levém rozevíracím seznamu vyberte vlastnost.

  3. V rozevíracím seznamu center vyberte jeden z následujících operátorů: =, !=, contains, nebo not contains.

  4. V pravém rozevíracím seznamu vyberte všechny hodnoty vlastností, podle které chcete filtrovat.

    Poznámka:

    Všimněte si, že počty napravo od hodnot filtru ukazují, kolik výskytů existuje v aktuální filtrované sadě.

  5. Pokud chcete přidat další filtr, znovu vyberte ikonu Filtru .

Telemetrie vyhledávání

Konkrétní operace můžete vyhledat pomocí vyhledávacího pole pro filtrování položek... nad seznamem operací.

Snímek obrazovky s polem Hledat

Použití analytických dat

Všechna data shromážděná službou Application Insights se ukládají v Log Analytics. Poskytuje bohatý dotazovací jazyk pro analýzu požadavků, které vygenerovaly výjimku, kterou prošetřujete.

Návod

Jednoduchý režim v Log Analytics nabízí intuitivní rozhraní typu point-and-click pro analýzu a vizualizaci dat protokolu.

  1. V zobrazení výkonu, selhání nebo hledání vyberte Možnost Zobrazit v protokolech v horním navigačním panelu a v rozevírací nabídce vyberte dotaz.

    Snímek obrazovky s horním panelem akcí se zvýrazněným tlačítkem Zobrazit v protokolech

  2. Tato akce vás provede zobrazením Protokolů , kde můžete dotaz dále upravit nebo vybrat jiný z bočního panelu.

    Snímek obrazovky pohledu na 'Protokoly'.

Zkoumání telemetrie

Pokud chcete prozkoumat původní příčinu chyby nebo výjimky, můžete přejít k podrobnému zobrazení podrobností o komplexní transakci, které obsahuje závislosti a podrobnosti o výjimce.

  1. Výběrem operace zobrazíte Top 3 kódy odpovědí, Top 3 typy výjimek a Top 3 selhání závislostí pro danou operaci.

  2. V části Přejít k podrobnostem vyberte tlačítko s počtem filtrovaných výsledků a zobrazte seznam ukázkových operací.

  3. Výběrem ukázkové operace otevřete zobrazení podrobností o celé transakci .

    Snímek obrazovky zobrazující zobrazení Selhání se zvýrazněným tlačítkem Přejít k podrobnostem

    Poznámka:

    Navrhované vzorové vzorky obsahují související telemetrii ze všech komponentů, i když je v některé z nich vzorkování.

    Návod

    Pokud potřebujete zásobník volání pro selhání, otevřete související výjimku v podrobnostech koncové transakce nebo na kartě Výjimky. Trasování zásobníku se zobrazí jen v případě, že byla pro danou operaci zachycena telemetrie výjimek.

Analýza výkonu a selhání na straně klienta

Pokud instrumentujete webové stránky pomocí Application Insights, můžete získat přehled o zobrazeních stránek, operacích prohlížeče a závislostech. Shromažďování těchto dat prohlížeče vyžaduje přidání skriptu na webové stránky.

  1. Po přidání skriptu můžete access zobrazení stránek a související metriky výkonu tak, že vyberete přepínač Browser v zobrazení Performance nebo Failures.

    Snímek obrazovky se zvýrazněním přepínače Server / Prohlížeč pod horním panelem akcí

    Toto zobrazení poskytuje vizuální souhrn různých telemetrických dat vaší aplikace z pohledu prohlížeče.

    Návod

    V jednostránkových aplikacích (SPA) zapněte enableAutoRouteTracking pro změny cest, aby každá logická stránka vytvářela vlastní zobrazení a operaci. V opačném případě může být několik změn tras korelováno s jednou operací a některé doby zobrazení stránky se mohou zobrazit jako 0.

  2. V případě operací prohlížeče se v zobrazení podrobností o celé transakci zobrazí vlastnosti zobrazení stránky klienta žádajícího o stránku, včetně typu prohlížeče a jeho umístění. Tyto informace vám můžou pomoct určit, jestli existují problémy s výkonem související s konkrétními typy klientů.

    Snímek obrazovky zobrazující zobrazení Podrobnosti o celé transakci se zvýrazněnou částí Vlastnosti zobrazení stránky

Poznámka:

Stejně jako data shromážděná pro výkon serveru zpřístupňuje Application Insights všechna klientská data pro hloubkovou analýzu pomocí protokolů.

Zkušenost s diagnostikou transakcí

Prostředí diagnostiky transakcí , označované také jako zobrazení podrobností o transakcích typu End-to-end , zobrazuje Ganttův diagram transakce, který uvádí všechny události s jejich dobou trvání a kódem odpovědi.

Toto prostředí diagnostiky automaticky koreluje telemetrii na straně serveru ze všech monitorovaných komponent Application Insights do jednoho zobrazení a podporuje více prostředků. Application Insights detekuje základní relaci a umožňuje snadno diagnostikovat komponentu aplikace, závislost nebo výjimku, která způsobila zpomalení nebo selhání transakce.

Když vyberete konkrétní událost, zobrazí se její vlastnosti, včetně dalších informací, jako je podkladový příkaz nebo zásobník volání.

Toto zobrazení má čtyři klíčové části:

Snímek obrazovky znázorňující zobrazení transakcí se zvýrazněným seznamem výsledků

V tomto sbalitelném podokně se zobrazí další výsledky, které splňují kritéria filtru. Výběrem libovolného výsledku aktualizujte příslušné podrobnosti předchozích tří částí. Snažíme se najít vzorky, které mají s největší pravděpodobností k dispozici podrobnosti ze všech komponent, i když se vzorkování projeví v některé z nich. Tyto ukázky se zobrazují jako návrhy.

Poznámka:

Prostředí pro diagnostiku transakcí teď nabízí jednoduché zobrazení, které zobrazuje kroky agenta příběhovým způsobem. Další informace najdete v tématu Monitorování agentů AI pomocí Application Insights.

Poznámky k vydání

Poznámky k verzi označují nasazení a další významné události v grafech Application Insights, což umožňuje korelaci změn s výkonem, selháními a využitím.

Automatické poznámky s Azure Pipelines

Azure Pipelines vytvoří během nasazování poznámku k verzi, pokud jsou splněny všechny následující podmínky:

  • Cílový prostředek odkazuje na Application Insights prostřednictvím nastavení aplikace APPLICATIONINSIGHTS_CONNECTION_STRING.
  • Prostředek Application Insights je ve stejném předplatném jako cílový prostředek.
  • Nasazení používá jednu z následujících Azure Pipelines úloh:
Kód úkolu Název úkolu Versions
AzureAppServiceSettings Nastavení Azure App Service Jakýkoliv
AzureRmWebAppDeployment Azure App Service V3+
AzureFunctionApp Azure Functions Jakýkoliv
AzureFunctionAppContainer Azure Functions pro kontejner Jakýkoliv
AzureWebAppContainer Platforma pro kontejnery Azure Web App Jakýkoliv
AzureWebApp Webová aplikace Azure Jakýkoliv

Poznámka:

Pokud stále používáte starší úlohu nasazení poznámek Application Insights, odstraňte ji.

Konfigurace poznámek v kanálu pomocí vloženého skriptu

Pokud úlohy v předchozí části nepoužíváte, přidejte do fáze nasazení vložený skript.

  1. Otevřete existující kanál nebo vytvořte nový a vyberte úlohu v části Fáze.

  2. Přidejte novou úlohu Azure CLI.

  3. Vyberte Azure předplatné. Nastavte typ skriptu na PowerShell a nastavte umístění skriptu na vložené.

  4. Přidejte skript PowerShellu z kroku 2 v Vytvoření poznámek k verzi pomocí Azure CLI do Inline Script.

  5. Přidejte argumenty skriptu. Nahraďte zástupné symboly v úhlových závorkách.

    -aiResourceId "<aiResourceId>" `
    -releaseName "<releaseName>" `
    -releaseProperties @{"ReleaseDescription"="<a description>";
        "TriggerBy"="<Your name>" }
    

    Následující příklad ukazuje metadata, která můžete nastavit v volitelném releaseProperties argumentu pomocí proměnných sestavení a vydané verze. Vyberte Uložit.

    -releaseProperties @{
    "BuildNumber"="$(Build.BuildNumber)";
    "BuildRepositoryName"="$(Build.Repository.Name)";
    "BuildRepositoryProvider"="$(Build.Repository.Provider)";
    "ReleaseDefinitionName"="$(Build.DefinitionName)";
    "ReleaseDescription"="Triggered by $(Build.DefinitionName) $(Build.BuildNumber)";
    "ReleaseEnvironmentName"="$(Release.EnvironmentName)";
    "ReleaseId"="$(Release.ReleaseId)";
    "ReleaseName"="$(Release.ReleaseName)";
    "ReleaseRequestedFor"="$(Release.RequestedFor)";
    "ReleaseWebUrl"="$(Release.ReleaseWebUrl)";
    "SourceBranch"="$(Build.SourceBranch)";
    "TeamFoundationCollectionUri"="$(System.TeamFoundationCollectionUri)" }
    

Vytváření poznámek k verzi pomocí Azure CLI

Pomocí následujícího skriptu PowerShellu vytvořte poznámku k verzi z libovolného procesu bez Azure DevOps.

  1. Přihlaste se k Azure CLI.

  2. Uložte následující skript jako CreateReleaseAnnotation.ps1.

    param(
        [parameter(Mandatory = $true)][string]$aiResourceId,
        [parameter(Mandatory = $true)][string]$releaseName,
        [parameter(Mandatory = $false)]$releaseProperties = @()
    )
    
    # Function to ensure all Unicode characters in a JSON string are properly escaped
    function Convert-UnicodeToEscapeHex {
      param (
        [parameter(Mandatory = $true)][string]$JsonString
      )
      $JsonObject = ConvertFrom-Json -InputObject $JsonString
      foreach ($property in $JsonObject.PSObject.Properties) {
        $name = $property.Name
        $value = $property.Value
        if ($value -is [string]) {
          $value = [regex]::Unescape($value)
          $OutputString = ""
          foreach ($char in $value.ToCharArray()) {
            $dec = [int]$char
            if ($dec -gt 127) {
              $hex = [convert]::ToString($dec, 16)
              $hex = $hex.PadLeft(4, '0')
              $OutputString += "\u$hex"
            }
            else {
              $OutputString += $char
            }
          }
          $JsonObject.$name = $OutputString
        }
      }
      return ConvertTo-Json -InputObject $JsonObject -Compress
    }
    
    $annotation = @{
        Id = [GUID]::NewGuid();
        AnnotationName = $releaseName;
        EventTime = (Get-Date).ToUniversalTime().GetDateTimeFormats("s")[0];
        Category = "Deployment"; #Application Insights only displays annotations from the "Deployment" Category
        Properties = ConvertTo-Json $releaseProperties -Compress
    }
    
    $annotation = ConvertTo-Json $annotation -Compress
    $annotation = Convert-UnicodeToEscapeHex -JsonString $annotation
    
    $accessToken = (az account get-access-token | ConvertFrom-Json).accessToken
    $headers = @{
        "Authorization" = "Bearer $accessToken"
        "Accept"        = "application/json"
        "Content-Type"  = "application/json"
    }
    $params = @{
        Headers = $headers
        Method  = "Put"
        Uri     = "https://management.azure.com$($aiResourceId)/Annotations?api-version=2015-05-01"
        Body    = $annotation
    }
    Invoke-RestMethod @params
    

Poznámka:

Nastavte Category jako Deployment, jinak se anotace neobjeví v portálu Azure.

Zavolejte skript a předejte hodnoty parametrů. Parametr -releaseProperties je volitelný.

.\CreateReleaseAnnotation.ps1 `
 -aiResourceId "<aiResourceId>" `
 -releaseName "<releaseName>" `
 -releaseProperties @{"ReleaseDescription"="<a description>";
     "TriggerBy"="<Your name>" }
Argument Definition Poznámka:
aiResourceId ID cílového prostředku Application Insights Příklad: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyRGName/providers/microsoft.insights/components/MyResourceName
releaseName Název nové poznámky k verzi
releaseProperties Vlastní metadata pro připojení k poznámce Volitelný

Zobrazení poznámek

Poznámka:

Poznámky k verzi nejsou dostupné v podokně Metriky .

Application Insights zobrazuje poznámky k verzi v následujících prostředích:

Poznámky se vizualizují jako značky v horní části grafů.

Snímek obrazovky s grafem výjimek s poznámkami

Pokud chcete povolit poznámky v sešitu, otevřete Upřesnit nastavení a pak vyberte Zobrazit poznámky. Výběrem libovolné značky anotace otevřete podrobnosti o verzi, jako je žadatel, větev správy zdrojového kódu, nasazovací kanál a prostředí.

Nejčastější dotazy

Tato část obsahuje odpovědi na běžné otázky.

Zobrazení hledání

Co je komponenta?

Komponenty jsou nezávisle nasaditelné části distribuované aplikace nebo aplikace mikroslužeb. Vývojáři a provozní týmy mají přístup na úrovni kódu nebo k telemetrii generované těmito komponenty aplikací.

  • Komponenty se liší od "sledovaných" externích závislostí, jako jsou SQL a event huby, ke kterým váš tým nebo organizace nemusí mít přístup (kód nebo telemetrie).
  • Komponenty běží na libovolném počtu serverů, rolí nebo container instances.
  • Komponenty můžou být samostatné připojovací řetězce Application Insights, i když se předplatná liší. Komponenty mohou také zaujímat různé role, které se hlásí k jednomu připojovacímu řetězci Application Insights. Nové prostředí zobrazuje podrobnosti napříč všemi komponentami bez ohledu na to, jak byly nastaveny.

Kolik dat se uchovává?

Podívejte se na souhrn limitů.


Jak na serverových požadavcích vidím data POST?

POST data nezaznamenáváme automaticky. Protokolování aplikace pečlivě používejte, pokud potřebujete zachytit podrobnosti textu požadavku a vyhnout se shromažďování citlivých dat.


Proč se moje vyhledávání funkce Azure nevrací žádné výsledky?

Azure Functions nezaznamenává řetězce dotazu adresy URL.

Diagnostika transakcí

Proč se v grafu zobrazuje jedna komponenta a ostatní komponenty se zobrazují jenom jako externí závislosti bez jakýchkoli podrobností?

Možné důvody:

  • Jsou ostatní komponenty instrumentované pomocí Application Insights?
  • Používají nejnovější stabilní sadu Application Insights SDK?
  • Pokud jsou tyto komponenty samostatné prostředky Application Insights, ověřte, že máte access. Pokud máte přístup a komponenty jsou instrumentované s nejnovějšími sadami nástrojů pro vývoj softwaru Application Insights (SDK), dejte nám vědět prostřednictvím kanálu zpětné vazby v pravém horním rohu.

Zobrazují se duplicitní řádky pro závislosti. Je toto chování očekávané?

V současné době zobrazujeme odchozí volání závislostí odděleně od příchozího požadavku. Tato dvě volání jsou obvykle stejná, s výjimkou hodnoty doby trvání, která se liší kvůli odezvě sítě. Úvodní ikona a odlišné styly pruhů doby trvání pomáhají rozlišovat mezi nimi. Je tato prezentace dat matoucí? Pošlete nám svůj názor!


A co časové nepřesnosti hodin mezi různými instancemi komponent?

Časové osy jsou upraveny pro nerovnoměrné distribuce hodin v transakčním grafu. Přesné časové razítko můžete zobrazit v podokně podrobností nebo pomocí Log Analytics.


Proč v novém prostředí chybí většina dotazů souvisejících položek?

Toto chování je záměrné. Všechny související položky napříč všemi komponentami jsou již k dispozici na levé straně v horních a dolních částech. Nové prostředí obsahuje dvě související položky, které levá strana nepokrývá: veškerá telemetrie z pěti minut před a po této události a časové ose uživatele.


Existuje způsob, jak zobrazit méně událostí na transakci při použití sady Application Insights JavaScript SDK?

Prostředí diagnostiky transakcí zobrazuje veškerou telemetrii v jedné operaci , která sdílí ID operace. Sada Application Insights SDK pro JavaScript ve výchozím nastavení vytvoří novou operaci pro každé jedinečné zobrazení stránky. V jednostránkové aplikaci (SPA) se vytvoří pouze jedna událost zobrazení stránky a pro generovanou veškerou telemetrii se použije jedno ID operace. V důsledku toho může být mnoho událostí korelováno se stejnou operací.

V těchto scénářích můžete pomocí automatického sledování tras automaticky vytvářet nové operace pro navigaci v spa. Musíte zapnout enableAutoRouteTracking , aby systém vytvořil zobrazení stránky pokaždé, když je trasa url aktualizována (dojde k logickému zobrazení stránky). Pokud chcete ID operace aktualizovat ručně, zavolejte appInsights.properties.context.telemetryTrace.traceID = Microsoft.ApplicationInsights.Telemetry.Util.generateW3CId(). Ruční aktivace události PageView také resetuje ID operace.


Proč se doba trvání podrobností transakcí nepřidá do doby trvání nejvyšší žádosti?

Čas, který není v Ganttově diagramu vysvětlený, je čas, který není pokryt sledovaným závislostem. K tomuto problému může dojít, protože externí volání nebyla instrumentována automaticky nebo ručně. Může k tomu dojít také proto, že doba potřebná ke zpracování nebyla způsobená externím voláním.

Pokud byla všechna volání instrumentována, pravděpodobnou hlavní příčinou stráveného času je proces. Užitečným nástrojem pro diagnostiku procesu je .NET Profiler.


Co dělat, když se při procházení Application Insights v portálu Azure zobrazí zpráva "Chyba při načítání dat"?

Tato chyba znamená, že prohlížeč nemohl volat požadované rozhraní API nebo že rozhraní API vrátilo odpověď o selhání. Pokud chcete vyřešit potíže s chováním, otevřete okno InPrivate prohlížeče a zakažte všechna spuštěná rozšíření prohlížeče a zjistěte, jestli můžete chování portálu reprodukovat. Pokud k chybě portálu stále dochází, zkuste otestovat jiné prohlížeče nebo jiné počítače, prozkoumejte problémy se systémem DNS (Domain Name System) nebo jinými problémy souvisejícími se sítí z klientského počítače, kde selhávají volání rozhraní API. Pokud chyba portálu přetrvává, nasbírejte trasování sítě prohlížeče při reprodukci neočekávaného chování. Potom otevřete případ podpory z Azure portal.

Další kroky