Programkarta: Sortera distribuerade program

Programkartor representerar den logiska strukturen för ett distribuerat program. Enskilda komponenter i programmet bestäms av deras egenskap "roleName" eller "name" i inspelad telemetri. Dessa komponenter representeras som cirklar på kartan och kallas "noder". HTTP-anrop mellan noder representeras som pilar som ansluter dessa noder, så kallade "anslutningsappar" eller "kanter". Noden som gör anropet är "källan" för anropet och den mottagande noden är "målet" för anropet.

Med en programkarta kan du lätt identifiera flaskhalsar i prestanda eller felpunkter i alla komponenter i ditt distribuerade program. Varje nod på kartan representerar en programkomponent eller dess beroenden och har status för hälso-KPI och aviseringar. Du kan välja valfri komponent för att få mer detaljerad diagnostik, till exempel Application Insights-händelser. Om din app använder Azure-tjänster kan du också välja Azure-diagnostik, till exempel rekommendationer för SQL Database Advisor.

Programkarta har också intelligent vy för att hjälpa till med snabba hälsoundersökningar för tjänster.

Vad är en komponent?

Komponenter är oberoende distributionsbara delar av ditt distribuerade program eller mikrotjänstprogram. Utvecklare och driftsteam har synlighet på kodnivå eller åtkomst till telemetri som genereras av dessa programkomponenter. Till exempel:

  • Komponenter skiljer sig från "observerade" externa beroenden, till exempel Azure SQL och Azure Event Hubs, som ditt team eller din organisation kanske inte har åtkomst till (kod eller telemetri).
  • Komponenter körs på valfritt antal server-, roll- eller containerinstanser.
  • Komponenter kan vara separata Application Insights-resurser, även om prenumerationerna skiljer sig åt. De kan också vara olika roller som rapporterar till en enda Application Insights-resurs. Förhandsgranskningskartan visar komponenterna oavsett hur de har konfigurerats.

Sammansatt programkarta

Du kan se den fullständiga programtopologin på flera nivåer av relaterade programkomponenter. Komponenter kan vara olika Application Insights-resurser eller olika roller i en enskild resurs. Programkartan hittar komponenter genom att följa HTTP-beroendeanrop som görs mellan servrar med Application Insights SDK installerat.

Den här upplevelsen börjar med progressiv identifiering av komponenterna. När du först läser in Programkarta utlöses en uppsättning frågor för att identifiera de komponenter som är relaterade till den här komponenten. En knapp i det övre vänstra hörnet uppdateras med antalet komponenter i programmet när de identifieras.

När du väljer Uppdatera kartkomponenter uppdateras kartan med alla komponenter identifierade fram till dess. Beroende på programmets komplexitet kan det ta en minut att läsa in den här uppdateringen.

Om alla komponenter är roller i en enda Application Insights-resurs krävs inte det här identifieringssteget. Den första belastningen för ett sådant program kommer att ha alla dess komponenter.

Screenshot that shows an example of an application map.

Ett av de viktigaste målen med den här upplevelsen är att kunna visualisera komplexa topologier med hundratals komponenter.

Välj valfri komponent för att se relaterade insikter och gå till prestanda- och feltriageupplevelsen för komponenten.

Diagram that shows application map details.

Undersök fel

Välj Undersök fel för att öppna fönstret Fel .

Screenshot that shows the Investigate failures button.

Screenshot that shows the Failures screen.

Undersök prestanda

Om du vill felsöka prestandaproblem väljer du Undersök prestanda.

Screenshot that shows the Investigate performance button.

Screenshot that shows the Performance screen.

Gå till information

Knappen Gå till information visar transaktionsupplevelsen från slutpunkt till slutpunkt, som erbjuder vyer på anropsstackens nivå.

Screenshot that shows the Go to details button.

Screenshot that shows the End-to-end transaction details screen.

Visa i loggar (analys)

Om du vill köra frågor mot och undersöka programdata ytterligare väljer du Visa i loggar (analys).

