Udostępnij za pośrednictwem


Włączanie monitorowania aplikacji w usłudze aplikacja systemu Azure dla aplikacji .NET, Node.js, Python i Java

Autoinstrumentacja, nazywana również monitorowaniem środowiska uruchomieniowego, jest najprostszym sposobem na włączenie usługi Application Insights dla usługi Azure App Service, bez konieczności wprowadzania jakichkolwiek zmian w kodzie ani zaawansowanych konfiguracji. Na podstawie konkretnego scenariusza oceń, czy potrzebujesz bardziej zaawansowanego monitorowania za pomocą instrumentacji ręcznej.

Uwaga

31 marca 2025 r. zakończy się wsparcie dla mechanizmu pobierania klucza instrumentacji. Pozyskiwanie klucza instrumentacji będzie nadal działać, ale nie udostępnimy już aktualizacji ani obsługi funkcji. Przejście do parametry połączenia w celu skorzystania z nowych funkcji.

Włącz usługę Application Insights

Ważne

W przypadku wykrycia zarówno monitorowania automatycznej instrumentacji, jak i ręcznej instrumentacji opartej na zestawie SDK, zostaną uznane tylko ustawienia instrumentacji ręcznej. To rozwiązanie uniemożliwia wysyłanie zduplikowanych danych. Aby dowiedzieć się więcej, zobacz Rozwiązywanie problemów.

Uwaga

Autoinstrumentacja w witrynie Azure Portal

  1. Wybierz pozycję Application Insights w menu nawigacji po lewej stronie usługi app Service, a następnie wybierz pozycję Włącz.

     Zrzut ekranu przedstawiający kartę Application Insights z wybraną funkcją Włącz.

  2. Utwórz nowy zasób lub wybierz istniejący zasób usługi Application Insights dla tej aplikacji.

    Uwaga

    Po wybraniu przycisku OK w celu utworzenia nowego zasobu zostanie wyświetlony monit o zastosowanie ustawień monitorowania. Wybranie pozycji Kontynuuj łączy nowy zasób usługi Application Insights z usługą aplikacji. Następnie usługa aplikacji zostanie ponownie uruchomiona.

    Zrzut ekranu pokazujący listę rozwijaną

  3. Po określeniu, który zasób ma być używany, możesz zdecydować, w jaki sposób Application Insights ma zbierać dane dla Twojej aplikacji na każdej platformie. Opcje kolekcji ASP.NET Core są zalecane lub wyłączone.

     Zrzut ekranu przedstawiający sekcję instrumentacji twojej aplikacji.

Ręczne uaktualnianie rozszerzenia monitorowania/agenta

Uaktualnianie z wersji 2.8.9 i nowszych

Uaktualnienie z wersji 2.8.9 odbywa się automatycznie bez żadnych dodatkowych akcji. Nowe bity monitorowania są dostarczane w tle do docelowej usługi aplikacji i są pobierane po ponownym uruchomieniu aplikacji.

Aby sprawdzić, która wersja rozszerzenia jest uruchomiona, przejdź do https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

Zrzut ekranu przedstawiający ścieżkę adresu URL, aby sprawdzić wersję uruchomionego rozszerzenia.

Uaktualnianie z wersji 1.0.0 — 2.6.5

Począwszy od wersji 2.8.9, używane jest wstępnie zainstalowane rozszerzenie witryny. Jeśli używasz starszej wersji, możesz zaktualizować za pomocą jednego z dwóch sposobów:

Jeśli uaktualnienie zostanie wykonane z wersji wcześniejszej niż 2.5.1, sprawdź, czy ApplicationInsights biblioteki DLL są usuwane z folderu bin aplikacji. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów.

Konfigurowanie rozszerzenia monitorowania/agenta

Obecnie nie oferujemy opcji konfigurowania rozszerzenia monitorowania dla platformy ASP.NET Core.

Włączanie monitorowania po stronie klienta

Monitorowanie po stronie klienta jest domyślnie włączone dla aplikacji ASP.NET Core z zalecaną kolekcją, niezależnie od tego, czy ustawienie APPINSIGHTS_JAVASCRIPT_ENABLED aplikacji jest obecne.

Jeśli chcesz wyłączyć monitorowanie po stronie klienta:

  1. Wybierz pozycję Ustawienia>Konfiguracja.

  2. W obszarze Ustawienia aplikacji utwórz Nowe ustawienie aplikacji z następującymi informacjami:

    • Nazwa: APPINSIGHTS_JAVASCRIPT_ENABLED
    • Wartość: false
  3. Zapisz ustawienia. Uruchom ponownie aplikację.

