Så integrerar du Azure API Management med Azure Application Insights

GÄLLER FÖR: Alla API Management-nivåer

Du kan enkelt integrera Azure Application Insights med Azure API Management. Azure Application Insights är en utökningsbar tjänst för webbutvecklare som skapar och hanterar appar på flera plattformar. I den här guiden kommer du att:

  • Gå igenom Application Insights-integrering i API Management.
  • Lär dig strategier för att minska prestandapåverkan på din API Management-tjänstinstans.

Förutsättningar

  • Du behöver en Azure API Management-instans. Skapa en först.

  • Om du vill använda Application Insights skapar du en instans av Application Insights-tjänsten. Information om hur du skapar en instans med hjälp av Azure-portalen finns i Arbetsytebaserade Application Insights-resurser.

    Kommentar

    Application Insights-resursen kan finnas i en annan prenumeration eller till och med en annan klientorganisation än API Management-resursen.

  • Om du planerar att konfigurera en hanterad identitet för API Management som ska användas med Application Insights måste du utföra följande steg:

    1. Aktivera en systemtilldelad eller användartilldelad hanterad identitet för API Management i din API Management-instans.

      • Om du aktiverar en användartilldelad hanterad identitet noterar du identitetens klient-ID.
    2. Tilldela identiteten rollen Monitoring Metrics Publisher , som är begränsad till Application Insights-resursen. Om du vill tilldela rollen använder du Azure-portalen eller andra Azure-verktyg.

Scenarioöversikt

Följande är steg på hög nivå för det här scenariot.

  1. Först skapar du en anslutning mellan Application Insights och API Management

    Du kan skapa en anslutning mellan Application Insights och din API Management med hjälp av Azure-portalen, REST-API:et eller relaterade Azure-verktyg. API Management konfigurerar en loggerresurs för anslutningen.

    Kommentar

    Om din Application Insights-resurs finns i en annan klientorganisation måste du skapa loggaren med hjälp av REST-API:et.

    Viktigt!

    I portalen stöder API Management för närvarande endast anslutningar till Application Insights med hjälp av en Application Insights-instrumentationsnyckel. Om du vill använda en Application Insights-anslutningssträng eller en hanterad API Management-identitet använder du mallen REST API, Bicep eller ARM för att skapa loggaren. Läs mer om Application Insights anslutningssträng s.

  2. För det andra aktiverar du Application Insights-loggning för dina API:er eller API:er.

    I den här artikeln aktiverar du Application Insights-loggning för ditt API med hjälp av Azure-portalen. API Management konfigurerar en diagnostikresurs för API:et.

Skapa en anslutning med hjälp av Azure-portalen

Följ de här stegen om du vill använda Azure-portalen för att skapa en anslutning mellan Application Insights och API Management.

  1. Gå till din Azure API Management-tjänstinstans i Azure-portalen.

  2. Välj Application Insights på menyn till vänster.

  3. Markera + Lägg till.
    Skärmbild som visar var du lägger till en ny anslutning

  4. Välj den Application Insights-instans som du skapade tidigare och ange en kort beskrivning.

  5. Om du vill aktivera tillgänglighetsövervakning av DIN API Management-instans i Application Insights markerar du kryssrutan Lägg till tillgänglighetsövervakare .

    • Den här inställningen kontrollerar regelbundet om API Management-gatewayens slutpunkt svarar.
    • Resultaten visas i fönstret Tillgänglighet i Application Insights-instansen.
  6. Välj Skapa.

  7. Kontrollera att den nya Application Insights-loggaren nu visas i listan.

    Skärmbild som visar var du vill visa den nyligen skapade Application Insights-loggaren.

Kommentar

I bakgrunden skapas en loggningsentitet i din API Management-instans som innehåller instrumentationsnyckeln för Application Insights-instansen.

Dricks

Om du behöver uppdatera instrumentationsnyckeln som konfigurerats i Application Insights-loggaren väljer du loggningsraden i listan (inte namnet på loggaren). Ange instrumentationsnyckeln och välj Spara.

Skapa en anslutning med hjälp av MALLEN REST API, Bicep eller ARM

Följ de här stegen för att använda REST API, Bicep eller ARM-mallen för att skapa en anslutning mellan Application Insights och API Management. Du kan konfigurera en logger som använder en anslutningssträng, systemtilldelad hanterad identitet eller användartilldelad hanterad identitet.

Loggare med anslutningssträng autentiseringsuppgifter

