Povolení Application Insights pro ASP.NET Core aplikace

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

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

  • Žádosti
  • Závislosti
  • Výjimky
  • Čítače výkonu
  • Prezentní signály
  • Protokoly

Pro ukázkovou aplikaci použijeme aplikaci ASP.NET Core MVC, která cílí na net6.0. Tyto pokyny však můžete použít pro všechny aplikace ASP.NET Core. Pokud používáte službu pracovního procesu, 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 instrumentačního klíče bude dál fungovat, ale pro tuto funkci už nebudeme poskytovat aktualizace ani podporu. Přechod na připojovací řetězce , abyste mohli využívat nové možnosti.

Podporované scénáře

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

  • Operační systém: Windows, Linux nebo Mac
  • Metoda hostování: V procesu nebo mimo proces
  • Metoda nasazení: Závislá na architektuře nebo samostatná
  • Webový server: Internet Information Server (IIS) nebo Kestrel
  • Hostingová platforma: 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

Pro absolvování tohoto kurzu potřebujete:

  • Visual Studio 2022
  • Následující úlohy sady Visual Studio:
    • Vývoj pro ASP.NET a web
    • Ukládání a zpracování dat
    • Vývoj pro 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

Postupujte podle pokynů a nasaďte ukázkovou aplikaci z jejího úložiště GitHub.

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

Snímek obrazovky s výpisem nasazených prostředků Azure v Azure Portal se zvýrazněnou šestiznakovou příponou

Vytvořte prostředek Application Insights

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

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

    Snímek obrazovky se skupinou prostředků application-insights-azure-café v Azure Portal 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.

    Snímek obrazovky Vytvořit prostředek v Azure Portal

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

    Snímek obrazovky s přehledem Application Insights v Azure Portal se zvýrazněným tlačítkem Vytvořit

  5. Na obrazovce Application Insights na kartě Základy vyplňte formulář pomocí následující tabulky a pak vyberte tlačítko Zkontrolovat a vytvořit . Pole nezadaná v následující tabulce si můžou zachovat výchozí hodnoty.

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

    Snímek obrazovky Application Insights na kartě Základy v Azure Portal s formulářem vyplněným předchozími hodnotami

  6. Po ověření vyberte Vytvořit a nasaďte prostředek.

    Snímek obrazovky Application Insights v Azure Portal Zpráva oznamující, že ověření proběhlo úspěšně, a tlačítko Vytvořit jsou zvýrazněné.

  7. Po nasazení prostředku se vraťte do application-insights-azure-cafe skupiny prostředků a vyberte prostředek Application Insights, který jste nasadili.

    Snímek obrazovky se skupinou prostředků application-insights-azure-café v Azure Portal se zvýrazněným prostředkem Application Insights

  8. Na obrazovce Přehled prostředku Application Insights vyberte tlačítko Kopírovat do schránky a zkopírujte hodnotu připojovací řetězec. Hodnotu připojovací řetězec použijete v další části tohoto článku.

    Snímek obrazovky Přehled Application Insights v Azure Portal

Konfigurace nastavení aplikace Application Insights připojovací řetězec ve webovém App Service

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

    Snímek obrazovky se skupinou prostředků application-insights-azure-café v Azure Portal se zvýrazněným prostředkem azure-café-web-{SUFFIX}

  2. V nabídce vlevo v části Nastavení vyberte Konfigurace. Pak na kartě Nastavení aplikace vyberte + Nové nastavení aplikace pod záhlavím Nastavení aplikace.

    Snímek obrazovky App Service prostředku v Azure Portal

  3. V podokně 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 hodnotu application Insights připojovací řetězec, kterou jste zkopírovali v předchozí části.

    Snímek obrazovky s podoknem nastavení přidat nebo upravit aplikaci v Azure Portal s předchozími hodnotami vyplněnými v polích Název a Hodnota

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

    Snímek obrazovky konfigurace App Service v Azure Portal se zvýrazněným tlačítkem Uložit v nabídce panelu nástrojů

Instalace balíčku NuGet pro Application Insights

Potřebujeme nakonfigurovat webovou aplikaci ASP.NET Core MVC tak, aby odesílala telemetrii. K tomu slouží balíček NuGet Application Insights pro ASP.NET Core webové aplikace.

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

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

    Snímek obrazovky sady Visual Studio Průzkumník řešení s vybraným projektem Azure Cafe a zvýrazněnou položkou místní nabídky Spravovat balíčky NuGet

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

    Snímek obrazovky s uživatelským rozhraním Správce balíčků NuGet v sadě Visual Studio

    Nechte sadu Visual Studio otevřenou pro další část článku.

