Povolení Application Insights pro aplikace ASP.NET Core

Tento článek popisuje, jak povolit Application Insights pro ASP.NET Core aplikaci nasazenou jako webovou aplikaci Azure. Tato implementace využívá přístup založený na sadě SDK, k dispozici je také přístup k automatické instrumentaci .

Application Insights může shromažďovat následující telemetrická data z vaší ASP.NET Core aplikace:

  • Žádosti
  • Závislosti
  • Výjimky
  • Čítače výkonu
  • Prezenčních signálů
  • Protokoly

Použijeme příklad aplikace ASP.NET Core MVC, který cílí net6.0. Tyto pokyny můžete použít pro všechny aplikace ASP.NET Core. Pokud používáte službu Worker Service, postupujte podle pokynů odsud.

Poznámka

Podpora příjmu dat založeného na instrumentačním klíči skončí 31. března 2025. Příjem klíčů instrumentace bude dál fungovat, ale už nebudeme poskytovat aktualizace ani podporu této funkce. Přechod na připojovací řetězce , abyste mohli využívat nové funkce.

Podporované scénáře

Sada Application Insights SDK pro ASP.NET Core může monitorovat vaše aplikace bez ohledu na to, kde nebo jak běží. Pokud je vaše aplikace spuštěná a má síťové připojení k Azure, můžete shromažďovat telemetrická data. Monitorování Application Insights se podporuje všude, kde se podporuje .NET Core. Podpora se zabývá následujícími scénáři:

  • Operační systém: Windows, Linux nebo Mac
  • Metoda hostování: Proces nebo mimo proces
  • Metoda nasazení: Závislá architektura nebo samostatná
  • Webový server: IIS (internetový informační server) nebo Kestrel
  • Platforma hostování: Funkce Web Apps Azure App Service, virtuálního počítače Azure, Dockeru, Azure Kubernetes Service (AKS) atd.
  • Verze .NET Core: Všechny oficiálně podporované verze .NET Core , které nejsou ve verzi Preview
  • INTEGROVANÉ VÝVOJOVÉ PROSTŘEDÍ: Visual Studio, Visual Studio Code nebo příkazový řádek

Požadavky

Pokud chcete postupovat podle pokynů v tomto článku, je potřeba splnit určité požadavky.

  • Visual Studio 2022
  • Úlohy sady Visual Studio: vývoj pro ASP.NET a web, ukládání a zpracování dat a vývoj v Azure
  • .NET 6.0
  • Předplatné Azure a uživatelský účet (s možností vytvářet a odstraňovat prostředky)

Nasazení prostředků Azure

Please follow the guidance to deploy the sample application from its GitHub repository..

Aby bylo možné u některých prostředků poskytnout globálně jedinečné názvy, byla přiřazena 5 znaková přípona. Poznamenejte si tuto příponu pro pozdější použití v tomto článku.

Nasazený výpis prostředků Azure se zobrazí se zvýrazněnou příponou 5 znaků.