Application Insights-anslutningssträng visas i avsnittet Översikt för din Application Insights-resurs.

Använd API Management REST API med följande begärandetext.

{
  "properties": {
    "loggerType": "applicationInsights",
    "description": "adding a new logger with connection string",
    "credentials": {
         "connectionString":"InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/;..."    
    }
  }
}

Loggare med systemtilldelade autentiseringsuppgifter för hanterad identitet

Se förutsättningarna för att använda en hanterad API Management-identitet.

Använd API Management REST API med följande begärandetext.

{
  "properties": {
    "loggerType": "applicationInsights",
    "description": "adding a new logger with system-assigned managed identity",
    "credentials": {
         "connectionString":"InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/;...",
         "identityClientId":"SystemAssigned"
    }
  }
}

Loggare med användartilldelade autentiseringsuppgifter för hanterad identitet

Se förutsättningarna för att använda en hanterad API Management-identitet.

Använd API Management REST API med följande begärandetext.

{
  "properties": {
    "loggerType": "applicationInsights",
    "description": "adding a new logger with user-assigned managed identity",
    "credentials": {
         "connectionString":"InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/;...",
         "identityClientId":"<ClientID>"
    }
  }
}

Aktivera Application Insights-loggning för ditt API

Använd följande steg för att aktivera Application Insights-loggning för ett API. Du kan också aktivera Application Insights-loggning för alla API:er.

  1. Gå till din Azure API Management-tjänstinstans i Azure-portalen.

  2. Välj API:er i menyn till vänster.

  3. Klicka på ditt API, i det här fallet Demo Conference API. Om du har konfigurerat väljer du en version.

    Dricks

    Om du vill aktivera loggning för alla API:er väljer du Alla API:er.

  4. Gå till fliken Inställningar från det övre fältet.

  5. Rulla ned till avsnittet Diagnostikloggar .
    App Insights-loggare

  6. Markera kryssrutan Aktivera .

  7. Välj den anslutna loggaren i listrutan Mål .

  8. Ange 100 som sampling (%) och markera kryssrutan Alltid loggfel .

  9. Låt resten av inställningarna vara som de är. Mer information om inställningarna finns i Referens för inställningar för diagnostikloggar.

    Varning

    Om du åsidosätter standardvärdet Antal nyttolastbyte till loggvärdet0 kan det avsevärt minska prestandan för dina API:er.

  10. Välj Spara.

  11. I bakgrunden skapas en diagnostikentitet med namnet applicationinsights på API-nivå.

Kommentar

Begäranden lyckas när API Management skickar hela svaret till klienten.

Loggare för ett enda API eller alla API:er

Du kan ange loggare på olika nivåer:

  • Enskild API-loggare
  • En loggare för alla API:er

Anger båda:

  • Som standard åsidosätter den enskilda API-loggaren (mer detaljerad nivå) den för alla API:er.
  • Om loggarna som konfigurerats på de två nivåerna är olika och du behöver båda loggarna för att ta emot telemetri (multiplexing) kontaktar du Microsoft Support. Observera att multiplexering inte stöds om du använder samma loggning (Application Insights-mål) på nivån "Alla API:er" och den enskilda API-nivån. För att multiplexering ska fungera korrekt måste du konfigurera olika loggare på "Alla API:er" och enskild API-nivå och begära hjälp från Microsofts support för att aktivera multiplexering för din tjänst.

Vilka data läggs till i Application Insights

Application Insights tar emot:

Telemetriobjekt beskrivning
Begär För varje inkommande begäran:
  • klientdelsbegäran
  • klientdelssvar
Beroende För varje begäran som vidarebefordras till en serverdelstjänst:
  • serverdelsbegäran
  • serverdelssvar
Undantag För varje misslyckad begäran:
  • Det gick inte på grund av en sluten klientanslutning
  • Utlöste ett on-error-avsnitt av API-principerna
  • Har en http-statuskod för svar som matchar 4xx eller 5xx
Spårning Om du konfigurerar en spårningsprincip .
Inställningen severity i trace principen måste vara lika med eller större än verbosity inställningen i Application Insights-loggningen.

Kommentar

Se Application Insights-gränser för information om maximal storlek och antal mått och händelser per Application Insights-instans.

Generera anpassade mått

Du kan generera anpassade mått till Application Insights från din API Management-instans. API Management genererar anpassade mått med hjälp av principen för utsända mått .

Kommentar

Anpassade mått är en förhandsversionsfunktion i Azure Monitor och omfattas av begränsningar.