Screenshot that shows the View in Logs (Analytics) button.

Screenshot that shows the Logs screen with a line graph that summarizes the average response duration of a request over the past 12 hours.

Aviseringar

Om du vill visa aktiva aviseringar och underliggande regler som gör att aviseringarna utlöses väljer du Aviseringar.

Screenshot that shows the Alerts button.

Screenshot that shows a list of alerts.

Ange eller åsidosätt molnrollnamn

Application Map använder egenskapen för molnrollnamn för att identifiera komponenterna på kartan.

Följ den här vägledningen om du vill ange eller åsidosätta molnrollnamn manuellt och ändra vad som visas på programkartan.

Kommentar

Application Insights SDK eller Agent lägger automatiskt till egenskapen för molnrollnamn till telemetrin som genereras av komponenter i en Azure App Service-miljö.

Skriva anpassad TelemetryInitializer

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 appar: Läs in initieraren i den aktiva TelemetryConfiguration

I ApplicationInsights.config:

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

En alternativ metod för ASP.NET webbappar är att instansiera initiatorn i kod, till exempel i Global.aspx.cs:

 using Microsoft.ApplicationInsights.Extensibility;
 using CustomInitializer.Telemetry;

    protected void Application_Start()
    {
        // ...
        TelemetryConfiguration.Active.TelemetryInitializers.Add(new MyTelemetryInitializer());
    }

Kommentar

Att lägga till en initiering med hjälp ApplicationInsights.config av eller TelemetryConfiguration.Active inte är giltigt för ASP.NET Core-program.

ASP.NET Core-appar: Läs in en initiator till TelemetryConfiguration

Om du vill lägga till en ny TelemetryInitializer instans för ASP.NET Core-program lägger du till den i containern Beroendeinmatning, som du ser. Du gör det här steget i -metoden för ConfigureServices din Startup.cs klass.

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

Förstå namnet på molnrollen i kontexten för en programkarta

Om du vill hjälpa dig att förstå begreppet molnrollnamn kan du titta på en programkarta som har flera molnrollnamn.

Screenshot that shows an application map example.

På den programkarta som visas är vart och ett av namnen i gröna rutor ett värde för molnrollnamn för olika aspekter av det här distribuerade programmet. För den här appen består dess roller av Authentication, acmefrontend, Inventory Managementoch Payment Processing Worker Role.

I den här appen representerar vart och ett av molnrollnamnen också en annan unik Application Insights-resurs med egna instrumentationsnycklar. Eftersom ägaren av det här programmet har åtkomst till var och en av dessa fyra olika Application Insights-resurser kan Programkarta sammanfoga en karta över de underliggande relationerna.

För de officiella definitionerna:

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

Alternativt kan molnrollinstansen vara till hjälp för scenarier där ett molnrollnamn anger att problemet finns någonstans i webbklientdelen. Men du kanske kör flera belastningsutjämningsservrar i webbklientdelen. Att kunna öka detaljnivån i ett lager djupare via Kusto-frågor och veta om problemet påverkar alla webbklientdelsservrar eller instanser eller bara en kan vara viktigt.

Intelligent vy Ett scenario när du kanske vill åsidosätta värdet för molnrollinstansen kan vara om din app körs i en containerbaserad miljö. I det här fallet kanske det inte finns tillräckligt med information om att bara känna till den enskilda servern för att hitta ett specifikt problem.

Mer information om hur du åsidosätter egenskapen för molnrollnamn med telemetriinitierare finns i Lägga till egenskaper: ITelemetryInitializer.


Programkartfilter

Med programkartans filter kan användaren minska antalet noder och kanter som visas genom att använda ett eller flera filter. Dessa filter kan användas för att minska kartans omfattning och visa en mindre och mer fokuserad karta.

Skapa programmappningsfilter

Om du vill skapa ett filter väljer du knappen "Lägg till filter" i programkartans verktygsfält.

A screenshot of the Add Filter button.

