Włączanie usługi Application Insights dla aplikacji ASP.NET Core
W tym artykule opisano sposób włączania usługi Application Insights dla aplikacji ASP.NET Core wdrożonej jako aplikacja internetowa platformy Azure. Ta implementacja korzysta z podejścia opartego na zestawie SDK. Dostępne jest również podejście autoinstrumentacji .
Usługa Application Insights może zbierać następujące dane telemetryczne z aplikacji ASP.NET Core:
- Żądania
- Zależności
- Wyjątki
- Liczniki wydajności
- Bicie serca
- Dzienniki
W przypadku przykładowej aplikacji użyjemy aplikacji ASP.NET Core MVC przeznaczonej dla net6.0
elementu . Te instrukcje można jednak zastosować do wszystkich aplikacji ASP.NET Core. Jeśli używasz usługi Procesu roboczego, skorzystaj z instrukcji z tego miejsca.
Uwaga
31 marca 2025 r. zostanie zakończone świadczenie pomocy technicznej dla pozyskiwania klucza instrumentacji. Pozyskiwanie klucza instrumentacji będzie nadal działać, ale nie udostępnimy już aktualizacji ani obsługi funkcji. Przejście do parametrów połączenia w celu skorzystania z nowych możliwości.
Obsługiwane scenariusze
Zestaw SDK usługi Application Insights dla ASP.NET Core może monitorować aplikacje bez względu na to, gdzie i jak działają. Jeśli aplikacja jest uruchomiona i ma łączność sieciową z platformą Azure, usługa Application Insights może zbierać z niej dane telemetryczne. Monitorowanie usługi Application Insights jest obsługiwane wszędzie, gdzie jest obsługiwana platforma .NET Core. Obsługiwane są następujące scenariusze:
- System operacyjny: Windows, Linux lub Mac
- Metoda hostingu: w procesie lub poza procesem
- Metoda wdrażania: struktura zależna lub samodzielna
- Serwer sieci Web: Internet Information Server (IIS) lub Kestrel
- Platforma hostingu: funkcja Web Apps Azure App Service, maszyny wirtualnej platformy Azure, platformy Docker, Azure Kubernetes Service (AKS) itd.
- Wersja platformy .NET Core: wszystkie oficjalnie obsługiwane wersje platformy .NET Core , które nie są dostępne w wersji zapoznawczej
- IDE: Visual Studio, Visual Studio Code lub wiersz polecenia
Wymagania wstępne
Do ukończenia tego samouczka niezbędne są następujące elementy:
- Visual Studio 2022
- Następujące obciążenia programu Visual Studio:
- Tworzenie aplikacji na platformie ASP.NET i aplikacji internetowych
- Magazynowanie i przetwarzanie danych
- Tworzenie aplikacji na platformie Azure
- .NET 6.0
- Subskrypcja platformy Azure i konto użytkownika (z możliwością tworzenia i usuwania zasobów)
Wdrażanie zasobów platformy Azure
Postępuj zgodnie ze wskazówkami, aby wdrożyć przykładową aplikację z repozytorium GitHub.
Aby zapewnić globalnie unikatowe nazwy zasobów, sufiks sześcioznaczny jest przypisywany do niektórych zasobów. Zanotuj ten sufiks do użycia w dalszej części tego artykułu.
Tworzenie zasobu usługi Application Insights
W Azure Portal wybierz grupę zasobów application-insights-azure-café.
Z górnego menu paska narzędzi wybierz pozycję + Utwórz.
Na ekranie Tworzenie zasobu wyszukaj i wybierz pozycję Application Insights w polu tekstowym wyszukiwania witryny Marketplace.
Na ekranie Przegląd zasobów usługi Application Insights wybierz pozycję Utwórz.
Na ekranie usługi Application Insights na karcie Podstawy wypełnij formularz przy użyciu poniższej tabeli, a następnie wybierz przycisk Przejrzyj i utwórz . Pola, które nie zostały określone w poniższej tabeli, mogą zachować wartości domyślne.
Pole Wartość Nazwa Wprowadź azure-cafe-application-insights-{SUFFIX}
ciąg , zastępując ciąg {SUFIKS} odpowiednią wartością sufiksu zarejestrowaną wcześniej.Region (Region) Wybierz ten sam region wybrany podczas wdrażania zasobów artykułu. Obszar roboczy usługi Log Analytics Wybierz pozycję azure-café-log-analytics-workspace. Alternatywnie możesz utworzyć nowy obszar roboczy usługi Log Analytics. Po zakończeniu walidacji wybierz pozycję Utwórz , aby wdrożyć zasób.
Po wdrożeniu zasobu wróć do
application-insights-azure-cafe
grupy zasobów i wybierz wdrożony zasób usługi Application Insights.Na ekranie Przegląd zasobu usługi Application Insights wybierz przycisk Kopiuj do schowka, aby skopiować wartość parametry połączenia. Użyjesz wartości parametry połączenia w następnej sekcji tego artykułu.
Konfigurowanie ustawienia aplikacji parametry połączenia usługi Application Insights w App Service internetowej
Wróć do
application-insights-azure-cafe
grupy zasobów i otwórz zasób azure-café-web-{SUFIKS} App Service.W menu po lewej stronie w sekcji Ustawienia wybierz pozycję Konfiguracja. Następnie na karcie Ustawienia aplikacji wybierz pozycję + Nowe ustawienie aplikacji poniżej nagłówka Ustawienia aplikacji.
W okienku Ustawienia dodaj/edytuj aplikację wypełnij formularz w następujący sposób i wybierz przycisk OK.
Pole Wartość Nazwa APPLICATIONINSIGHTS_CONNECTION_STRING Wartość Wklej wartość parametry połączenia usługi Application Insights skopiowaną w poprzedniej sekcji. Na ekranie App Service Konfiguracja wybierz przycisk Zapisz z menu paska narzędzi. Po wyświetleniu monitu o zapisanie zmian wybierz pozycję Kontynuuj.
Instalowanie pakietu NuGet usługi Application Insights
Musimy skonfigurować aplikację internetową ASP.NET Core MVC w celu wysyłania danych telemetrycznych. Jest to realizowane przy użyciu usługi Application Insights dla pakietu NuGet aplikacji internetowych ASP.NET Core.
W programie Visual Studio otwórz plik
1 - Starter Application\src\AzureCafe.sln
.W panelu Eksplorator rozwiązań programu Visual Studio kliknij prawym przyciskiem myszy plik projektu AzureCafe i wybierz pozycję Zarządzaj pakietami NuGet.
Wybierz kartę Przeglądaj , a następnie wyszukaj i wybierz pozycję Microsoft.ApplicationInsights.AspNetCore. Wybierz pozycję Zainstaluj i zaakceptuj postanowienia licencyjne. Zaleca się użycie najnowszej stabilnej wersji. Aby uzyskać pełne informacje o wersji zestawu SDK, zobacz repozytorium GitHub typu open source.
Pozostaw program Visual Studio otwarty dla następnej sekcji artykułu.
Włączanie telemetrii po stronie serwera usługi Application Insights
Usługa Application Insights dla ASP.NET Core aplikacji internetowych pakiet NuGet hermetyzuje funkcje umożliwiające wysyłanie danych telemetrycznych po stronie serwera do zasobu usługi Application Insights na platformie Azure.
W programie Visual Studio Eksplorator rozwiązań otwórz plik Program.cs.
Wstaw następujący kod przed instrukcją
builder.Services.AddControllersWithViews()
. Ten kod automatycznie odczytuje wartość parametry połączenia usługi Application Insights z konfiguracji. MetodaAddApplicationInsightsTelemetry
rejestrujeApplicationInsightsLoggerProvider
element za pomocą wbudowanego kontenera iniekcji zależności, który będzie następnie używany do realizacji żądań implementacji ILogger i ILogger<TCategoryName>.builder.Services.AddApplicationInsightsTelemetry();
Porada
Dowiedz się więcej o opcjach konfiguracji w ASP.NET Core.
Włączanie telemetrii po stronie klienta dla aplikacji internetowych
Powyższe kroki są wystarczające, aby ułatwić rozpoczęcie zbierania danych telemetrycznych po stronie serwera. Przykładowa aplikacja ma składniki po stronie klienta. Wykonaj następne kroki, aby rozpocząć zbieranie danych telemetrycznych użycia.
W programie Visual Studio Eksplorator rozwiązań otwórz plik
\Views\_ViewImports.cshtml
.Dodaj następujący kod na końcu istniejącego pliku.
@inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
Aby prawidłowo włączyć monitorowanie po stronie klienta dla aplikacji, w programie Visual Studio Eksplorator rozwiązań otwórz
\Views\Shared\_Layout.cshtml
i wstaw następujący kod bezpośrednio przed tagiem zamykającym<\head>
. Ten fragment kodu JavaScript musi zostać wstawiony w<head>
sekcji każdej strony aplikacji, którą chcesz monitorować.@Html.Raw(JavaScriptSnippet.FullScript)
Porada
Alternatywą dla użycia
FullScript
jestScriptBody
. Użyj poleceniaScriptBody
, jeśli musisz kontrolować tag,<script>
aby ustawić zasady zabezpieczeń zawartości:<script> // apply custom changes to this script tag. @Html.Raw(JavaScriptSnippet.ScriptBody) </script>
Uwaga
Iniekcja języka JavaScript zapewnia domyślne środowisko konfiguracji. Jeśli potrzebujesz konfiguracji poza ustawieniem parametry połączenia, musisz usunąć automatyczne wstrzykiwanie, zgodnie z powyższym opisem i ręcznie dodać zestaw SDK języka JavaScript.
Włączanie monitorowania zapytań bazy danych
Podczas badania przyczyn obniżenia wydajności ważne jest, aby uwzględnić szczegółowe informacje o wywołaniach bazy danych. Monitorowanie można włączyć, konfigurując moduł zależności. Monitorowanie zależności, w tym SQL, jest domyślnie włączone.
Wykonaj następujące kroki, aby przechwycić pełny tekst zapytania SQL.
Uwaga
Tekst SQL może zawierać poufne dane, takie jak hasła i dane osobowe. Podczas włączania tej funkcji należy zachować ostrożność.
W programie Visual Studio Eksplorator rozwiązań otwórz plik Program.cs.
W górnej części pliku dodaj następującą
using
instrukcję.using Microsoft.ApplicationInsights.DependencyCollector;
Aby włączyć instrumentację tekstu polecenia SQL, wstaw następujący kod bezpośrednio po
builder.Services.AddApplicationInsightsTelemetry()
kodzie.builder.Services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>((module, o) => { module.EnableSqlCommandTextInstrumentation = true; });
Uruchamianie aplikacji internetowej Azure Cafe
Po wdrożeniu kodu aplikacji internetowej dane telemetryczne będą przepływać do usługi Application Insights. Zestaw SDK usługi Application Insights automatycznie zbiera przychodzące żądania internetowe do aplikacji.
W programie Visual Studio Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt AzureCafe i wybierz polecenie Publikuj z menu kontekstowego.
Wybierz pozycję Publikuj, aby podwyższyć poziom nowego kodu do Azure App Service.
Po pomyślnym opublikowaniu aplikacji internetowej Azure Cafe zostanie otwarte nowe okno przeglądarki dla aplikacji internetowej Azure Cafe.
Aby wygenerować dane telemetryczne, wykonaj następujące kroki w aplikacji internetowej, aby dodać recenzję.
Aby wyświetlić menu i recenzje kawiarni, wybierz pozycję Szczegóły obok kawiarni.
Aby wyświetlić i dodać recenzje, na ekranie Cafe wybierz kartę Recenzje . Wybierz przycisk Dodaj recenzję , aby dodać recenzję.
W oknie dialogowym Tworzenie przeglądu wprowadź nazwę, ocenę, komentarze i przekaż zdjęcie do przeglądu. Po zakończeniu wybierz pozycję Dodaj recenzję.
Jeśli musisz wygenerować dodatkowe dane telemetryczne, dodaj dodatkowe przeglądy.
Metryki na żywo
Możesz użyć metryk na żywo , aby szybko sprawdzić, czy monitorowanie usługi Application Insights jest poprawnie skonfigurowane. Metryki na żywo pokazują użycie procesora CPU uruchomionego procesu niemal w czasie rzeczywistym. Może również wyświetlać inne dane telemetryczne, takie jak żądania, zależności i ślady. Pamiętaj, że wyświetlenie danych telemetrycznych w portalu i analizie może potrwać kilka minut.
Wyświetlanie mapy aplikacji
Przykładowa aplikacja wykonuje wywołania do wielu zasobów platformy Azure, w tym Azure SQL, Azure Blob Storage i Azure Language Service (aby zapoznać się z analizą tonacji).
Usługa Application Insights introspects przychodzących danych telemetrycznych i może wygenerować wizualną mapę integracji systemu, które wykrywa.
Zaloguj się w witrynie Azure Portal.
Otwórz grupę zasobów dla przykładowej aplikacji, czyli
application-insights-azure-cafe
.Z listy zasobów wybierz
azure-cafe-insights-{SUFFIX}
zasób usługi Application Insights.W menu po lewej stronie pod nagłówkiem Zbadaj wybierz pozycję Mapa aplikacji. Obserwuj wygenerowaną mapę aplikacji.
Wyświetlanie wywołań HTTP i tekstu polecenia SQL bazy danych
W Azure Portal otwórz zasób usługi Application Insights.
W menu po lewej stronie pod nagłówkem Zbadaj wybierz pozycję Wydajność.
Karta Operacje zawiera szczegóły wywołań HTTP odebranych przez aplikację. Aby przełączać się między widokami serwera i przeglądarki (po stronie klienta) danych, użyj przełącznika Serwer/Przeglądarka.
Wybierz operację z tabeli, a następnie przejdź do przykładu żądania.
Transakcja kompleksowa jest wyświetlana dla wybranego żądania. W tym przypadku utworzono przegląd, w tym obraz, więc obejmuje wywołania usługi Azure Storage i usługi językowej (na potrzeby analizy tonacji). Obejmuje również wywołania bazy danych do Usługi SQL Azure w celu utrwalania przeglądu. W tym przykładzie pierwsze wybrane zdarzenie wyświetla informacje względem wywołania HTTP POST.
Wybierz element SQL, aby przejrzeć tekst polecenia SQL wystawiony dla bazy danych.
Opcjonalnie wybierz żądania zależności (wychodzące) do usługi Azure Storage lub usługi językowej.
Wróć do ekranu Wydajność i wybierz kartę Zależności , aby zbadać wywołania zasobów zewnętrznych. Zwróć uwagę, że tabela Operacje zawiera wywołania analizy tonacji, usługi Blob Storage i Azure SQL.
Rejestrowanie aplikacji za pomocą usługi Application Insights
Omówienie rejestrowania
Usługa Application Insights to jeden z typów dostawców rejestrowania dostępnych dla ASP.NET Core aplikacji, które stają się dostępne dla aplikacji po zainstalowaniu pakietu NuGet usługi Application Insights dla ASP.NET Core i włączeniu zbierania danych telemetrycznych po stronie serwera.
Przypominamy, że poniższy kod w pliku Program.cs rejestruje ApplicationInsightsLoggerProvider
element za pomocą wbudowanego kontenera wstrzykiwania zależności.
builder.Services.AddApplicationInsightsTelemetry();
Po zarejestrowaniu ApplicationInsightsLoggerProvider
jako dostawca rejestrowania aplikacja jest gotowa do logowania się do usługi Application Insights przy użyciu iniekcji konstruktora z ILogger alternatywnym typem ogólnym lub .ILogger<TCategoryName>
Uwaga
Domyślnie dostawca rejestrowania jest skonfigurowany do automatycznego przechwytywania zdarzeń dziennika o ważności lub większej LogLevel.Warning .
Rozważmy następujący przykładowy kontroler. Demonstruje iniekcję ILogger, który jest rozpoznawany za pomocą zarejestrowanego ApplicationInsightsLoggerProvider
w kontenerze wstrzykiwania zależności. Zwróć uwagę na to, że w metodzie Get są rejestrowane komunikaty informacyjne, ostrzegawcze i komunikat o błędzie.
Uwaga
Domyślnie dane śledzenia na poziomie informacji nie będą rejestrowane. Przechwytywane są tylko poziomy Ostrzeżenie i wyższe.
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" };
}
}
Aby uzyskać więcej informacji, zobacz Rejestrowanie w ASP.NET Core.
Wyświetlanie dzienników w usłudze Application Insights
Powyższy element ValuesController jest wdrażany z przykładową aplikacją i znajduje się w folderze Controllers projektu.
Za pomocą przeglądarki internetowej otwórz przykładową aplikację. Na pasku adresu dołącz
/api/Values
i naciśnij klawisz Enter.W Azure Portal zaczekaj chwilę, a następnie wybierz zasób usługi Application Insights azure-café-insights-{SUFIKS}.
W menu po lewej stronie zasobu usługi Application Insights w sekcji Monitorowanie wybierz pozycję Dzienniki.
W okienku Tabele w drzewie usługi Application Insights kliknij dwukrotnie tabelę śledzenia .
Zmodyfikuj zapytanie, aby pobrać ślady kontrolera wartości w następujący sposób, a następnie wybierz pozycję Uruchom , aby przefiltrować wyniki.
traces | where operation_Name == "GET Values/Get"
Wyniki wyświetlają komunikaty rejestrowania obecne w kontrolerze. Ważność dziennika 2 oznacza poziom ostrzeżenia, a ważność dziennika 3 oznacza poziom Błędu.
Alternatywnie możesz również napisać zapytanie w celu pobrania wyników na podstawie kategorii dziennika. Domyślnie kategoria jest w pełni kwalifikowaną nazwą klasy, w której wstrzykiwany jest ILogger. W takim przypadku nazwa kategorii to ValuesController (jeśli istnieje przestrzeń nazw skojarzona z klasą, nazwa zostanie poprzedzona przestrzenią nazw). Ponownie zapisz i uruchom następujące zapytanie, aby pobrać wyniki na podstawie kategorii.
traces | where customDimensions.CategoryName == "ValuesController"
Kontrolowanie poziomu dzienników wysyłanych do usługi Application Insights
ILogger
Implementacje mają wbudowany mechanizm stosowania filtrowania dzienników. To filtrowanie umożliwia kontrolowanie dzienników wysyłanych do każdego zarejestrowanego dostawcy, w tym dostawcy usługi Application Insights. Filtrowanie można użyć w konfiguracji (przy użyciu pliku appsettings.json ) lub w kodzie. Aby uzyskać więcej informacji na temat poziomów dzienników i wskazówek dotyczących odpowiedniego używania ich, zobacz dokumentację poziomu dziennika .
W poniższych przykładach pokazano, jak zastosować reguły filtrowania do ApplicationInsightsLoggerProvider
elementu , aby kontrolować poziom dzienników wysyłanych do usługi Application Insights.
Tworzenie reguł filtrowania z konfiguracją
Element ApplicationInsightsLoggerProvider
jest aliasowany jako ApplicationInsights w konfiguracji. W poniższej sekcji pliku appsettings.json ustawiono domyślny poziom dziennika dla wszystkich dostawców na LogLevel.Warningwartość . Konfiguracja dostawcy ApplicationInsights, w szczególności dla kategorii rozpoczynających się od "ValuesController", zastępuje tę wartość domyślną wartością LogLevel.Error i większą.
{
//... 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
}
}
}
}
Wdrożenie przykładowej aplikacji z poprzednim kodem w pliku appsettings.json spowoduje wysłanie tylko śledzenia błędów do usługi Application Insights podczas interakcji z elementem ValuesController. Jest to spowodowane tym, że wartość LogLevel dla kategorii ValuesController jest ustawiona na Wartość Błąd. W związku z tym ślad ostrzegawczy jest pomijany.
Wyłączanie rejestrowania w usłudze Application Insights
Aby wyłączyć rejestrowanie przy użyciu konfiguracji, ustaw wszystkie wartości LogLevel na wartość "Brak".
{
//... 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
}
}
}
}
Podobnie w kodzie ustaw domyślny poziom dla ApplicationInsightsLoggerProvider
wszystkich kolejnych poziomów dziennika na Wartość Brak.
var builder = WebApplication.CreateBuilder(args);
builder.Logging.AddFilter<ApplicationInsightsLoggerProvider>("", LogLevel.None);
builder.Logging.AddFilter<Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider>("ValuesController", LogLevel.None);
Zestaw SDK typu open source
Najnowsze aktualizacje i poprawki błędów można znaleźć w informacjach o wersji.
Następne kroki
- Poznaj przepływy użytkowników , aby dowiedzieć się, jak użytkownicy nawigują po aplikacji.
- Skonfiguruj kolekcję migawek , aby zobaczyć stan kodu źródłowego i zmiennych w momencie zgłoszenia wyjątku.
- Użyj interfejsu API , aby wysyłać własne zdarzenia i metryki w celu uzyskania szczegółowego widoku wydajności i użycia aplikacji.
- Omówienie dostępności
- Wstrzykiwanie zależności na platformie ASP.NET Core
- Logowanie w usłudze ASP.NET Core
- Dzienniki śledzenia platformy .NET w usłudze Application Insights
- Autoinstrumentacja dla usługi Application Insights