Utför följande konfigurationssteg för att generera anpassade mått.

  1. Aktivera anpassade mått (förhandsversion) med anpassade dimensioner i Application Insights-instansen.

    1. Gå till Application Insights-instansen i portalen.
    2. I den vänstra menyn väljer du Användning och uppskattade kostnader.
    3. Välj Anpassade mått (förhandsversion)>Med dimensioner.
    4. Välj OK.
  2. "metrics": true Lägg till egenskapen till den diagnostikentitet applicationInsights som har konfigurerats i API Management. För närvarande måste du lägga till den här egenskapen med hjälp av API Management Diagnostic – Skapa eller uppdatera REST API. Till exempel:

    PUT https://management.azure.com/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.ApiManagement/service/{APIManagementServiceName}/diagnostics/applicationinsights
    
    {
        [...]
        {
        "properties": {
            "loggerId": "/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.ApiManagement/service/{APIManagementServiceName}/loggers/{ApplicationInsightsLoggerName}",
            "metrics": true
            [...]
        }
    }
    
  3. Kontrollera att Application Insights-loggaren har konfigurerats i det omfång som du tänker generera anpassade mått (antingen alla API:er eller ett enda API). Mer information finns i Aktivera Application Insights-loggning för ditt API tidigare i den här artikeln.

  4. emit-metric Konfigurera principen i ett omfång där Application Insights-loggning har konfigurerats (antingen alla API:er eller ett enda API) och är aktiverat för anpassade mått. Information om principer finns i principreferensen emit-metric .

Gränser för anpassade mått

Azure Monitor inför användningsgränser för anpassade mått som kan påverka din möjlighet att generera mått från API Management. Azure Monitor anger till exempel för närvarande en gräns på 10 dimensionsnycklar per mått och en gräns på 50 000 totala aktiva tidsserier per region i en prenumeration (inom en 12-timmarsperiod).

Dessa gränser har följande konsekvenser för att konfigurera anpassade mått i API Management:

  • Du kan konfigurera högst 10 anpassade dimensioner per emit-metric princip.

  • Antalet aktiva tidsserier som genereras av emit-metric principen inom en 12-timmarsperiod är produkten av antalet unika värden för varje konfigurerad dimension under perioden. Om till exempel tre anpassade dimensioner konfigurerades i principen och varje dimension hade 10 möjliga värden inom perioden, emit-metric skulle principen bidra med 1 000 aktiva tidsserier (10 x 10 x 10).

  • Om du konfigurerar emit-metric principen i flera API Management-instanser som finns i samma region i en prenumeration kan alla instanser bidra till den regionala gränsen för aktiva tidsserier.

Prestandakonsekvenser och loggsampling

Varning

Loggning av alla händelser kan ha allvarliga prestandakonsekvenser, beroende på frekvens för inkommande begäranden.

Baserat på interna belastningstester orsakade aktivering av loggningsfunktionen en minskning av dataflödet med 40–50 % när begärandefrekvensen överskred 1 000 begäranden per sekund. Application Insights är utformat för att utvärdera programprestanda med hjälp av statistisk analys. Det är inte:

  • Avsett att vara ett granskningssystem.
  • Passar för att logga varje enskild begäran för högvolym-API:er.

Du kan ändra antalet loggade begäranden genom att justera inställningen Sampling. Ett värde på 100 % innebär att alla begäranden loggas, medan 0 % innebär att inget loggas.

Sampling bidrar till att minska telemetrivolymen, vilket effektivt förhindrar betydande prestandaförsämring samtidigt som nyttan med loggning kvarstår.

Om du vill förbättra prestandaproblemen hoppar du över:

  • Begärande- och svarsrubriker.
  • Innehållsloggning.

Video

Felsökning

Åtgärda problemet med telemetridataflöde från API Management till Application Insights:

  • Undersöka om det finns en länkad AZURE Monitor Private Link-omfångsresurs (AMPLS) i det virtuella nätverk där API Management-resursen är ansluten. AMPLS-resurser har ett globalt omfång mellan prenumerationer och ansvarar för att hantera datafrågor och inmatning för alla Azure Monitor-resurser. Det är möjligt att AMPLS har konfigurerats med ett privat åtkomstläge specifikt för datainmatning. I sådana fall inkluderar du Application Insights-resursen och dess associerade Log Analytics-resurs i AMPLS. När det här tillägget har gjorts matas API Management-data in i Application Insights-resursen, vilket löser problemet med telemetridataöverföring.

Nästa steg