Då visas en dialogruta med tre avsnitt: 1) Välj filtertyp, 2) Välj filterparametrar och 3) Granska.

A screenshot with the Node Filter radio button selected.

A screenshot with the Connector Edge Filter radio button selected.

Det första avsnittet har två alternativ:

  1. Nodfilter
  2. Anslut ellerfilter (kant)

Innehållet i de andra avsnitten ändras baserat på det valda alternativet.

Nodfilter

Med nodfilter kan användaren bara lämna valda noder på kartan och dölja resten. Ett nodfilter kontrollerar varje nod om den innehåller en egenskap (till exempel dess namn) med ett värde som matchar ett sökvärde via en viss operator. Om en nod tas bort av ett nodfilter tas även alla dess anslutningsappar (kanter) bort.

Det finns tre tillgängliga parametrar för noder:

  • Med "Noder ingår" kan användaren bara välja noder med matchande egenskaper eller även inkludera källnoder, målnoder eller båda i den resulterande kartan.

    • "Noder och källor, mål"- Det innebär att noder som matchar sökparametrarna inkluderas i den resulterande kartan, och noder som är källor eller mål för den matchande noden inkluderas också, även om de inte har egenskapsvärden som matchar sökningen. Käll- och målnoder kallas tillsammans för "Anslut ed"-noder.

    • "Noder och källor" – samma som ovan, men målnoder inkluderas inte automatiskt i resultatet.

    • "Noder och mål" – samma som ovan, men källnoder inkluderas inte automatiskt.

    • "Endast noder" – Alla noder i den resulterande kartan måste ha ett egenskapsvärde som matchar.

  • "Operator" är den typ av kontroll som ska utföras på varje nods egenskapsvärden:

    • innehåller

    • !innehåller (innehåller inte)

    • == (lika med)

    • != (inte lika med)

  • "Sökvärde" är den text som måste vara innesluten, inte innesluten, lika med eller inte lika med ett nodegenskapsvärde. Några av de värden som finns i noder som finns på kartan visas i en listruta. Valfritt godtyckligt värde kan anges genom att klicka på "Skapa alternativ ..." i listrutan.

I skärmbilden nedan konfigureras till exempel filtret för att välja Noder som innehåller texten "-west".Käll- och target-noder inkluderas också i den resulterande kartan. På samma skärmbild kan användaren välja ett av värdena som finns på kartan eller skapa ett alternativ som inte stämmer överens med det som finns på kartan.

A screenshot with the filter configured to select nodes that contain the text west.

filter för Anslut eller (kant)

Anslut ellerfilter undersöker egenskaperna för en anslutningsapp för att matcha ett värde. Anslut orer som inte matchar filtret tas bort från kartan. Samma sak händer med noder utan anslutningsappar kvar.

Anslut ellerfilter kräver tre parametrar:

  • Med "Filtrera anslutningsappar efter" kan användaren välja vilken egenskap för en anslutningsapp som ska användas:

    • "Felanslutning (markerad röd)" väljer anslutningsappar baserat på deras färg (röd eller inte). Det går inte att ange ett värde för den här typen av filter, bara en operator som är "==" eller "!=" som betyder "anslutningsapp med fel" och "anslutningsapp utan fel".

    • "Felfrekvens" använder den genomsnittliga felfrekvensen för anslutningsappen---antalet misslyckade anrop dividerat med antalet alla anrop---uttryckt i procent. Till exempel skulle värdet "1" referera till 1 % misslyckade anrop.

    • "Genomsnittlig samtalsvaraktighet (****ms)" använder just det: den genomsnittliga varaktigheten för alla anrop som representeras av anslutningsappen, i millisekunder. Ett värde på "1 000" skulle till exempel referera till anrop som i genomsnitt var 1 sekund.

    • "Antal anrop" använder det totala antalet anrop som representeras av anslutningsappen.

  • "Operator" är jämförelsen som ska tillämpas mellan anslutningsegenskapen och värdet som anges nedan. Alternativen ändras: "Felanslutningsapp" har lika med/inte är lika med alternativ; alla andra har större/mindre än.

  • "Värde" är jämförelsevärdet för filtret. Det finns bara ett alternativ för filtret "Felanslutningsapp": "Fel". Andra filtertyper kräver ett numeriskt värde och erbjuder en listruta med vissa förifyllda poster som är relevanta för kartan.

    • Vissa av dessa poster har en beteckning "(Pxx)" som är percentilnivåer. Filtret "Genomsnittlig samtalsvaraktighet" kan till exempel ha värdet "200 (P90)" som anger att 90 % av alla anslutningsappar (oavsett hur många anrop de representerar) har mindre än 200 ms samtalsvaraktighet..

    • När ett visst tal inte visas i listrutan kan det skrivas och skapas genom att klicka på Alternativet Skapa. Om du skriver "P" visas alla percentilvärden i listrutan.

