Mapa aplikace: Hodnocení distribuovaných aplikací
Mapa aplikace pomáhá zjistit kritické body výkonu nebo hlavní místa selhání ve všech komponentách distribuované aplikace. Každý uzel na mapě představuje komponentu aplikace nebo její závislosti. a má klíčový ukazatel výkonu a stav upozornění. Můžete proklikejte z jakékoli komponenty na podrobnější diagnostiku, jako jsou například události Přehledy aplikace. Pokud vaše aplikace používá služby Azure, můžete také kliknout na diagnostiku Azure, například SQL Database Advisoru.
Co je komponenta?
Komponenty jsou nezávisle nasaditelné části vaší aplikace distribuovaných/mikroslužeb. Vývojáři a provozní týmy mají viditelnost na úrovni kódu nebo přístup k telemetrii vygenerované těmito komponentami aplikace.
- Komponenty se liší od "pozorovaných" externích závislostí, jako jsou SQL, EventHub atd., ke kterým váš tým nebo organizace nemusí mít přístup (kód nebo telemetrie).
- Komponenty běží na libovolném počtu instancí serveru, role nebo kontejneru.
- Komponenty mohou být samostatné instrumentační Přehledy služby Application Přehledy (i když se liší předplatná) nebo různými rolemi, které se hlásí jednomu instrumentačnímu klíči Přehledy aplikace. Prostředí náhledu mapy zobrazuje komponenty bez ohledu na to, jak jsou nastavené.
Mapa složené aplikace
Můžete zobrazit úplnou topologii aplikace napříč několika úrovněmi souvisejících komponent aplikace. Komponenty mohou být různé Přehledy prostředky nebo různé role v jednom prostředku. Mapa aplikace vyhledá komponenty podle volání závislostí HTTP provedených mezi servery s nainstalovanou sadou Application Přehledy SDK.
Toto prostředí začíná progresivním zjišťováním komponent. Při prvním načtení mapy aplikace se aktivuje sada dotazů ke zjištění komponent souvisejících s touto komponentou. Tlačítko v levém horním rohu se aktualizuje o počet komponent ve vaší aplikaci, jakmile se objeví.
Po kliknutí na Aktualizovat komponenty mapy se mapa aktualizuje se všemi komponentami zjištěných až do tohoto bodu. V závislosti na složitosti vaší aplikace může načtení trvat minutu.
Pokud jsou všechny součásti role v rámci jednoho prostředku application Přehledy, pak tento krok zjišťování není povinný. Počáteční zatížení takové aplikace bude mít všechny jeho komponenty.

Jedním z klíčových cílů tohoto prostředí je možnost vizualizovat komplexní topologie se stovkami komponent.
Kliknutím na libovolnou komponentu zobrazíte související přehledy a přejděte do prostředí pro hodnocení výkonu a selhání pro komponentu.

Prošetřovat selhání
Výběrem možnosti Prozkoumat selhání spusťte podokno selhání.


Prozkoumání výkonu
Pokud chcete řešit problémy s výkonem, vyberte Prozkoumat výkon.


Přejít na podrobnosti
Vyberte Přejít k podrobnostem a prozkoumejte prostředí pro koncové transakce, které může nabízet zobrazení až na úroveň zásobníku volání.


Zobrazení protokolů (analýza)
Pokud chcete data aplikací dále dotazovat a zkoumat, klikněte na Zobrazit v části Protokoly (Analýza).


Výstrahy
Pokud chcete zobrazit aktivní výstrahy a základní pravidla, která způsobí aktivaci výstrah, vyberte výstrahy.


Nastavení nebo přepsání názvu cloudové role
Mapa aplikace používá vlastnost názvu cloudové role k identifikaci komponent na mapě. Ruční nastavení nebo přepsání názvu cloudové role a změna toho, co se zobrazí na mapě aplikace:
Poznámka
Sada Application Přehledy SDK nebo Agent automaticky přidá vlastnost názvu cloudové role k telemetrii vygenerované komponentami v Azure App Service prostředí.
Napište vlastní telemetriiInitializer, jak je uvedeno níže.
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.Extensibility;
namespace CustomInitializer.Telemetry
{
public class MyTelemetryInitializer : ITelemetryInitializer
{
public void Initialize(ITelemetry telemetry)
{
if (string.IsNullOrEmpty(telemetry.Context.Cloud.RoleName))
{
//set custom role name here
telemetry.Context.Cloud.RoleName = "Custom RoleName";
telemetry.Context.Cloud.RoleInstance = "Custom RoleInstance";
}
}
}
}
ASP.NET aplikací: Načtení inicializátoru do aktivní konfigurace telemetrie
V ApplicationInsights.config :
<ApplicationInsights>
<TelemetryInitializers>
<!-- Fully qualified type name, assembly name: -->
<Add Type="CustomInitializer.Telemetry.MyTelemetryInitializer, CustomInitializer"/>
...
</TelemetryInitializers>
</ApplicationInsights>
Alternativní metodou pro ASP.NET webových aplikací je vytvoření instance inicializátoru v kódu, například v souboru Global.aspx.cs:
using Microsoft.ApplicationInsights.Extensibility;
using CustomInitializer.Telemetry;
protected void Application_Start()
{
// ...
TelemetryConfiguration.Active.TelemetryInitializers.Add(new MyTelemetryInitializer());
}
Poznámka
Přidání inicializátoru pomocí nebo using není ApplicationInsights.config TelemetryConfiguration.Active pro ASP.NET Core platné.
ASP.NET Core aplikací: Načtení inicializátoru do TelemetryConfiguration
U ASP.NET Core se přidání nového souboru provádí přidáním do kontejneru Injektáž závislostí, jak TelemetryInitializer je znázorněno níže. To se provádí ConfigureServices v metodě vaší Startup.cs třídy.
using Microsoft.ApplicationInsights.Extensibility;
using CustomInitializer.Telemetry;
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();
}
Vysvětlení názvu cloudové role v kontextu mapy aplikace
Pokud se chcete zamyslet nad názvem cloudové role, může být užitečné podívat se na mapu aplikace s několika názvy cloudových rolí:

V mapě aplikace nad každým z názvů v zelených polích jsou hodnoty názvů cloudových rolí pro různé aspekty této konkrétní distribuované aplikace. Pro tuto aplikaci se její role skládají z těchto rolí: Authentication , , , a acmefrontend Inventory Management Payment Processing Worker Role .
V případě této aplikace představuje každý z těchto názvů cloudových rolí také jiný jedinečný prostředek služby Application Přehledy s vlastními instrumentačními klíči. Vzhledem k tomu, že vlastník této aplikace má přístup ke každému z těchto čtyř různorodých prostředků application Přehledy, dokáže mapa aplikace spojit mapu podkladových relací.
Pro oficiální definice:
[Description("Name of the role the application is a part of. Maps directly to the role name in azure.")]
[MaxStringLength("256")]
705: string CloudRole = "ai.cloud.role";
[Description("Name of the instance where the application is running. Computer name for on-premises, instance name for Azure.")]
[MaxStringLength("256")]
715: string CloudRoleInstance = "ai.cloud.roleInstance";
Instance cloudové role může být užitečná také pro scénáře, kdy název cloudové role říká, že problém je někde ve webovém front-endu, ale můžete mít spuštěný webový front-end napříč několika servery s vyrovnáváním zatížení, aby bylo možné přejít na podrobnější vrstvu prostřednictvím dotazů Kusto a vědět, jestli problém ovlivňuje všechny webové front-endové servery nebo instance nebo jen jeden může být mimořádně důležitý.
Scénář, ve kterém můžete chtít přepsat hodnotu instance cloudové role, může být v případě, že je vaše aplikace spuštěná v kontejnerizovaném prostředí, kde pouze znalost jednotlivých serverů nemusí být k nalezení daného problému dostatečným informacím.
Další informace o tom, jak přepsat vlastnost názvu role cloudu pomocí inicializátorů telemetrie, najdete v tématu Přidání vlastností: ITelemetryInitializer.
Řešení potíží
Pokud máte potíže s tím, aby mapa aplikace fungovala podle očekávání, vyzkoušejte tyto kroky:
Obecné
Ujistěte se, že používáte oficiálně podporovanou sadu SDK. Nepodporované nebo komunitní sady SDK nemusí podporovat korelaci.
Seznam podporovaných sad SDK najdete v tomto článku.
Upgradujte všechny komponenty na nejnovější verzi sady SDK.
Pokud používáte nástroj Azure Functions jazykem C#, upgradujte na Functions V2.
Ověřte, že je název cloudové role správně nakonfigurovaný.
Pokud vám chybí závislost, ujistěte se, že je v seznamu automaticky shromažďovaných závislostí. Pokud ne, můžete ji stále najít ručně pomocí volání TrackDependency.
Příliš mnoho uzlů na mapě
Mapa aplikace vytvoří uzel aplikace pro každý jedinečný název cloudové role přítomný v telemetrii vašich požadavků a uzel závislosti pro každou jedinečnou kombinaci názvu typu, cíle a cloudové role v telemetrii závislostí. Pokud telemetrie obsahuje více než 10 000 uzlů, mapa aplikace nebude moct načíst všechny uzly a odkazy, takže mapa nebude kompletní. Pokud k tomu dojde, zobrazí se při prohlížení mapy zpráva upozornění.
Kromě toho mapa aplikace podporuje až 1 000 samostatných nevyskupovaných uzlů vykreslených najednou. Mapa aplikace snižuje vizuální složitost seskupením závislostí, které mají stejný typ a volající, ale pokud telemetrie obsahuje příliš mnoho jedinečných názvů cloudových rolí nebo příliš mnoho typů závislostí, seskupení nebude dostatečné a mapa se nebude moci vykreslit.
Pokud chcete tento problém vyřešit, budete muset změnit instrumentaci tak, aby správně nastavila název cloudové role, typ závislosti a pole cíle závislosti.
Cíl závislosti by měl představovat logický název závislosti. V mnoha případech je to ekvivalent názvu serveru nebo prostředku závislosti. Například v případě závislostí PROTOKOLU HTTP je nastaven na název hostitele. Neměl by obsahovat jedinečná ID nebo parametry, které se mění z jednoho požadavku na jiný.
Typ závislosti by měl představovat logický typ závislosti. Typickými typy závislostí jsou SQL HTTP, Azure Blob nebo Azure Blob. Neměl by obsahovat jedinečná ID.
Účel názvu cloudové role je popsaný v části výše.
Zpětná vazba na portálu
Pokud chcete poskytnout zpětnou vazbu, použijte možnost zpětné vazby.

Další kroky
- Další informace o tom, jak korelace funguje v application Přehledy, najdete v článku o korelaci telemetrie.
- Diagnostické prostředí celé transakce koreluje telemetrii na straně serveru ze všech vašich aplikací Přehledy monitorovaných komponent do jednoho zobrazení.
- Informace o pokročilých scénářích korelace v ASP.NET Core a ASP.NET najdete v článku Sledování vlastních operací.