Vytvořte prostředek Application Insights

  1. V Azure Portal vyhledejte a vyberte skupinu prostředků application-insights-azure-café.

  2. V horní nabídce panelu nástrojů vyberte + Vytvořit.

    Zobrazí se skupina prostředků application-insights-azure-café se zvýrazněným tlačítkem + Vytvořit v nabídce panelu nástrojů.

  3. Na obrazovce Vytvořit prostředek vyhledejte a vyberte Application Insights v textovém poli hledání na marketplace.

    Obrazovka Vytvořit prostředek se zobrazí se službou Application Insights zadaná do vyhledávacího pole a služba Application Insights zvýrazněná z výsledků hledání.

  4. Na obrazovce Přehled prostředků Application Insights vyberte Vytvořit.

    Obrazovka přehledu Application Insights se zobrazí se zvýrazněným tlačítkem Vytvořit.

  5. Na kartě Základy application Insights Vyplňte formulář následujícím způsobem a pak vyberte tlačítko Zkontrolovat a vytvořit . Pole nezadaná v tabulce níže mohou uchovávat výchozí hodnoty.

    Pole Hodnota
    Název Zadejte , nahraďte azure-cafe-application-insights-{SUFFIX}{SUFFIX} odpovídající hodnotou přípony zaznamenanou dříve.
    Oblast Při nasazování prostředků článku vyberte stejnou oblast.
    Pracovní prostor Log Analytics Vyberte azure-cafe-log-analytics-workspace, případně můžete vytvořit nový pracovní prostor služby Log Analytics.

    Karta Základy Application Insights se zobrazí s formulářem naplněným předchozími hodnotami.

  6. Jakmile ověření předáte, vyberte Vytvořit a nasaďte prostředek.

    Na obrazovce ověření Application Insights se zobrazí zpráva o předání ověření a zvýrazněné tlačítko Vytvořit.

  7. Po dokončení nasazení se vraťte do application-insights-azure-cafe skupiny prostředků a vyberte nasazený prostředek Application Insights.

    Skupina prostředků Azure Cafe se zobrazí se zvýrazněným prostředkem Application Insights.

  8. Na obrazovce Přehled prostředku Application Insights zkopírujte hodnotu připojovacího řetězce pro použití v další části tohoto článku.

    Na obrazovce Přehled Application Insights se zobrazí zvýrazněná hodnota Připojovací řetězec a vybraná možnost Kopírovat.

Konfigurace nastavení aplikace připojovacího řetězce Application Insights na webu App Service

  1. Vraťte se do application-insights-azure-cafe skupiny prostředků, vyhledejte a otevřete prostředek azure-café-web-{SUFFIX} App Service.

    Skupina prostředků Azure Cafe se zobrazí se zvýrazněným prostředkem azure-café-web-{SUFFIX}.

  2. V nabídce vlevo pod záhlavím Nastavení vyberte Možnost Konfigurace. Potom na kartě Nastavení aplikace vyberte + Nové nastavení aplikace pod záhlavím Nastavení aplikace.

    Na obrazovce App Service prostředku se zobrazí položka Konfigurace vybraná z levé nabídky a zvýrazněné tlačítko + Nový panel nástrojů nastavení aplikace.

  3. V okně Přidat nebo upravit nastavení aplikace vyplňte formulář následujícím způsobem a vyberte OK.

    Pole Hodnota
    Název APPLICATIONINSIGHTS_CONNECTION_STRING
    Hodnota Vložte připojovací řetězec Application Insights získaný v předchozí části.

    V okně Přidat nebo upravit nastavení aplikace se zobrazí vyplněné předchozí hodnoty.

  4. Na obrazovce App Service Konfigurace vyberte tlačítko Uložit z nabídky panelu nástrojů. Po zobrazení výzvy k uložení změn vyberte Pokračovat.

    Obrazovka App Service Konfigurace se zobrazí se zvýrazněným tlačítkem Uložit v nabídce panelu nástrojů.

Instalace balíčku NuGet Application Insights

Potřebujeme nakonfigurovat webovou aplikaci ASP.NET Core MVC tak, aby odesílala telemetrii. Toho se dosahuje pomocí Application Insights pro ASP.NET Core balíček NuGet webových aplikací.

  1. V sadě Visual Studio otevřete 1 - Starter Application\src\AzureCafe.sln.

  2. Na panelu Průzkumník řešení klikněte pravým tlačítkem na soubor projektu AzureCafe a vyberte Spravovat balíčky NuGet.

    Průzkumník řešení se zobrazí s vybranou možností Spravovat balíčky NuGet z místní nabídky.

  3. Vyberte kartu Procházet a vyhledejte a vyberte Microsoft.ApplicationInsights.AspNetCore. Vyberte Nainstalovat a přijměte licenční podmínky. Doporučuje se používat nejnovější stabilní verzi. Najděte úplné poznámky k verzi sady SDK v opensourcovém úložišti GitHubu.

    Karta NuGet se zobrazí s vybranou kartou Procházet a Microsoft.ApplicationInsights.AspNetCore je zadána do vyhledávacího pole. Balíček Microsoft.ApplicationInsights.AspNetCore je vybraný ze seznamu výsledků. V pravém podokně je z rozevíracího seznamu vybrána nejnovější stabilní verze a zvýrazněné tlačítko Instalovat.

  4. Nechte Visual Studio otevřené pro další část článku.