Granskningsavsnitt

Avsnittet Granska innehåller text- och visuella beskrivningar av vad filtret ska göra, vilket bör vara användbart när du lär dig hur filter fungerar:

A screenshot of the Review section with node in focus.

A screenshot of the Review section depicting an average call duration greater than 42 milliseconds.

Använda filter i Programkarta

Filtrera interaktivitet

När du har konfigurerat ett filter i popup-fönstret "Lägg till filter" väljer du "Använd" för att skapa filtret. Flera filter kan användas, och de fungerar sekventiellt, från vänster till höger. Varje filter kan ta bort ytterligare noder och anslutningsappar, men kan inte lägga till dem på kartan igen.

Filtren visas som avrundade knappar ovanför programkartan:

A screenshot displaying the rounded filter buttons above the application map.

Om du klickar på på A screenshot of a rounded X button. ett filter tas filtret bort. Om du klickar någon annanstans på knappen kan användaren redigera filtrets värden. När användaren ändrar värden i filtret tillämpas de nya värdena så att kartan är en förhandsgranskning av ändringen. Om du klickar på Avbryt återställs filtret som det var innan du redigerade det.

A screenshot displaying the Configure Connector Filter section with a Cancel button.

Återanvända filter

Filter kan återanvändas på två sätt:

  • Knappen "Kopiera länk" i verktygsfältet ovanför kartan kodar filterinformationen i den kopierade URL:en. Den här länken kan sparas i webbläsarens bokmärken eller delas med andra. "Kopiera länk" bevarar varaktighetsvärdet, men inte den absoluta tiden, så kartan som visas vid ett senare tillfälle kan skilja sig från den som observerades när länken skapades.

  • Pin-koden A screenshot displaying the dashboard pin button. för instrumentpanelen finns bredvid namnlisten i fönstret Programkarta. Den här knappen fäster kartan på en instrumentpanel, tillsammans med de filter som används för den. Den här åtgärden kan vara användbar för filter som ofta är intressanta. Användaren kan till exempel fästa en karta med filtret "Felanslutningsapp" tillämpat på den, och instrumentpanelsvyn visar endast noder som har fel i sina HTTP-anrop.

Filtrera användningsscenarier

Det finns många filterkombinationer. Här följer några förslag som gäller för de flesta kartor och kan vara användbara för att fästa på en instrumentpanel:

  • Visa endast fel som visas som betydande med hjälp av filtret "Felanslutningsapp" tillsammans med "Intelligent vy":
    A screenshot displaying the Last 24 hours and Highlighted Errors filters.A screenshot displaying the Intelligent Overview toggle.

  • Dölj anslutningsappar med låg trafik utan fel för att snabbt fokusera på problem som har högre påverkan: A screenshot displaying the Last 24 hours, calls greater than 876, and highlighted errors filters.

  • Visa anslutningsappar med hög trafik med hög genomsnittlig varaktighet för att fokusera på potentiella prestandaproblem: A screenshot displaying the Last 24 hours, calls greater than 3057, and average time greater than 467 filters.

  • Visa en specifik del av ett distribuerat program (kräver lämplig roleName-namngivningskonvention): A screenshot displaying the Last 24 hours and Connected Contains West filters.

  • Dölj en beroendetyp som är för bullrig: A screenshot displaying the Last 24 hours and Nodes Contains Storage Accounts filters.

  • Visa endast anslutningsappar som har högre felfrekvens än ett visst värde A screenshot displaying the Last 24 hours and Errors greater than 0.01 filters.


