Mapa aplikace: třídění distribuovaných aplikacíApplication Map: Triage Distributed Applications

Mapa aplikace pomáhá zjistit kritické body výkonu nebo hlavní místa selhání ve všech komponentách distribuované aplikace.Application Map helps you spot performance bottlenecks or failure hotspots across all components of your distributed application. Každý uzel na mapě představuje komponentu aplikace nebo její závislosti; a má stav klíčových ukazatelů výkonu a výstrah.Each node on the map represents an application component or its dependencies; and has health KPI and alerts status. Můžete kliknout na libovolnou komponentu a podrobnou diagnostiku, například Application Insights události.You can click through from any component to more detailed diagnostics, such as Application Insights events. Pokud vaše aplikace používá služby Azure, můžete také kliknout na Azure Diagnostics, jako je SQL Database Advisor doporučení.If your app uses Azure services, you can also click through to Azure diagnostics, such as SQL Database Advisor recommendations.

Co je komponenta?What is a Component?

Komponenty jsou nezávisle nasaditelné části distribuované aplikace nebo mikroslužeb.Components are independently deployable parts of your distributed/microservices application. Vývojáři a provozní týmy mají viditelnost na úrovni kódu nebo přístup k telemetrie generované těmito komponentami aplikací.Developers and operations teams have code-level visibility or access to telemetry generated by these application components.

  • Komponenty se liší od "pozorovaných" vnějších závislostí, jako je například SQL, EventHub atd. který tým nebo organizace nemusí mít přístup k (kód nebo telemetrie).Components are different from "observed" external dependencies such as SQL, EventHub etc. which your team/organization may not have access to (code or telemetry).
  • Komponenty běží na jakémkoli počtu instancí serveru/role/kontejneru.Components run on any number of server/role/container instances.
  • Komponenty mohou být odděleny Application Insights klíče instrumentace (i když se odběry liší) nebo různé role, které se hlásí do jediného klíče instrumentace Application Insights.Components can be separate Application Insights instrumentation keys (even if subscriptions are different) or different roles reporting to a single Application Insights instrumentation key. Funkce mapa ve verzi Preview zobrazuje komponenty bez ohledu na to, jak se nastavují.The preview map experience shows the components regardless of how they are set up.

Mapa kompozitní aplikaceComposite Application Map

Celou topologii aplikace můžete zobrazit napříč několika úrovněmi souvisejících komponent aplikace.You can see the full application topology across multiple levels of related application components. Komponenty mohou být různé Application Insights prostředky nebo různé role v jednom prostředku.Components could be different Application Insights resources, or different roles in a single resource. Mapa aplikace vyhledá součásti pomocí volání závislosti protokolu HTTP provedených mezi servery s nainstalovanou sadou Application Insights SDK.The app map finds components by following HTTP dependency calls made between servers with the Application Insights SDK installed.

Toto prostředí začíná progresivním zjišťováním komponent.This experience starts with progressive discovery of the components. Při prvním načtení mapy aplikace se aktivuje sada dotazů, aby bylo možné zjistit komponenty související s touto součástí.When you first load the application map, a set of queries is triggered to discover the components related to this component. Tlačítko v levém horním rohu se aktualizuje o počet komponent ve vaší aplikaci, jak jsou zjištěny.A button at the top-left corner will update with the number of components in your application as they are discovered.

Po kliknutí na možnost aktualizovat součásti mapy se mapa aktualizuje o všechny součásti zjištěné do tohoto bodu.On clicking "Update map components", the map is refreshed with all components discovered until that point. V závislosti na složitosti vaší aplikace může načtení trvat několik minut.Depending on the complexity of your application, this may take a minute to load.

Pokud jsou všechny součásti role v rámci jednoho Application Insights prostředku, tento krok zjišťování se nevyžaduje.If all of the components are roles within a single Application Insights resource, then this discovery step is not required. Počáteční zatížení této aplikace bude mít všechny své součásti.The initial load for such an application will have all its components.

Snímek obrazovky s mapou aplikace