Automatyzowanie monitorowania

Aby włączyć zbieranie danych telemetrycznych za pomocą usługi Application Insights, należy ustawić tylko następujące ustawienia aplikacji:

Zrzut ekranu przedstawiający ustawienia aplikacji usługi App Service z ustawieniami usługi Application Insights.

Definicje ustawień aplikacji

Nazwa ustawienia aplikacji Definicja Wartość
ApplicationInsightsAgent_EXTENSION_VERSION Główne rozszerzenie, które kontroluje monitorowanie środowiska uruchomieniowego. ~2 dla systemu Windows lub ~3 dla systemu Linux
XDT_MicrosoftApplicationInsights_Mode W trybie domyślnym są włączone tylko podstawowe funkcje, aby zapewnić optymalną wydajność. disabled lub recommended.
XDT_MicrosoftApplicationInsights_PreemptSdk Tylko w przypadku aplikacji ASP.NET Core. Umożliwia współdziałanie z zestawem SDK Application Insights. Ładuje rozszerzenie obok zestawu SDK i używa go do wysyłania danych telemetrycznych. (Wyłącza zestaw SDK usługi Application Insights). 1

Ustawienia aplikacji usługi App Service w ramach Azure Resource Manager

Ustawieniami aplikacji dla Azure App Service można zarządzać i konfigurować je przy użyciu szablonów Azure Resource Manager. Tej metody można użyć podczas wdrażania nowych zasobów usługi App Service za pomocą automatyzacji usługi Resource Manager lub modyfikowania ustawień istniejących zasobów.

Podstawowa struktura pliku JSON ustawień aplikacji dla zasobu usługi App Service:

      "resources": [
        {
          "name": "appsettings",
          "type": "config",
          "apiVersion": "2015-08-01",
          "dependsOn": [
            "[resourceId('Microsoft.Web/sites', variables('webSiteName'))]"
          ],
          "tags": {
            "displayName": "Application Insights Settings"
          },
          "properties": {
            "key1": "value1",
            "key2": "value2"
          }
        }
      ]

Aby utworzyć szablon usługi Resource Manager z domyślnymi ustawieniami usługi Application Insights, rozpocznij proces tak, jakby utworzysz nową aplikację internetową z włączoną usługą Application Insights.

  1. Utwórz nowy zasób usługi App Service z żądanymi informacjami o aplikacji internetowej. Włącz usługę Application Insights na karcie Monitorowanie .

  2. Wybierz pozycję Przejrzyj i utwórz. Następnie wybierz pozycję Pobierz szablon do automatyzacji.

    Zrzut ekranu przedstawiający menu tworzenia aplikacji internetowej usługi App Service.

    Ta opcja generuje najnowszy szablon usługi Resource Manager ze skonfigurowanymi wszystkimi wymaganymi ustawieniami.

    Zrzut ekranu przedstawiający szablon aplikacji internetowej usługi App Service.

W poniższym przykładzie zastąp wszystkie wystąpienia AppMonitoredSite nazwą swojej witryny.

Uwaga

Jeśli korzystasz z systemu Windows, ustaw ApplicationInsightsAgent_EXTENSION_VERSION na ~2. W przypadku korzystania z systemu Linux ustaw ApplicationInsightsAgent_EXTENSION_VERSION na ~3.