Povolení telemetrie na straně serveru Application Insights

Application Insights pro ASP.NET Core webových aplikací NuGet zapouzdřuje funkce, které umožňují odesílání telemetrie na straně serveru do prostředku Application Insights v Azure.

  1. V sadě Visual Studio Průzkumník řešení vyhledejte a otevřete soubor Program.cs.

    Visual Studio Průzkumník řešení se zobrazí se zvýrazněným program.cs.

  2. Před builder.Services.AddControllersWithViews() příkazem vložte následující kód. Tento kód automaticky čte hodnotu připojovacího řetězce Application Insights z konfigurace. Metoda AddApplicationInsightsTelemetry zaregistruje ApplicationInsightsLoggerProvider integrovaný kontejner injektáže závislostí, který se pak použije k plnění požadavků implementace ILogger a ILogger<TCategoryName> .

    builder.Services.AddApplicationInsightsTelemetry();
    

    Zobrazí se okno kódu se zvýrazněným předchozím fragmentem kódu.

    Tip

    Přečtěte si další informace o možnostech konfigurace v ASP.NET Core.

Povolení telemetrie na straně klienta pro webové aplikace

Předchozí kroky jsou dostatečné, abyste mohli začít shromažďovat telemetrii na straně serveru. Tato aplikace má komponenty na straně klienta a podle dalších kroků začněte shromažďovat telemetrická data o využití.

  1. V Průzkumníku řešení sady Visual Studio vyhledejte a otevřete \Views\_ViewImports.cshtml. Na konec existujícího souboru přidejte následující kód.

    @inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
    

    Soubor _ViewImports.cshtml se zobrazí se zvýrazněným předchozím řádkem kódu.

  2. Aby bylo možné správně povolit monitorování na straně klienta pro vaši aplikaci, musí se fragment kódu JavaScriptu zobrazit v <head> části každé stránky aplikace, kterou chcete monitorovat. V sadě Visual Studio Průzkumník řešení vyhledejte a otevřete \Views\Shared\_Layout.cshtmlnásledující kód bezprostředně před pravou <\head> značku.

    @Html.Raw(JavaScriptSnippet.FullScript)
    

    Soubor _Layout.cshtml se zobrazí se zvýrazněným předchozím řádkem kódu v záhlaví stránky.

    Tip

    Jako alternativu FullScriptScriptBody k použití je k dispozici. Použijte ScriptBody , pokud potřebujete řídit <script> značku pro nastavení zásad zabezpečení obsahu:

    <script> // apply custom changes to this script tag.
        @Html.Raw(JavaScriptSnippet.ScriptBody)
    </script>
    

Poznámka

Injektáž JavaScriptu poskytuje výchozí prostředí konfigurace. Pokud potřebujete konfiguraci nad rámec nastavení připojovacího řetězce, musíte odebrat automatické injektáže, jak je popsáno výše, a ručně přidat sadu JavaScript SDK.

Povolení monitorování databázových dotazů

Při zkoumání příčin snížení výkonu je důležité zahrnout přehledy o volání databáze. Povolte monitorování prostřednictvím konfigurace modulu závislostí. Monitorování závislostí, včetně SQL, je ve výchozím nastavení povolené. Pokud chcete zachytit celý text dotazu SQL, můžete postupovat podle následujících kroků.

Poznámka

Text SQL může obsahovat citlivá data, jako jsou hesla a PII. Při povolování této funkce buďte opatrní.

  1. V sadě Visual Studio Průzkumník řešení vyhledejte a otevřete soubor Program.cs.

  2. V horní části souboru přidejte následující using příkaz.

    using Microsoft.ApplicationInsights.DependencyCollector;
    
  3. Bezprostředně za builder.Services.AddApplicationInsightsTelemetry() kódem vložte následující příkaz, abyste povolili instrumentaci textu příkazu SQL.

    builder.Services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>((module, o) => { module.EnableSqlCommandTextInstrumentation = true; });
    

    Zobrazí se okno kódu se zvýrazněným předchozím kódem.