Povolení telemetrie Application Insights na straně serveru

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

  1. V Průzkumník řešení sady Visual Studio otevřete soubor Program.cs.

    Snímek obrazovky se sadou Visual Studio Průzkumník řešení se zvýrazněným souborem Program.cs

  2. Před builder.Services.AddControllersWithViews() příkaz vložte následující kód. Tento kód automaticky načte hodnotu připojovací řetězec Application Insights z konfigurace. Metoda AddApplicationInsightsTelemetry registruje ApplicationInsightsLoggerProvider s integrovaným kontejnerem injektáže závislostí, který se pak použije ke splnění požadavků na implementaci ILogger a ILogger<TCategoryName> .

    builder.Services.AddApplicationInsightsTelemetry();
    

    Snímek obrazovky s oknem kódu v sadě Visual Studio se zvýrazněným předchozím fragmentem kódu

Povolení telemetrie na straně klienta pro webové aplikace

Předchozí kroky vám pomůžou začít shromažďovat telemetrii na straně serveru. Ukázková aplikace obsahuje komponenty na straně klienta. Postupujte podle dalších kroků a začněte shromažďovat telemetrii využití.

  1. V sadě Visual Studio Průzkumník řešení otevřete \Views\_ViewImports.cshtml.

  2. Na konec existujícího souboru přidejte následující kód.

    @inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
    

    Snímek obrazovky se souborem _ViewImports.cshtml v sadě Visual Studio se zvýrazněným předchozím řádkem kódu

  3. Pokud chcete pro svou aplikaci správně povolit monitorování na straně klienta, otevřete \Views\Shared\_Layout.cshtml v sadě Visual Studio Průzkumník řešení následující kód a vložte ho těsně před uzavírací <\head> značku. Tento fragment kódu JavaScriptu musí být vložen do oddílu <head> každé stránky aplikace, kterou chcete monitorovat.

    @Html.Raw(JavaScriptSnippet.FullScript)
    

    Snímek obrazovky se souborem _Layout.cshtml v sadě Visual Studio se zvýrazněným předchozím řádkem kódu v hlavní části souboru

    Tip

    Alternativou k použití FullScript je ScriptBody. 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 vyžadujete konfiguraci nad rámec nastavení připojovací řetězec, 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ích databáze. Monitorování povolíte konfigurací modulu závislostí. Monitorování závislostí, včetně SQL, je ve výchozím nastavení povolené.

Pokud chcete zachytit celý text dotazu SQL, postupujte podle těchto 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 Průzkumník řešení sady Visual Studio otevřete soubor Program.cs.

  2. Na začátek souboru přidejte následující using příkaz.

    using Microsoft.ApplicationInsights.DependencyCollector;
    
  3. Pokud chcete povolit instrumentaci textu příkazu SQL, vložte následující kód hned za builder.Services.AddApplicationInsightsTelemetry() kód.

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

    Snímek obrazovky s oknem kódu v sadě Visual Studio se zvýrazněným předchozím kódem

Spuštění webové aplikace Azure Cafe

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

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

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

  2. Vyberte Publikovat, aby se nový kód povýšil na Azure App Service.

    Snímek obrazovky s profilem publikování AzureCafe se zvýrazněným tlačítkem Publish (Publikovat)

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

    Snímek obrazovky webové aplikace Azure Cafe

  3. Pokud chcete vygenerovat telemetrii, postupujte podle těchto kroků ve webové aplikaci a přidejte recenzi.

    1. Pokud chcete zobrazit nabídku a recenze kavárny, vyberte Podrobnosti vedle kavárny.

      Snímek obrazovky části seznamu Azure Cafe ve webové aplikaci Azure Cafe se zvýrazněným tlačítkem Podrobnosti

    2. Pokud chcete zobrazit a přidat recenze, vyberte na obrazovce Cafe kartu Recenze . Výběrem tlačítka Přidat recenzi přidejte recenzi.

      Snímek obrazovky s podrobnostmi o kavárně ve webové aplikaci Azure Cafe 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 ke kontrole. Až budete hotovi, vyberte Přidat recenzi.

      Snímek obrazovky s dialogovým oknem Vytvořit recenzi ve webové aplikaci Azure Cafe

    4. Pokud potřebujete vygenerovat další telemetrii, přidejte další kontroly.

Živé metriky

Live Metrics můžete použít k rychlému ověření, jestli je monitorování Application Insights správně nakonfigurované. Live Metrics zobrazuje využití procesoru spuštěným procesem téměř v reálném čase. Může také zobrazovat další telemetrická data, jako jsou požadavky, závislosti a trasování. Upozorňujeme, že může trvat několik minut, než se telemetrie zobrazí na portálu a v analýzách.

Zobrazení mapy aplikace

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

Diagram znázorňující architekturu ukázkové webové aplikace Azure Cafe