{
    "resources": [
        {
            "name": "[parameters('name')]",
            "type": "Microsoft.Web/sites",
            "properties": {
                "siteConfig": {
                    "appSettings": [
                        {
                            "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
                            "value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').InstrumentationKey]"
                        },
                        {
                            "name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
                            "value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').ConnectionString]"
                        },
                        {
                            "name": "ApplicationInsightsAgent_EXTENSION_VERSION",
                            "value": "~2"
                        }
                    ]
                },
                "name": "[parameters('name')]",
                "serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "hostingEnvironment": "[parameters('hostingEnvironment')]"
            },
            "dependsOn": [
                "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "microsoft.insights/components/AppMonitoredSite"
            ],
            "apiVersion": "2016-03-01",
            "location": "[parameters('location')]"
        },
        {
            "apiVersion": "2016-09-01",
            "name": "[parameters('hostingPlanName')]",
            "type": "Microsoft.Web/serverfarms",
            "location": "[parameters('location')]",
            "properties": {
                "name": "[parameters('hostingPlanName')]",
                "workerSizeId": "[parameters('workerSize')]",
                "numberOfWorkers": "1",
                "hostingEnvironment": "[parameters('hostingEnvironment')]"
            },
            "sku": {
                "Tier": "[parameters('sku')]",
                "Name": "[parameters('skuCode')]"
            }
        },
        {
            "apiVersion": "2015-05-01",
            "name": "AppMonitoredSite",
            "type": "microsoft.insights/components",
            "location": "West US 2",
            "properties": {
                "ApplicationId": "[parameters('name')]",
                "Request_Source": "IbizaWebAppExtensionCreate"
            }
        }
    ],
    "parameters": {
        "name": {
            "type": "string"
        },
        "hostingPlanName": {
            "type": "string"
        },
        "hostingEnvironment": {
            "type": "string"
        },
        "location": {
            "type": "string"
        },
        "sku": {
            "type": "string"
        },
        "skuCode": {
            "type": "string"
        },
        "workerSize": {
            "type": "string"
        },
        "serverFarmResourceGroup": {
            "type": "string"
        },
        "subscriptionId": {
            "type": "string"
        }
    },
    "$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0"
}

Włączanie za pomocą programu PowerShell

Aby włączyć monitorowanie aplikacji za pomocą programu PowerShell, należy zmienić tylko podstawowe ustawienia aplikacji. Poniższy przykład umożliwia monitorowanie aplikacji dla witryny internetowej o nazwie AppMonitoredSite w grupie AppMonitoredRGzasobów . Konfiguruje dane do wysłania 012345678-abcd-ef01-2345-6789abcd do klucza instrumentacji.

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Uwaga

W przypadku korzystania z systemu Windows ustaw ApplicationInsightsAgent_EXTENSION_VERSION na ~2. W przypadku korzystania z systemu Linux ustaw ApplicationInsightsAgent_EXTENSION_VERSION na ~3 wartość.