Spuštění webové aplikace Azure Cafe

Po nasazení kódu webové aplikace se telemetrie přesune do Application Insights. Sada Application Insights SDK automaticky shromažďuje příchozí webové požadavky do vaší aplikace.

  1. Klikněte pravým tlačítkem na projekt AzureCafe v Průzkumník řešení a v místní nabídce vyberte Publikovat.

    Visual Studio Průzkumník řešení se zobrazí s vybraným projektem Azure Cafe a zvýrazněnou položkou místní nabídky Publikovat.

  2. Výběrem možnosti Publikovat nový kód upřednostníte na Azure App Service.

    Profil publikování AzureCafe se zobrazí se zvýrazněným tlačítkem Publikovat.

  3. Po úspěšném publikování se otevře nové okno prohlížeče webové aplikace Azure Cafe.

    Zobrazí se webová aplikace Azure Cafe.

  4. Provádění různých aktivit ve webové aplikaci za účelem vygenerování některých telemetrických dat

    1. Výběrem možnosti Podrobnosti vedle kavárny zobrazíte její nabídku a recenze.

      Část seznamu Azure Cafe se zobrazí se zvýrazněným tlačítkem Podrobnosti.

    2. Na obrazovce Kavárna vyberte kartu Recenze a zobrazte a přidejte recenze. Výběrem tlačítka Přidat recenzi přidáte recenzi.

      Obrazovka s podrobnostmi kavárny se zvýrazněným tlačítkem Přidat recenzi

    3. V dialogovém okně Vytvořit recenzi zadejte jméno, hodnocení, komentáře a nahrajte fotku pro recenzi. Po dokončení vyberte Přidat recenzi.

      Zobrazí se dialogové okno Vytvořit kontrolu.

    4. Opakováním přidávání recenzí podle potřeby vygenerujte další telemetrii.

Živé metriky

Živé metriky se dají použít k rychlému ověření, jestli je monitorování Application Insights správně nakonfigurované. Může trvat několik minut, než se telemetrie zobrazí na portálu a analýze, ale živé metriky zobrazují využití procesoru spuštěného procesu téměř v reálném čase. Může také zobrazit další telemetrii, jako jsou požadavky, závislosti a trasování.

Mapa aplikace

Ukázková aplikace volá více prostředků Azure, včetně Azure SQL, Azure Blob Storage a služby Azure Language Service (pro kontrolu analýzy mínění).

Zobrazí se ukázková architektura aplikace Azure Cafe.

Application Insights introspects příchozí telemetrická data a dokáže vygenerovat vizuální mapu zjištěných systémových integrací.

  1. Přístup k Azure Portal a přihlášení.

  2. Otevřete ukázkovou skupinu application-insights-azure-cafeprostředků aplikace .

  3. V seznamu prostředků vyberte azure-cafe-insights-{SUFFIX} prostředek Application Insights.

  4. V levé nabídce vyberte mapu aplikace pod nadpisem Prozkoumat . Sledujte vygenerovanou mapu aplikace.

    Zobrazí se mapa aplikace Application Insights.