Jedním z klíčových cílů tohoto prostředí je, aby bylo možné vizualizovat komplexní topologie se stovkami komponent.One of the key objectives with this experience is to be able to visualize complex topologies with hundreds of components.

Kliknutím na libovolnou komponentu zobrazíte související přehledy a přejdete na prostředí pro posouzení výkonu a selhání této součásti.Click on any component to see related insights and go to the performance and failure triage experience for that component.

Informační rámeček

Prozkoumat selháníInvestigate failures

Vyberte možnost prozkoumat selhání a spusťte tak podokno selhání.Select investigate failures to launch the failures pane.

Snímek obrazovky s tlačítkem prozkoumat selhání

Snímek obrazovky s problémy s chybami

Prozkoumat výkonInvestigate performance

Pokud chcete řešit problémy s výkonem, vyberte prozkoumat výkon.To troubleshoot performance problems, select investigate performance.

Snímek obrazovky s tlačítkem prozkoumat výkon

Snímek obrazovky s výkonem

Přejít na podrobnostiGo to details

Vyberte Přejít k podrobnostem a prozkoumejte koncové prostředí transakce, které může nabídnout zobrazení do úrovně zásobníku volání.Select go to details to explore the end-to-end transaction experience, which can offer views down to the call stack level.

Snímek obrazovky s tlačítkem přejít k podrobnostem

Snímek obrazovky s podrobnostmi o transakci od začátku do konce

Zobrazit protokoly (Analytics)View Logs (Analytics)

Pokud chcete svá data aplikací dotazovat a prozkoumat dál, klikněte na Zobrazit v protokolech (Analytics).To query and investigate your applications data further, click view in Logs (Analytics).

Snímek obrazovky s tlačítkem zobrazit v analýze

Snímek obrazovky s možností analýzy

VýstrahyAlerts

Chcete-li zobrazit aktivní výstrahy a podkladová pravidla, která způsobují aktivované výstrahy, vyberte možnost výstrahy.To view active alerts and the underlying rules that cause the alerts to be triggered, select alerts.

Snímek obrazovky s tlačítkem výstrahy

Snímek obrazovky s možností analýzy

Nastavení nebo přepsání názvu cloudové roleSet or override cloud role name

Mapa aplikace používá vlastnost název cloudové role k identifikaci komponent na mapě.Application Map uses the cloud role name property to identify the components on the map. Ruční nastavení nebo přepsání názvu cloudové role a změna toho, co se zobrazí na mapě aplikace:To manually set or override cloud role name and change what gets displayed on the Application Map:

Poznámka

Sada Application Insights SDK nebo Agent automaticky přidá vlastnost název cloudové role do telemetrie emitované součástmi v prostředí Azure App Service.The Application Insights SDK or Agent automatically adds the cloud role name property to the telemetry emitted by components in an Azure App Service environment.

Pište vlastní TelemetryInitializer, jak je uvedeno níže.Write custom TelemetryInitializer as below.

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";
            }
        }
    }
}

Aplikace ASP.NET: inicializátor zatížení pro aktivní TelemetryConfigurationASP.NET apps: Load initializer to the active TelemetryConfiguration

V ApplicationInsights.config:In ApplicationInsights.config :

    <ApplicationInsights>
      <TelemetryInitializers>
        <!-- Fully qualified type name, assembly name: -->
        <Add Type="CustomInitializer.Telemetry.MyTelemetryInitializer, CustomInitializer"/>
        ...
      </TelemetryInitializers>
    </ApplicationInsights>

Alternativním způsobem pro webové aplikace ASP.NET je vytvoření instance inicializátoru v kódu, například v Global.aspx.cs:An alternate method for ASP.NET Web apps is to instantiate the initializer in code, for example in 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í ApplicationInsights.config nebo použití TelemetryConfiguration.Active není pro ASP.NET Core aplikace platné.Adding initializer using ApplicationInsights.config or using TelemetryConfiguration.Active is not valid for ASP.NET Core applications.