$app = Get-AzWebApp -ResourceGroupName "AppMonitoredRG" -Name "AppMonitoredSite" -ErrorAction Stop
$newAppSettings = @{} # case-insensitive hash map
$app.SiteConfig.AppSettings | %{$newAppSettings[$_.Name] = $_.Value} # preserve non Application Insights application settings.
$newAppSettings["APPINSIGHTS_INSTRUMENTATIONKEY"] = "012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights instrumentation key
$newAppSettings["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights connection string
$newAppSettings["ApplicationInsightsAgent_EXTENSION_VERSION"] = "~2"; # enable the ApplicationInsightsAgent
$app = Set-AzWebApp -AppSettings $newAppSettings -ResourceGroupName $app.ResourceGroup -Name $app.Name -ErrorAction Stop

Często zadawane pytania

Ta sekcja zawiera odpowiedzi na typowe pytania.

Co modyfikuje usługa Application Insights w moim projekcie?

Szczegóły zależą od typu projektu. Poniższa lista jest przykładem aplikacji internetowej.

  • Dodaje pliki do projektu:

    • ApplicationInsights.config
    • ai.js
  • Instaluje pakiety NuGet:

    • Interfejs API usługi Application Insights: podstawowy interfejs API
    • Interfejs API usługi Application Insights dla aplikacji internetowych: służy do wysyłania danych telemetrycznych z serwera
    • Interfejs API usługi Application Insights dla aplikacji JavaScript: służy do wysyłania danych telemetrycznych z klienta
  • Obejmuje zestawy w pakietach:

    • Microsoft.ApplicationInsights
    • Microsoft.ApplicationInsights.Platform
  • Wstawia elementy do:

    • Web.config
    • packages.config
  • Wstawia fragmenty kodu klienta i serwera, aby zainicjować je za pomocą identyfikatora zasobu usługi Application Insights. Na przykład w aplikacji MVC kod jest wstawiany do strony głównej Views/Shared/_Layout.cshtml. Tylko w przypadku nowych projektów dodasz usługę Application Insights do istniejącego projektu ręcznie.

Jaka jest różnica między standardowymi metrykami z usługi Application Insights a metrykami z usługi Azure App Service?

Usługa Application Insights zbiera dane telemetryczne dla żądań wysyłanych do aplikacji. Jeśli błąd wystąpi w usłudze WebApps/WebServer, a żądanie nie dotarło do aplikacji użytkownika, usługa Application Insights nie ma żadnych danych telemetrycznych.

Czas trwania obliczany serverresponsetime przez usługę Application Insights nie musi być zgodny z czasem odpowiedzi serwera obserwowanym przez usługę Web Apps. To zachowanie jest spowodowane tym, że usługa Application Insights liczy czas trwania tylko wtedy, gdy żądanie rzeczywiście dociera do aplikacji użytkownika. Jeśli żądanie jest zablokowane lub umieszczone w kolejce na serwerze WebServer, czas oczekiwania jest uwzględniany w metrykach usługi Web Apps, ale nie w metrykach usługi Application Insights.

Rozwiązywanie problemów

Testowanie łączności między hostem aplikacji a usługą pozyskiwania

Zestawy SDK usługi Application Insights i agenci wysyłają dane telemetryczne, aby były przetwarzane jako wywołania REST do naszych punktów końcowych przetwarzania. Możesz przetestować łączność z serwera webowego lub maszyny hostującej aplikację do punktów końcowych usługi pozyskiwania, używając bezpośrednich klientów REST z poziomu programu PowerShell lub poleceń curl. Zobacz Rozwiązywanie problemów z brakującą telemetrią aplikacji w usłudze Azure Monitor Application Insights.

Uwaga

Podczas tworzenia aplikacji internetowej ze ASP.NET Core środowiskami uruchomieniowymi w usłudze App Service jest wdrażana pojedyncza statyczna strona HTML jako początkowa witryna internetowa. Nie zalecamy rozwiązywania problemu z szablonem domyślnym. Przed rozwiązaniem problemu wdróż aplikację.

Brak telemetrii

Windows

  1. Sprawdź, czy ApplicationInsightsAgent_EXTENSION_VERSION ustawienie aplikacji jest ustawione na wartość ~2.

  2. Przejdź do https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

    Zrzut ekranu przedstawiający link powyżej strony wyników.

    • Upewnij się, że status rozszerzenia Application Insights to Pre-Installed Site Extension, version 2.8.x.xxxx, is running.

      Jeśli nie jest uruchomiona, postępuj zgodnie z instrukcjami w sekcji Włączanie monitorowania usługi Application Insights.

    • Upewnij się, że źródło stanu istnieje i wygląda następująco: Status source D:\home\LogFiles\ApplicationInsights\status\status_RD0003FF0317B6_4248_1.json.

      Jeśli podobna wartość nie jest obecna, oznacza to, że aplikacja nie jest obecnie uruchomiona lub nie jest obsługiwana. Aby upewnić się, że aplikacja jest uruchomiona, spróbuj ręcznie odwiedzić adres URL aplikacji/punkty końcowe aplikacji, co umożliwia udostępnienie informacji o środowisku uruchomieniowym.

    • Upewnij się, że IKeyExists jest True. Jeśli to False, dodaj APPINSIGHTS_INSTRUMENTATIONKEY oraz APPLICATIONINSIGHTS_CONNECTION_STRING z identyfikatorem GUID ikey do ustawień aplikacji.

    • Jeśli aplikacja odwołuje się do jakichkolwiek pakietów usługi Application Insights, włączenie integracji z usługą App Service może nie obowiązywać, a dane mogą nie być wyświetlane w usłudze Application Insights. Przykładem może być wcześniejsza instrumentacja aplikacji lub próba jej zainstrumentowania przy użyciu zestawu SDK ASP.NET Core. Aby rozwiązać ten problem, w witrynie Azure Portal włącz opcję Międzyoperacyjność z zestawem SDK Application Insights.

      Ważne

      Ta funkcja jest dostępna w wersji zapoznawczej.

       Zrzut ekranu przedstawiający włączone ustawienie międzyoperajności.

      Dane są wysyłane przy użyciu podejścia bez kodu, nawet jeśli zestaw SDK usługi Application Insights został pierwotnie użyty lub podjęto próbę użycia.

      Ważne

      Jeśli aplikacja użyła zestawu SDK usługi Application Insights do wysyłania jakichkolwiek danych telemetrycznych, dane telemetryczne zostaną wyłączone. Innymi słowy, niestandardowe dane telemetryczne (na przykład wszelkie Track*() metody) i ustawienia niestandardowe (takie jak próbkowanie) zostaną wyłączone.

Linux

  1. Sprawdź, czy ApplicationInsightsAgent_EXTENSION_VERSION ustawienie aplikacji jest ustawione na wartość ~3.

  2. Przejdź do https://your site name.scm.azurewebsites.net/ApplicationInsights.

  3. Na tej stronie potwierdź:

    • Źródło stanu istnieje i wygląda następująco: Status source /var/log/applicationinsights/status_abcde1234567_89_0.json.
    • Zostanie wyświetlona wartość Auto-Instrumentation enabled successfully . Jeśli podobna wartość nie jest obecna, oznacza to, że aplikacja nie jest uruchomiona lub nie jest obsługiwana. Aby upewnić się, że aplikacja jest uruchomiona, spróbuj ręcznie odwiedzić adres URL aplikacji/punkty końcowe aplikacji, co umożliwia udostępnienie informacji o środowisku uruchomieniowym.
    • IKeyExists to True. Jeśli False, dodaj APPINSIGHTS_INSTRUMENTATIONKEY i APPLICATIONINSIGHTS_CONNECTION_STRING z identyfikatorem GUID ikey do ustawień aplikacji.

    Zrzut ekranu przedstawiający stronę internetową ze stanem autoinstrumentacji.

Domyślna witryna internetowa wdrożona za pomocą aplikacji internetowych nie obsługuje automatycznego monitorowania po stronie klienta

Podczas tworzenia aplikacji internetowej ze środowiskami uruchomieniowymi ASP.NET Core w usłudze App Service wdraża pojedynczą statyczną stronę HTML jako witrynę startową. Statyczna strona internetowa ładuje również składnik ASP.NET Web Part zarządzany przez ASP.NET na serwerze IIS. To zachowanie umożliwia testowanie monitorowania bez kodu po stronie serwera, ale nie obsługuje automatycznego monitorowania po stronie klienta.

Jeśli chcesz przetestować monitorowanie bezkodowe po stronie serwera i klienta dla platformy ASP.NET Core w aplikacji internetowej usługi App Service, zalecamy wykonanie oficjalnych przewodników dotyczących tworzenia aplikacji internetowej ASP.NET Core. Następnie użyj instrukcji w bieżącym artykule, aby włączyć monitorowanie.

Język PHP i WordPress nie są obsługiwane

Witryny PHP i WordPress nie są obsługiwane. Obecnie nie ma oficjalnie obsługiwanego zestawu SDK/agenta na potrzeby monitorowania tych obciążeń po stronie serwera. Aby śledzić transakcje po stronie klienta w witrynie PHP lub WordPress, dodaj kod JavaScript po stronie klienta do swojej witryny przy użyciu JavaScript SDK.

Poniższa tabela zawiera wyjaśnienie, co oznaczają te wartości, ich podstawowe przyczyny i zalecane poprawki.

Wartość problemu Wyjaśnienie Napraw
AppAlreadyInstrumented:true Ta wartość wskazuje, że rozszerzenie wykryło jakiś aspekt zestawu SDK już obecny w aplikacji i wycofał się. Odwołanie do Microsoft.ApplicationInsights.AspNetCore lub Microsoft.ApplicationInsights może spowodować tę wartość. Usuń odwołania. Niektóre z tych odwołań są domyślnie dodawane z niektórych szablonów programu Visual Studio. Starsze wersje programu Visual Studio odwołują się do Microsoft.ApplicationInsights.
AppAlreadyInstrumented:true Obecność Microsoft.ApplicationsInsights biblioteki DLL w folderze aplikacji z poprzedniego wdrożenia może również spowodować tę wartość. Wyczyść folder aplikacji, aby upewnić się, że te biblioteki DLL zostaną usunięte. Sprawdź zarówno katalog bin aplikacji lokalnej, jak i katalog wwwroot w usłudze App Service. (Aby sprawdzić katalog wwwroot aplikacji internetowej usługi App Service, wybierz pozycję Narzędzia zaawansowane (Kudu) >Konsola debugowania>CMD>home\site\wwwroot).
IKeyExists:false Ta wartość wskazuje, że klucz instrumentacji nie jest obecny w ustawieniu APPINSIGHTS_INSTRUMENTATIONKEYaplikacji . Możliwe przyczyny obejmują przypadkowe usunięcie wartości lub zapomnienie o ustawieniu wartości w skrycie automatyzacji. Upewnij się, że ustawienie jest obecne w ustawieniach aplikacji usługi App Service.