Zobrazení textu příkazů SQL volání HTTP a databáze

  1. V Azure Portal otevřete prostředek Application Insights.

  2. Pod záhlavím Prozkoumat v levé nabídce vyberte Výkon.

  3. Karta Operace obsahuje podrobnosti o voláních HTTP přijatých aplikací. Můžete také přepínat mezi zobrazeními serveru a prohlížeče (na straně klienta) dat.

    Na obrazovce Výkon application Insights se zobrazí přepínač mezi serverem a prohlížečem zvýrazněným spolu se seznamem volání HTTP přijatých aplikací.

  4. V tabulce vyberte operaci a zvolte přejít k podrobnostem ukázky požadavku.

    Na obrazovce Výkon se zobrazí vybraná operace POST, zvýrazněné tlačítko Přejít k ukázce a v navrhovaném seznamu se vybere ukázka.

  5. U vybraného požadavku se zobrazí kompletní transakce. V tomto případě byla vytvořena kontrola včetně image, takže zahrnuje volání služby Azure Storage, jazykové služby (pro analýzu mínění) a volání databáze do SQL Azure k zachování kontroly. V tomto příkladu první vybraná událost zobrazuje informace relativní k volání HTTP POST.

    Kompletní transakce se zobrazí s vybraným voláním HTTP Post.

  6. Výběrem položky SQL zkontrolujte text příkazu SQL vydaný pro databázi.

    Kompletní transakce se zobrazí s podrobnostmi příkazu SQL.

  7. Volitelně vyberte požadavky závislostí (odchozích) do služby Azure Storage nebo jazykové služby.

  8. Vraťte se na obrazovku Výkon a vyberte kartu Závislosti a prozkoumejte volání externích prostředků. Všimněte si, že tabulka Operations obsahuje volání do analýzy mínění, služby Blob Storage a Azure SQL.

    Obrazovka Výkon se zobrazí s vybranou kartou Závislosti a zvýrazněnou tabulkou Operace.

Protokolování aplikací pomocí Application Insights

Přehled protokolování

Application Insights je jeden typ zprostředkovatele protokolování dostupný pro ASP.NET Core aplikace, které budou dostupné aplikacím, když je nainstalovaný balíček NuGet pro ASP.NET Core Balíček NuGet na straně serveru a povolená kolekce telemetrie na straně serveru. Připomínáme, že následující kód v souboru Program.cs zaregistruje ApplicationInsightsLoggerProvider kontejner integrované injektáže závislostí.

builder.Services.AddApplicationInsightsTelemetry();

ApplicationInsightsLoggerProvider Když je zaregistrovaný jako zprostředkovatel protokolování, aplikace je připravena k přihlášení do Application Insights pomocí injektáže ILogger konstruktoru nebo alternativy ILogger<TCategoryName>obecného typu .

Poznámka

Ve výchozím nastavení je poskytovatel protokolování nakonfigurovaný tak, aby automaticky zaznamenával události protokolu se závažností LogLevel.Warning nebo vyšší.

Představte si následující příklad kontroleru, který ukazuje injektáž ILoggeru, která je vyřešena s registrovaným ApplicationInsightsLoggerProvider kontejnerem injektáže závislostí. Všimněte si v metodě Get , že jsou zaznamenány informační, upozornění a chybová zpráva.

Poznámka

Ve výchozím nastavení se trasování na úrovni informací nezaznamená. Zaznamenává se pouze upozornění a vyšší úrovně.

using Microsoft.AspNetCore.Mvc;

[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
    private readonly ILogger _logger;

    public ValuesController(ILogger<ValuesController> logger)
    {
        _logger = logger;
    }

    [HttpGet]
    public ActionResult<IEnumerable<string>> Get()
    {
        //Info level traces are not captured by default
        _logger.LogInfo("An example of an Info trace..")
        _logger.LogWarning("An example of a Warning trace..");
        _logger.LogError("An example of an Error level message");

        return new string[] { "value1", "value2" };
    }
}

Další informace najdete v tématu Protokolování v ASP.NET Core.

Zobrazení protokolů v Application Insights