Intelligent vy för programkarta

I följande avsnitt beskrivs intelligent vy.

Sammanfattning av intelligent vy

Application Map Intelligent-vyn är utformad för att underlätta hälsoundersökningar av tjänsten. Den använder maskininlärning för att snabbt identifiera potentiella grundorsaker till problem genom att filtrera bort brus. Maskininlärningsmodellen lär sig av Application Maps historiska beteende för att identifiera dominerande mönster och avvikelser som indikerar potentiella orsaker till en incident.

I stora distribuerade program finns det alltid en viss grad av brus som kommer från "godartade" fel, vilket kan orsaka att programkartan blir bullrig genom att visa många röda kanter. Intelligent vy visar endast de mest sannolika orsakerna till tjänstfel och tar bort nod-till-nod-röda kanter (tjänst-till-tjänst-kommunikation) i felfria tjänster. Intelligent vy markerar kanterna i rött som ska undersökas. Det ger också användbara insikter för den markerade kanten.

Fördelar med intelligent vy

  • Minskar tiden till lösning genom att endast markera fel som behöver undersökas
  • Ger användbara insikter om varför en viss röd kant har markerats
  • Gör att programkartan kan användas för stora distribuerade program sömlöst (genom att endast fokusera på kanter markerade i rött)

Aktivera intelligent vy i programkarta

Aktivera växlingsknappen intelligent vy . Om du vill ändra känsligheten för identifieringarna väljer du Låg, Medel eller Hög. Mer information finns i felsökningsfrågan om känslighet.

Screenshot that shows the Application Map user interface with options to toggle Intelligent view and provide feedback.

När du har aktiverat intelligent vy väljer du en av de markerade kanterna för att se "användbara insikter". Insikterna visas i fönstret till höger och förklarar varför gränsen har markerats.

Screenshot that shows the Application Map user interface section about actionable insights.

Om du vill börja felsöka väljer du Undersök fel. I fönstret Fel som öppnas undersöker du om det identifierade problemet är rotorsaken. Om inga kanter är röda hittade maskininlärningsmodellen inte potentiella incidenter i programmets beroenden.

Om du vill ge feedback väljer du knappen Feedback på kartan.

Hur avgör Intelligent vy var de röda kanterna är markerade?

Intelligent vy använder den patenterade AIOps-maskininlärningsmodellen för att belysa vad som verkligen är viktigt i en programkarta.

Några exempel på överväganden är:

  • Felfrekvenser
  • Antal förfrågningar
  • Varaktigheter
  • Avvikelser i data
  • Typer av beroenden

Som jämförelse använder den normala vyn endast råfelfrekvensen.

Hur fungerar känslighet för intelligent vy?

Känslighet för intelligent vy justerar sannolikheten för att ett tjänstproblem identifieras.

Justera känsligheten för att uppnå önskad konfidensnivå i markerade kanter.

Känslighetsinställning Resultat
Högst Färre kanter markeras.
Medel (standard) Ett balanserat antal kanter markeras.
Lägst Fler kanter markeras.

Begränsningar i intelligent vy

Intelligent vy har vissa begränsningar:

  • Stora distribuerade program kan ta en minut att läsa in intelligent vy.
  • Tidsramar på upp till sju dagar stöds.

Information om hur du ger feedback finns i Portalfeedback.


Felsökning

Om du har problem med att få programkartan att fungera som förväntat kan du prova de här stegen.