ASP.NET Core aplikace: inicializátor zátěže na TelemetryConfigurationASP.NET Core apps: Load initializer to the TelemetryConfiguration

U ASP.NET Corech aplikací je přidání nového TelemetryInitializer provedeno přidáním do kontejneru vkládání závislostí, jak je znázorněno níže.For ASP.NET Core applications, adding a new TelemetryInitializer is done by adding it to the Dependency Injection container, as shown below. To se provádí v ConfigureServices metodě vaší Startup.cs třídy.This is done in ConfigureServices method of your Startup.cs class.

 using Microsoft.ApplicationInsights.Extensibility;
 using CustomInitializer.Telemetry;
 public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();
}

Principy názvu cloudové role v rámci mapy aplikaceUnderstanding cloud role name within the context of the Application Map

Vzhledem k tomu, jak si představit název cloudové role, může být užitečné si prohlédnout mapu aplikace, která má několik názvů cloudových rolí, které jsou k dispozici:As far as how to think about cloud role name, it can be helpful to look at an Application Map that has multiple cloud role names present:

Snímek obrazovky s mapou aplikace

V mapě aplikace nad každým názvem v zelených polích jsou hodnoty názvu cloudové role pro různé aspekty této konkrétní distribuované aplikace.In the Application Map above each of the names in green boxes are cloud role name values for different aspects of this particular distributed application. Takže pro tuto aplikaci se tyto role skládají z: Authentication , acmefrontend , Inventory Management , a Payment Processing Worker Role .So for this app its roles consist of: Authentication, acmefrontend, Inventory Management, a Payment Processing Worker Role.

V případě této aplikace všechny názvy cloudových rolí také představují jiný jedinečný Application Insights prostředek s vlastními klíči instrumentace.In the case of this app each of those cloud role names also represents a different unique Application Insights resource with their own instrumentation keys. Vzhledem k tomu, že vlastník této aplikace má přístup ke každému z těchto čtyř různorodých Application Insightsch prostředků, může mapa aplikace spojovat mapu základních vztahů.Since the owner of this application has access to each of those four disparate Application Insights resources, Application Map is able to stitch together a map of the underlying relationships.