Výše uvedená hodnota ValuesController se nasadí s ukázkovou aplikací a nachází se ve složce Controllers projektu.

  1. V internetovém prohlížeči otevřete ukázkovou aplikaci. Na panelu Adresa připojte /api/Values a stiskněte Enter.

    Zobrazí se okno prohlížeče s parametrem /api/Values připojeným k adrese URL na panelu Adresa.

  2. Chvíli počkejte a pak se vraťte k prostředku Application Insights v Azure Portal.

    Zobrazí se skupina prostředků se zvýrazněným prostředkem Application Insights.

  3. V levé nabídce prostředku Application Insights vyberte protokoly z části Monitorování . V podokně Tabulky poklikejte na tabulku trasování umístěnou ve stromu Application Insights . Upravte dotaz tak, aby načítal trasování kontroleru hodnot následujícím způsobem, a pak vyberte Spustit a vyfiltrujte výsledky.

    traces 
    | where operation_Name == "GET Values/Get"
    
  4. Prohlédněte si výsledky zobrazení zpráv protokolování, které jsou přítomné v kontroleru. Závažnost protokolu 2 označuje úroveň upozornění a závažnost protokolu 3 označuje úroveň chyby.

  5. Můžete také zapsat dotaz, který načte výsledky na základě kategorie protokolu. Ve výchozím nastavení je kategorie plně kvalifikovaný název třídy, ve které je vložen ILogger, v tomto případě ValuesController (pokud byl obor názvů přidružený ke třídě, název bude mít předponu oboru názvů). Opětovným zápisem a spuštěním následujícího dotazu načtěte výsledky na základě kategorie.

    traces 
    | where customDimensions.CategoryName == "ValuesController"
    

Řízení úrovně protokolů odesílaných do Application Insights

ILogger implementace mají integrovaný mechanismus pro použití filtrování protokolů. Toto filtrování umožňuje řídit protokoly, které se odesílají jednotlivým registrovaným poskytovatelům, včetně poskytovatele Application Insights. Filtrování můžete použít buď v konfiguraci (pomocí souboru appsettings.json ), nebo v kódu. Další informace o úrovních protokolů a doprovodných materiálech k vhodnému použití najdete v dokumentaci k úrovni protokolu .

Následující příklady ukazují, jak použít pravidla filtru pro ApplicationInsightsLoggerProvider řízení úrovně protokolů odesílaných do Application Insights.

Vytvoření pravidel filtru s konfigurací

Je ApplicationInsightsLoggerProvider aliasován jako ApplicationInsights v konfiguraci. Následující část souboru appsettings.json nastaví výchozí úroveň protokolu pro všechny zprostředkovatele na LogLevel.Warning. Konfigurace pro zprostředkovatele ApplicationInsights speciálně pro kategorie, které začínají hodnotou ValuesController, přepíší tuto výchozí hodnotu na LogLevel.Error a vyšší.

{
  //... additional code removed for brevity
  "Logging": {
    "LogLevel": { // No provider, LogLevel applies to all the enabled providers.
      "Default": "Warning"
    },
    "ApplicationInsights": { // Specific to the provider, LogLevel applies to the Application Insights provider.
      "LogLevel": {
        "ValuesController": "Error" //Log Level for the "ValuesController" category
      }
    }
  }
}

Nasazení ukázkové aplikace s předchozím kódem v souboru appsettings.json vrátí při interakci s ValuesController pouze trasování chyb odesílané do Application Insights. Důvodem je to, že LogLevel pro kategorii ValuesController je nastavena na Chyba, proto je potlačeno trasování upozornění .

Vypnutí protokolování do Application Insights

Pokud chcete protokolování zakázat pomocí konfigurace, nastavte všechny hodnoty LogLevel na None.

{
  //... additional code removed for brevity
  "Logging": {
    "LogLevel": { // No provider, LogLevel applies to all the enabled providers.
      "Default": "None"
    },
    "ApplicationInsights": { // Specific to the provider, LogLevel applies to the Application Insights provider.
      "LogLevel": {
        "ValuesController": "None" //Log Level for the "ValuesController" category
      }
    }
  }
}

Podobně v rámci kódu nastavte výchozí úroveň pro ApplicationInsightsLoggerProvider úrovně protokolu a všechny další úrovně protokolu na None.

var builder = WebApplication.CreateBuilder(args);
builder.Logging.AddFilter<ApplicationInsightsLoggerProvider>("", LogLevel.None);
builder.Logging.AddFilter<Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider>("ValuesController", LogLevel.None);

Opensourcová sada SDK

Nejnovější aktualizace a opravy chyb najdete v poznámkách k verzi.

Další kroky