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
K dispozici je nabídka .NET založená na OpenTelemetry . Další informace.
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.
Vytvořte prostředek Application Insights
V Azure Portal vyberte skupinu prostředků application-insights-azure-café.
V horní nabídce panelu nástrojů vyberte + Vytvořit.
Na obrazovce Vytvořit prostředek vyhledejte a vyberte Application Insights v textovém poli hledání na marketplace.
Na obrazovce Přehled prostředků Application Insights vyberte Vytvořit.
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. Po ověření vyberte Vytvořit a nasaďte prostředek.
Po nasazení prostředku se vraťte do
application-insights-azure-cafe
skupiny prostředků a vyberte prostředek Application Insights, který jste nasadili.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.
Konfigurace nastavení aplikace Application Insights připojovací řetězec ve webovém App Service
Vraťte se
application-insights-azure-cafe
do skupiny prostředků a otevřete prostředek azure-café-web-{SUFFIX} App Service.V nabídce vlevo v části Nastavení vyberte Konfigurace. Pak na kartě Nastavení aplikace vyberte + Nové nastavení aplikace pod záhlavím Nastavení aplikace.
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. 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.
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.
V sadě Visual Studio otevřete
1 - Starter Application\src\AzureCafe.sln
.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.
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.
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.
V Průzkumník řešení sady Visual Studio otevřete soubor Program.cs.
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. MetodaAddApplicationInsightsTelemetry
registrujeApplicationInsightsLoggerProvider
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();
Tip
Další informace o možnostech konfigurace najdete v ASP.NET Core.
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í.
V sadě Visual Studio Průzkumník řešení otevřete
\Views\_ViewImports.cshtml
.Na konec existujícího souboru přidejte následující kód.
@inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
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)
Tip
Alternativou k použití
FullScript
jeScriptBody
. PoužijteScriptBody
, 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í.
V Průzkumník řešení sady Visual Studio otevřete soubor Program.cs.
Na začátek souboru přidejte následující
using
příkaz.using Microsoft.ApplicationInsights.DependencyCollector;
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; });
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.
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.
Vyberte Publikovat, aby se nový kód povýšil na Azure App Service.
Po úspěšném publikování webové aplikace Azure Cafe se pro webovou aplikaci Azure Cafe otevře nové okno prohlížeče.
Pokud chcete vygenerovat telemetrii, postupujte podle těchto kroků ve webové aplikaci a přidejte recenzi.
Pokud chcete zobrazit nabídku a recenze kavárny, vyberte Podrobnosti vedle kavárny.
Pokud chcete zobrazit a přidat recenze, vyberte na obrazovce Cafe kartu Recenze . Výběrem tlačítka Přidat recenzi přidejte recenzi.
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.
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í).
Application Insights introspektuje příchozí telemetrická data a dokáže vygenerovat vizuální mapu systémových integrací, které detekuje.
Přihlaste se k webu Azure Portal.
Otevřete skupinu prostředků pro ukázkovou aplikaci, což je
application-insights-azure-cafe
.V seznamu prostředků vyberte
azure-cafe-insights-{SUFFIX}
prostředek Application Insights.V nabídce vlevo pod nadpisem Prozkoumat vyberte Mapa aplikace. Prohlédněte si vygenerovanou mapu aplikace.
Zobrazení volání HTTP a textu příkazu SQL databáze
V Azure Portal otevřete prostředek Application Insights.
V nabídce vlevo pod záhlavím Prozkoumat vyberte Výkon.
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č.
V tabulce vyberte operaci a zvolte, že chcete přejít k podrobnostem ukázky požadavku.
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.
Výběrem položky SQL zkontrolujte text příkazu SQL vydaný do databáze.
Volitelně můžete vybrat požadavky závislostí (odchozích) na Azure Storage nebo jazykovou službu.
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.
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.
V internetovém prohlížeči otevřete ukázkovou aplikaci. Na panelu Adresa připojte
/api/Values
a stiskněte Enter.V Azure Portal chvíli počkejte a pak vyberte prostředek azure-café-insights-{SUFFIX} Application Insights.
V levé nabídce prostředku Application Insights v části Monitorování vyberte Protokoly.
V podokně Tabulky ve stromu Application Insights poklikejte na tabulku trasování .
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.
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
- Prozkoumejte toky uživatelů , abyste pochopili, jak uživatelé procházejí vaší aplikací.
- Nakonfigurujte kolekci snímků, abyste viděli stav zdrojového kódu a proměnných v okamžiku vyvolání výjimky.
- Pomocí rozhraní API můžete odesílat vlastní události a metriky pro podrobné zobrazení výkonu a využití vaší aplikace.
- Přehled dostupnosti
- Injektáž závislostí v ASP.NET Core
- Přihlášení ASP.NET Core
- Protokoly trasování .NET v Application Insights
- Autoinstrumentace pro Application Insights