Allmänt

  1. Kontrollera att du använder en SDK som stöds officiellt. SDK:er som inte stöds eller community-SDK:er kanske inte stöder korrelation.

    En lista över SDK:er som stöds finns i Application Insights: Språk, plattformar och integreringar.

  2. Uppgradera alla komponenter till den senaste SDK-versionen.

  3. Om du använder Azure Functions med C# uppgraderar du till Azure Functions V2.

  4. Bekräfta att namnet på molnrollen är korrekt konfigurerat.

  5. Om du saknar ett beroende kontrollerar du att det finns i listan över beroenden som hämtas automatiskt. Om inte så kan du ändå spåra det manuellt med ett beroendespårningsanrop.

För många noder på kartan

Programkarta skapar en programnod för varje unikt molnrollnamn som finns i din telemetri för begäran. En beroendenod skapas också för varje unik kombination av typ, mål och molnrollnamn.

Om det finns fler än 10 000 noder i telemetrin kan programkartan inte hämta alla noder och länkar, så kartan blir ofullständig. Om det här scenariot inträffar visas ett varningsmeddelande när du visar kartan.

Programkarta stöder endast upp till 1 000 separata ogrupperade noder som återges samtidigt. Programkarta minskar den visuella komplexiteten genom att gruppera beroenden som har samma typ och anropare.

Om din telemetri har för många unika molnrollnamn eller för många beroendetyper är den gruppering otillräcklig och kartan återges inte.

För att åtgärda det här problemet måste du ändra instrumentationen så att molnrollens namn, beroendetyp och beroendemålfält anges korrekt.

  • Beroendemålet ska representera det logiska namnet på ett beroende. I många fall motsvarar det beroendets server- eller resursnamn. Om det till exempel finns HTTP-beroenden är det inställt på värdnamnet. Den får inte innehålla unika ID:er eller parametrar som ändras från en begäran till en annan.

  • Beroendetyp ska representera den logiska typen av ett beroende. Till exempel är HTTP, SQL eller Azure Blob typiska beroendetyper. Den får inte innehålla unika ID:t.

  • Syftet med namnet på molnrollen beskrivs i avsnittet Ange eller åsidosätt molnrollnamn .

Intelligent vy

Vanliga felsökningsfrågor om intelligent vy.

Varför är inte den här gränsen markerad, även med låg känslighet?

Ett beroende kan verka misslyckas, men modellen indikerar inte att det är en potentiell incident:

  • Om det här beroendet har misslyckats ett tag kan modellen tro att det är ett vanligt tillstånd och inte markera gränsen åt dig. Den fokuserar på problemlösning i RT.
  • Om det här beroendet har en minimal effekt på appens övergripande prestanda kan det också få modellen att ignorera den.
  • Om inget av ovanstående är korrekt använder du alternativet Feedback och beskriver din upplevelse. Du kan hjälpa oss att förbättra framtida modellversioner.

Varför är gränsen markerad?

Om en kant är markerad bör förklaringen från modellen peka dig på de viktigaste funktionerna som gjorde att modellen ger det här beroendet en hög sannolikhetspoäng. Rekommendationen baseras inte enbart på fel utan på andra indikatorer som oväntad svarstid i dominerande flöden.

Varför läses inte intelligent vy in?

Om intelligent vy inte läses in anger du den konfigurerade tidsramen till sex dagar eller mindre.

Varför tar intelligent vy lång tid att läsa in?

Undvik att välja Uppdatera kartkomponenter.

Aktivera endast intelligent vy för en enda Application Insights-resurs.

Screenshot that shows the Update map components button in the Application Map user interface.

Portalfeedback

Använd feedbackalternativet för att ge feedback.

Screenshot that shows the Feedback option.

Nästa steg

  • Mer information om hur korrelation fungerar i Application Insights finns i Telemetrikorrelation.
  • Transaktionsdiagnostikupplevelsen från slutpunkt till slutpunkt korrelerar telemetri på serversidan från alla dina Application Insights-övervakade komponenter till en enda vy.
  • Avancerade korrelationsscenarier i ASP.NET Core och ASP.NET finns i Spåra anpassade åtgärder.