Application Insights introspektuje příchozí telemetrická data a dokáže vygenerovat vizuální mapu systémových integrací, které detekuje.

  1. Přihlaste se k webu Azure Portal.

  2. Otevřete skupinu prostředků pro ukázkovou aplikaci, což je application-insights-azure-cafe.

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

  4. V nabídce vlevo pod nadpisem Prozkoumat vyberte Mapa aplikace. Prohlédněte si vygenerovanou mapu aplikace.

    Snímek obrazovky s mapou aplikace Application Insights v Azure Portal

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

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

  2. V nabídce vlevo pod záhlavím Prozkoumat vyberte Výkon.

  3. Karta Operace obsahuje podrobnosti o voláních HTTP přijatých aplikací. Pokud chcete přepínat mezi zobrazením dat na straně serveru a prohlížeče (na straně klienta), použijte přepínač Server/Prohlížeč.

    Snímek obrazovky Výkon v Azure Portal

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

    Snímek obrazovky Výkon Application Insights na Azure Portal se uvedenými operacemi a ukázkovými operacemi

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

    Snímek obrazovky s kompletní transakcí v Azure Portal s vybraným voláním HTTP Post

  5. Výběrem položky SQL zkontrolujte text příkazu SQL vydaný do databáze.

    Snímek obrazovky s kompletní transakcí v Azure Portal s podrobnostmi o příkazu SQL

  6. Volitelně můžete vybrat požadavky závislostí (odchozích) na Azure Storage nebo jazykovou službu.

  7. Vraťte se na obrazovku Výkon a výběrem karty Závislosti 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.

    Snímek obrazovky Výkon Application Insights v Azure Portal s vybranou kartou Závislosti a zvýrazněnou tabulkou Operations

Protokolování aplikací pomocí Application Insights

Přehled protokolování

Application Insights je jeden typ zprostředkovatele protokolování, který je k dispozici pro ASP.NET Core aplikacím, když je nainstalovaný balíček Application Insights pro ASP.NET Core NuGet a povolí se shromažďování telemetrických dat na straně serveru.

Připomínáme, že následující kód v souboru Program.cs registruje ApplicationInsightsLoggerProvider objekt s integrovaným kontejnerem injektáže závislostí.

builder.Services.AddApplicationInsightsTelemetry();

Když je ApplicationInsightsLoggerProvider aplikace zaregistrovaná jako poskytovatel protokolování, je připravená přihlásit se k Application Insights pomocí injektáže konstruktoru s ILogger nebo alternativního ILogger<TCategoryName>typu obecného typu .

Poznámka

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

Podívejte se na následující příklad kontroleru. Ukazuje injektáž ILoggeru, která je vyřešena s objektem ApplicationInsightsLoggerProvider , který je zaregistrovaný v kontejneru injektáže závislostí. Všimněte si, že v metodě Get jsou zaznamenány informační, upozornění a chybová zpráva.

Poznámka

Ve výchozím nastavení se trasování úrovně informací nezaznamená. Zachytávají se jenom úrovně Upozornění a výše.

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.LogInformation("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

ValuesController výše je nasazen s ukázkovou aplikací a je umístěn 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.

    Snímek obrazovky s oknem prohlížeče s /api/Values připojeným k adrese URL na panelu Adresa

  2. V Azure Portal chvíli počkejte a pak vyberte prostředek azure-café-insights-{SUFFIX} Application Insights.

    Snímek obrazovky se skupinou prostředků application-insights-azure-café v Azure Portal se zvýrazněným prostředkem Application Insights

  3. V levé nabídce prostředku Application Insights v části Monitorování vyberte Protokoly.

  4. V podokně Tabulky ve stromu Application Insights poklikejte na tabulku trasování .

  5. Následujícím způsobem upravte dotaz tak, aby načítal trasování kontroleru Hodnot , a pak vyberte Spustit a vyfiltrujte výsledky.

    traces 
    | where operation_Name == "GET Values/Get"
    

    Výsledky zobrazí zprávy 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.

  6. Případně můžete také napsat dotaz, který načte výsledky na základě kategorie protokolu. Ve výchozím nastavení je kategorie plně kvalifikovaný název třídy, do které je vložen ILogger. V tomto případě je název kategorie ValuesController (pokud je k třídě přidružený obor názvů, bude název mít předponu s oborem názvů). Znovu zapište a spusťte následující dotaz, který nač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 zprostředkovatelům, včetně zprostředkovatele 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 pokyny, jak je správně používat, 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í

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

{
  //... 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 způsobí, že při interakci s ValuesController se do Application Insights odešle pouze trasování chyb. Důvodem je, že logLevel pro kategorii ValuesController je nastavena na Error. Proto je trasování upozornění potlačeno.

Vypnutí protokolování do Application Insights

Pokud chcete protokolování zakázat pomocí konfigurace, nastavte všechny hodnoty LogLevel na Hodnotu 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 kódu nastavte výchozí úroveň pro ApplicationInsightsLoggerProvider úroveň 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