Toepassingskaart: Gedistribueerde toepassingen triageeren
Met het toepassingsoverzicht kunt u knelpunten met prestatieproblemen of hotspots met storingen in alle onderdelen van uw gedistribueerde toepassing herkennen. Elk knooppunt op de kaart vertegenwoordigt een toepassingsonderdeel of de afhankelijkheden; en heeft de status KPI en waarschuwingen. U kunt vanaf elk onderdeel doorklikken naar meer gedetailleerde diagnostische gegevens, zoals application Insights gebeurtenissen. Als uw app gebruikmaakt van Azure-services, kunt u ook doorklikken naar Diagnostische gegevens van Azure, zoals SQL Database Advisor-aanbevelingen.
Wat is een onderdeel?
Onderdelen zijn onafhankelijk implementeerbare onderdelen van uw gedistribueerde/microservicestoepassing. Ontwikkelaars en operationele teams hebben zichtbaarheid op codeniveau of toegang tot telemetrie die wordt gegenereerd door deze toepassingsonderdelen.
- Onderdelen verschillen van 'waargenomen' externe afhankelijkheden, zoals SQL, EventHub, enzovoort, die uw team/organisatie mogelijk geen toegang heeft (code of telemetrie).
- Onderdelen worden uitgevoerd op een groot aantal server-/rol-/container-exemplaren.
- Onderdelen kunnen afzonderlijke Application Insights-instrumentatiesleutels zijn (zelfs als abonnementen verschillend zijn) of verschillende rollen die rapporteren aan één Application Insights-instrumentatiesleutel. In de preview-versie van de kaart worden de onderdelen weergegeven, ongeacht hoe ze zijn ingesteld.
Kaart van samengestelde toepassingen
U ziet de volledige toepassingstopologie op meerdere niveaus van gerelateerde toepassingsonderdelen. Onderdelen kunnen verschillende application Insights resources zijn of verschillende rollen in één resource. Het app-overzicht zoekt onderdelen door http-afhankelijkheidsoproepen te volgen tussen servers waarop de Application Insights SDK is geïnstalleerd.
Deze ervaring begint met de progressieve detectie van de onderdelen. Wanneer u het toepassingskaart voor het eerst laadt, wordt een set query's geactiveerd om de onderdelen te ontdekken die betrekking hebben op dit onderdeel. Een knop in de linkerbovenhoek wordt bijgewerkt met het aantal onderdelen in uw toepassing wanneer deze worden ontdekt.
Wanneer u op Kaartonderdelen bijwerken klikt, wordt de kaart vernieuwd met alle onderdelen die tot dat moment zijn ontdekt. Afhankelijk van de complexiteit van uw toepassing kan het even duren om de toepassing te laden.
Als alle onderdelen rollen binnen één Application Insights resource zijn, is deze detectiestap niet vereist. De initiële belasting voor een dergelijke toepassing heeft alle onderdelen.

Een van de belangrijkste doelstellingen van deze ervaring is het visualiseren van complexe topologies met honderden onderdelen.
Klik op een onderdeel om gerelateerde inzichten te bekijken en ga naar de ervaring voor prestaties en storingen voor dat onderdeel.

Fouten onderzoeken
Selecteer Fouten onderzoeken om het deelvenster Fouten te starten.


Prestaties onderzoeken
Als u prestatieproblemen wilt oplossen, selecteert u Prestaties onderzoeken.


Ga naar details
Selecteer Naar details gaan om de end-to-end-transactie-ervaring te verkennen, die weergaven tot aanroepstackniveau kan bieden.


Logboeken weergeven (analyse)
Als u uw toepassingsgegevens verder wilt opvragen en onderzoeken, klikt u op Weergeven in Logboeken (Analytics).


Waarschuwingen
Als u actieve waarschuwingen en de onderliggende regels wilt weergeven die ervoor zorgen dat de waarschuwingen worden geactiveerd, selecteert u waarschuwingen.


Cloudrolnaam instellen of overschrijven
Toepassingskaart maakt gebruik van de eigenschap naam van de cloudrol om de onderdelen op de kaart te identificeren. Als u de naam van de cloudrol handmatig wilt instellen of overschrijven en wilt wijzigen wat wordt weergegeven op het toepassingskaart:
Notitie
De Application Insights SDK of Agent voegt automatisch de eigenschap naam van de cloudrol toe aan de telemetrie die wordt uitgezonden door onderdelen in een Azure App Service omgeving.
Schrijf aangepaste TelemetryInitializer zoals hieronder wordt weergegeven.
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 apps: Initialisatie naar de actieve TelemetryConfiguration laden
In ApplicationInsights.config :
<ApplicationInsights>
<TelemetryInitializers>
<!-- Fully qualified type name, assembly name: -->
<Add Type="CustomInitializer.Telemetry.MyTelemetryInitializer, CustomInitializer"/>
...
</TelemetryInitializers>
</ApplicationInsights>
Een alternatieve methode voor ASP.NET Web Apps is het instantieren van de initialisatie in code, bijvoorbeeld in Global.aspx.cs:
using Microsoft.ApplicationInsights.Extensibility;
using CustomInitializer.Telemetry;
protected void Application_Start()
{
// ...
TelemetryConfiguration.Active.TelemetryInitializers.Add(new MyTelemetryInitializer());
}
Notitie
Het toevoegen van initialisatie ApplicationInsights.config met of met is niet geldig voor ASP.NET Core TelemetryConfiguration.Active toepassingen.
ASP.NET Core apps: Initialisatie naar de TelemetryConfiguration laden
Voor ASP.NET Core toepassingen wordt het toevoegen van een nieuwe gedaan door deze toe te voegen aan de TelemetryInitializer container Dependency Injection, zoals hieronder wordt weergegeven. Dit wordt gedaan in ConfigureServices de methode van uw Startup.cs klasse.
using Microsoft.ApplicationInsights.Extensibility;
using CustomInitializer.Telemetry;
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();
}
Inzicht in de naam van de cloudrol binnen de context van het toepassingskaart
Wat betreft het nadenken over de naam van de cloudrol, kan het handig zijn om te kijken naar een toepassingskaart met meerdere cloudrolnamen:

In het toepassingskaart hierboven zijn elk van de namen in groene vakken naamwaarden voor cloudrol voor verschillende aspecten van deze specifieke gedistribueerde toepassing. Voor deze app bestaan de rollen dus uit: Authentication , , , een acmefrontend Inventory Management Payment Processing Worker Role .
In het geval van deze app vertegenwoordigt elk van deze cloudrolnamen ook een andere unieke Application Insights resource met hun eigen instrumentatiesleutels. Omdat de eigenaar van deze toepassing toegang heeft tot elk van deze vier verschillende Application Insights-resources, kan Application Map een kaart van de onderliggende relaties samenbrengen.
Voor de officiële definities:
[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";
Het exemplaar van een cloudrol kan ook nuttig zijn voor scenario's waarbij de naam van de cloudrol u vertelt dat het probleem zich ergens in uw webfront-end bevindt, maar u mogelijk uw webfront-end op meerdere servers met taakverde taakverdeeding gebruikt, zodat u dieper kunt inzoomen op een laag via Kusto-query's en weet of het probleem van invloed is op alle front-endservers/exemplaren van het web, of dat er slechts één zeer belangrijk kan zijn.
Een scenario waarin u mogelijk de waarde voor het exemplaar van een cloudrol wilt overschrijven, kan zijn als uw app wordt uitgevoerd in een containeromgeving, waarbij alleen de kennis van de afzonderlijke server mogelijk niet voldoende informatie is om een bepaald probleem te vinden.
Zie Eigenschappen toevoegen: ITelemetryInitializervoor meer informatie over het overschrijven van de eigenschap naam van de cloudrol met initialisatiefunctie voor telemetrie.
Problemen oplossen
Als u problemen hebt met het laten werken van toepassingskaart zoals verwacht, probeert u deze stappen:
Algemeen
Zorg ervoor dat u een officieel ondersteunde SDK gebruikt. Niet-ondersteunde SDK's of community-SDK's bieden mogelijk geen ondersteuning voor correlatie.
Raadpleeg dit artikel voor een lijst met ondersteunde SDK's.
Upgrade alle onderdelen naar de nieuwste SDK-versie.
Als u een Azure Functions C# gebruikt, upgradet u naar Functions V2.
Controleer of de naam van de cloudrol juist is geconfigureerd.
Als er een afhankelijkheid ontbreekt, zorgt u ervoor dat deze in de lijst met automatisch verzamelde afhankelijkheden staat. Als dat niet zo is, kunt u de afhankelijkheid nog steeds handmatig traceren met een aanroep voor het traceren van de afhankelijkheid.
Te veel knooppunten op de kaart
Toepassingskaart bouwt een toepassings knooppunt voor elke unieke naam van de cloudrol die aanwezig is in de telemetrie van uw aanvraag en een afhankelijkheids-knooppunt voor elke unieke combinatie van type, doel en cloudrolnaam in uw afhankelijkheids-telemetrie. Als uw telemetrie meer dan 10.000 knooppunten bevat, kan Application Map niet alle knooppunten en koppelingen ophalen, waardoor uw kaart onvolledig is. Als dit gebeurt, wordt er een waarschuwing weergegeven wanneer de kaart wordt weergegeven.
Bovendien ondersteunt Application Map maximaal 1000 afzonderlijke niet-gegroupeerde knooppunten die in één keer worden weergegeven. Toepassingskaart vermindert de complexiteit van de visual door afhankelijkheden te groeperen die hetzelfde type en dezelfde aanroepers hebben, maar als uw telemetrie te veel unieke cloudrolnamen of te veel afhankelijkheidstypen heeft, is die groepering onvoldoende en kan de kaart niet worden weergegeven.
Als u dit wilt oplossen, moet u uw instrumentatie wijzigen om de naam van de cloudrol, het afhankelijkheidstype en de afhankelijkheidsdoelvelden correct in te stellen.
Afhankelijkheidsdoel moet de logische naam van een afhankelijkheid vertegenwoordigen. In veel gevallen komt dit overeen met de server- of resourcenaam van de afhankelijkheid. In het geval van HTTP-afhankelijkheden wordt deze bijvoorbeeld ingesteld op de hostnaam. Het mag geen unieke ID's of parameters bevatten die van de ene aanvraag in de andere veranderen.
Afhankelijkheidstype moet het logische type van een afhankelijkheid vertegenwoordigen. HTTP, SQL of Azure Blob zijn bijvoorbeeld typische afhankelijkheidstypen. Deze mag geen unieke ID's bevatten.
Het doel van de naam van de cloudrol wordt beschreven in de bovenstaande sectie.
Portalfeedback
Als u feedback wilt geven, gebruikt u de feedbackoptie.

Volgende stappen
- Raadpleeg het artikel telemetriecorrelatie voor meer Insights over hoe correlatie werkt in Application Insights.
- De end-to-end-transactiediagnose-ervaring correleert telemetrie aan de serverzijde van al uw Application Insights bewaakte onderdelen in één weergave.
- Voor geavanceerde correlatiescenario's in ASP.NET Core en ASP.NET raadpleegt u het artikel Aangepaste bewerkingen bijhouden.