Oficiální definice:For the official definitions:

   [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";

Případně instance cloudové role může být užitečná ve scénářích, kde název cloudové role oznamuje, že se jedná o problém umístěný na front-endu webu, ale může být spuštěný webový front-end na více serverech s vyrovnáváním zatížení, aby bylo možné přejít do vrstvy hlouběji prostřednictvím dotazů Kusto a s vědomím, jestli problém nemá vliv na všechny webové front-end servery/instance nebo jenom na jedenAlternatively, cloud role instance can be helpful for scenarios where cloud role name tells you the problem is somewhere in your web front-end, but you might be running your web front-end across multiple load-balanced servers so being able to drill in a layer deeper via Kusto queries and knowing if the issue is impacting all web front-end servers/instances or just one can be extremely important.

Situaci, kdy byste mohli chtít přepsat hodnotu pro instanci cloudové role, může být, pokud vaše aplikace běží v prostředí s kontejnerem, kde stačí jenom vědět, že jednotlivý server nemusí být k dispozici dostatek informací, aby mohl najít daný problém.A scenario where you might want to override the value for cloud role instance could be if your app is running in a containerized environment where just knowing the individual server might not be enough information to locate a given issue.

Další informace o tom, jak přepsat vlastnost název cloudové role pomocí inicializátorů telemetrie, najdete v tématu věnovaném Přidání vlastností: ITelemetryInitializer.For more information about how to override the cloud role name property with telemetry initializers, see Add properties: ITelemetryInitializer.

Řešení potížíTroubleshooting

Pokud máte potíže s tím, jak mapa aplikace funguje podle očekávání, zkuste postupovat takto:If you're having trouble getting Application Map to work as expected, try these steps:

ObecnéGeneral

  1. Ujistěte se, že používáte oficiálně podporovanou sadu SDK.Make sure you're using an officially supported SDK. Nepodporované nebo komunitní sady SDK nemusí podporovat korelaci.Unsupported/community SDKs might not support correlation.

    Seznam podporovaných sad SDK najdete v tomto článku.Refer to this article for a list of supported SDKs.

  2. Upgradujte všechny součásti na nejnovější verzi sady SDK.Upgrade all components to the latest SDK version.

  3. Pokud používáte Azure Functions s jazykem C#, upgradujte na Functions v2.If you're using Azure Functions with C#, upgrade to Functions V2.

  4. Ověřte, že je název cloudové role správně nakonfigurovaný.Confirm cloud role name is correctly configured.

  5. Pokud vám chybí závislost, ujistěte se, že je v seznamu automaticky shromažďovaných závislostí.If you're missing a dependency, make sure it's in the list of auto-collected dependencies. Pokud ne, můžete ji stále najít ručně pomocí volání TrackDependency.If not, you can still track it manually with a track dependency call.

Příliš mnoho uzlů na mapěToo many nodes on the map

Mapa aplikace vytvoří uzel aplikace pro každý jedinečný název cloudové role přítomný v telemetrie požadavků a uzel závislostí pro každou jedinečnou kombinaci typu, cíle a názvu cloudové role v telemetrii závislosti.Application Map constructs an application node for each unique cloud role name present in your request telemetry and a dependency node for each unique combination of type, target, and cloud role name in your dependency telemetry. Pokud je v telemetrii více než 10 000 uzlů, mapa aplikace nebude moci načíst všechny uzly a odkazy, takže vaše mapa nebude kompletní.If there are more than 10,000 nodes in your telemetry, Application Map will not be able to fetch all the nodes and links, so your map will be incomplete. Pokud k tomu dojde, zobrazí se při zobrazení mapy zpráva s upozorněním.If this happens, a warning message will appear when viewing the map.

Kromě toho mapa aplikace podporuje až 1000 samostatné neseskupené uzly vykreslené najednou.In addition, Application Map only supports up to 1000 separate ungrouped nodes rendered at once. Mapa aplikace zjednodušuje vizuální složitost seskupením závislostí, které mají stejný typ a volající, ale pokud má vaše telemetrie příliš mnoho jedinečných názvů cloudových rolí nebo příliš mnoho typů závislostí, toto seskupení nebude dostatečné a mapa nebude možné vykreslit.Application Map reduces visual complexity by grouping dependencies together that have the same type and callers, but if your telemetry has too many unique cloud role names or too many dependency types, that grouping will be insufficient, and the map will be unable to render.

Pokud to chcete opravit, budete muset změnit instrumentaci a správně nastavit název cloudové role, typ závislosti a cílová pole závislosti.To fix this, you'll need to change your instrumentation to properly set the cloud role name, dependency type, and dependency target fields.

  • Cíl závislosti by měl představovat logický název závislosti.Dependency target should represent the logical name of a dependency. V mnoha případech se jedná o ekvivalent názvu serveru nebo prostředku závislosti.In many cases, it's equivalent to the server or resource name of the dependency. Například v případě závislostí HTTP je nastaveno na název hostitele.For example, in the case of HTTP dependencies it is set to the hostname. Neměl by obsahovat jedinečné identifikátory nebo parametry, které se mění z jedné žádosti na jinou.It should not contain unique IDs or parameters that change from one request to another.

  • Typ závislosti by měl představovat logický typ závislosti.Dependency type should represent the logical type of a dependency. Například protokol HTTP, SQL nebo Azure Blob jsou typické typy závislostí.For example, HTTP, SQL or Azure Blob are typical dependency types. Neměl by obsahovat jedinečné identifikátory.It should not contain unique IDs.

  • Název cloudové role je popsaný v části výše.The purpose of cloud role name is described in the above section.

Váš názor na portálPortal feedback

Pokud chcete poskytnout zpětnou vazbu, použijte možnost zpětné vazby.To provide feedback, use the feedback option.

Obrázek MapLink-1

Další krokyNext steps