Monitorowanie aplikacji dla Azure App Service i ASP.NET Core

Włączanie monitorowania aplikacji internetowych opartych ASP.NET Core na platformie Azure App Services jest teraz łatwiejsze niż kiedykolwiek wcześniej. Wcześniej trzeba było ręcznie instrumentować aplikację, ale najnowsze rozszerzenie/agent jest teraz domyślnie wbudowane App Service obrazu. Ten artykuł zawiera informacje na temat włączania monitorowania Azure Monitor aplikacji Szczegółowe informacje oraz wstępne wskazówki dotyczące automatyzacji procesu wdrożeń na dużą skalę.

Włączanie monitorowania opartego na agentach

Ważne

Następujące wersje programu ASP.NET Core są obsługiwane w przypadku automatycznej instrumentacji na platformie Windows: ASP.NET Core 3.1, 5.0 i 6.0. Wersje 2.0, 2.1, 2.2 i 3.0 zostały wycofane i nie są już obsługiwane. Uaktualnij program .NET Core do obsługiwanej wersji, aby automatyczna instrumentacja działała.

Przycinanie wdrożeń samodzielnych niejest obsługiwane. Zamiast tego użyj instrumentacji ręcznej za pośrednictwem kodu.

Zapoznaj się z sekcją Włączanie monitorowania poniżej, aby rozpocząć konfigurowanie usługi Application Szczegółowe informacje przy użyciu App Service zasobów.

Włączanie monitorowania

  1. Wybierz pozycję Szczegółowe informacje w panelu sterowania platformy Azure dla usługi App Service, a następnie wybierz pozycję Włącz.

     Screenshot of Application Insights tab with enable selected.

  2. Wybierz utworzenie nowego zasobu lub wybierz istniejący zasób Szczegółowe informacje dla tej aplikacji.

    Uwaga

    Po kliknięciu przycisku OK w celu utworzenia nowego zasobu zostanie wyświetlony monit o zastosowanie ustawień monitorowania. Wybranie przycisku Kontynuuj spowoduje połączenie nowego zasobu Szczegółowe informacje aplikacji z usługą App Service, co spowoduje również ponowne uruchomienie usługi App Service.

    Screenshot of Change your resource dropdown.

  3. Po określeniu zasobu do użycia możesz wybrać sposób zbierania danych przez usługę Application Szczegółowe informacje platformę dla aplikacji. ASP.NET Core polecaną kolekcję lubwyłączone.

     Screenshot of instrument your application section.

Włączanie monitorowania po stronie klienta

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

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

  • Ustawieniakonfiguracji
    • W obszarze Ustawienia aplikacji utwórz nowe ustawienie aplikacji:

      Nazwa: APPINSIGHTS_JAVASCRIPT_ENABLED

      Wartość: false

    • Zapisz ustawienia i ponownie uruchom aplikację.

Automatyzowanie monitorowania

Aby włączyć zbieranie danych telemetrycznych Szczegółowe informacje aplikacji, należy ustawić tylko ustawienia aplikacji:

Screenshot of App Service Application Settings with Application Insights settings.

Definicje ustawień aplikacji

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

App Service ustawienia aplikacji za pomocą Azure Resource Manager

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

Poniżej przedstawiono podstawową strukturę danych JSON ustawień aplikacji dla 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"
          }
        }
      ]

Na przykład szablonu usługi Azure Resource Manager z ustawieniami aplikacji skonfigurowanymi dla usługi Application Szczegółowe informacje ten szablon może być przydatny, szczególnie w sekcji rozpoczynającej się od wiersza 238.

Aby utworzyć szablon Azure Resource Manager ze skonfigurowanymi wszystkimi domyślnymi ustawieniami usługi Application Szczegółowe informacje, rozpocznij proces tak, jakby chcesz utworzyć nową aplikację internetową z włączonymi ustawieniami Szczegółowe informacje aplikacji.

  1. Utwórz nowy zasób App Service z informacjami o żądanej aplikacji internetowej. Włączono Szczegółowe informacje na karcie Monitorowanie.

  2. Wybierz pozycję Przejrzyj i utwórz, a następnie pozycję Pobierz szablon automatyzacji u dołu.

    Screenshot of App Service web app creation menu.

    Ta opcja generuje najnowszy szablon Azure Resource Manager ze skonfigurowanymi wszystkimi wymaganymi ustawieniami.

    Screenshot of App Service web app template.

Poniżej znajduje się przykład, zamień wszystkie wystąpienia obiektu AppMonitoredSite na swoją nazwę witryny:

{
    "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 umożliwić monitorowanie aplikacji za pomocą programu PowerShell, należy zmienić tylko podstawowe ustawienia aplikacji. Poniżej znajduje się przykład, który umożliwia monitorowanie aplikacji dla witryny internetowej o nazwie "AppMonitoredSite" w grupie zasobów "AppMonitoredRG" i konfiguruje dane do wysłania do klucza instrumentacji "012345678-abcd-ef01-2345-6789abcd".

Uwaga

W tym artykule jest używany moduł Azure Az programu PowerShell, który jest zalecanym modułem programu PowerShell do interakcji z platformą Azure. Aby rozpocząć pracę z modułem Azure PowerShell, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

$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

Uaktualnianie rozszerzenia/agenta monitorowania — .NET

Uaktualnianie z wersji 2.8.9 lub starszej

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, a po ponownym uruchomieniu aplikacji zostaną one wybrane.

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

Screenshot of the URL path to check the version of the extension you are running.

Uaktualnianie z wersji 1.0.0 do 2.6.5

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

Jeśli uaktualnienie zostało wykonane z wersji wcześniejszej niż 2.5.1, sprawdź, czy biblioteki dll ApplicationInsigths zostały usunięte z folderu application bin, zobacz kroki rozwiązywania problemów.

Rozwiązywanie problemów

Uwaga

Podczas tworzenia aplikacji internetowej za pomocą środowisk uruchomieniowych w usłudze Azure App Services wdraża pojedynczą statyczną stronę ASP.NET Core HTML jako startową witrynę internetową. Nie zaleca się rozwiązywania problemów z szablonem domyślnym. Wd wdrażaj aplikację przed rozwiązywaniem problemu.

Poniżej znajduje się nasz przewodnik rozwiązywania problemów krok po kroku dotyczący monitorowania opartego na rozszerzeniach/agentach dla aplikacji ASP.NET Core działających na platformie Azure App Services.

  1. Sprawdź, ApplicationInsightsAgent_EXTENSION_VERSION czy ustawienie aplikacji ma wartość "~2".

  2. Przejdź na stronę https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

    Screenshot of the link above results page.

    • Potwierdź, Application Insights Extension Status że Pre-Installed Site Extension, version 2.8.x.xxxx, is running.

      Jeśli nie jest uruchomiona, postępuj zgodnie z instrukcjami dotyczącymi włączania usługi Application Szczegółowe informacje monitorowania.

    • 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 podobnej wartości nie ma, 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żliwi dostęp do informacji o środowisku uruchomieniowym.

    • Upewnij IKeyExists się, true że jest to , dodaj i z falseAPPINSIGHTS_INSTRUMENTATIONKEYAPPLICATIONINSIGHTS_CONNECTION_STRING identyfikatorem GUID ikey do ustawień aplikacji.

    • Jeśli aplikacja odwołuje się do jakichkolwiek pakietów usługi Application Szczegółowe informacje, na przykład jeśli wcześniej instrumentowano (lub podjęto próbę instrumentowania) aplikacji przy użyciu zestawu SDK usługi ASP.NET Core,włączenie integracji z usługą App Service może nie zostać wprowadzone, a dane mogą nie pojawić się w aplikacji Szczegółowe informacje. Aby rozwiązać ten problem, w portalu włącz w portalu "Międzyplatplatowe z zestawem SDK usługi Application Szczegółowe informacje", aby rozpocząć wyświetlanie danych w witrynie Application Szczegółowe informacje.

    • Ważne

      Ta funkcja jest dostępna w wersji zapoznawczej

       Screenshot of interop setting enabled.

      Dane będą teraz wysyłane bez użycia kodu, nawet jeśli zestaw SDK usługi Application Szczegółowe informacje był pierwotnie używany lub próbował zostać użyty.

      Ważne

      Jeśli aplikacja użyła zestawu SDK usługi Application Szczegółowe informacje do wysyłania danych telemetrycznych, takie dane telemetryczne zostaną wyłączone — innymi słowy, telemetria niestandardowa — jeśli taka będzie, na przykład jakiekolwiek metody śledzenia*() i wszelkie ustawienia niestandardowe, takie jak próbkowanie, zostaną wyłączone.

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

Po utworzeniu aplikacji internetowej za pomocą środowisk uruchomieniowych w usłudze Azure App Services wdraża ona pojedynczą statyczną stronę ASP.NET Core HTML jako startową witrynę internetową. Statyczna strona internetowa ładuje również zarządzany ASP.NET Web Part w usługach IIS. Umożliwia to testowanie bez kodu monitorowania po stronie serwera, ale nie obsługuje automatycznego monitorowania po stronie klienta.

Jeśli chcesz przetestować monitorowanie serwera bez kodu i monitorowania po stronie klienta dla usługi ASP.NET Core w aplikacji internetowej usługi Azure App Services, zalecamy skorzystanie z oficjalnych przewodników tworzenia aplikacji ASP.NET Core internetowej. Następnie użyj instrukcji podanych w bieżącym artykule, aby włączyć monitorowanie.

Ciąg połączenia i klucz instrumentacji

W przypadku korzystania z monitorowania bez kodu wymagane są tylko te ciągi połączenia. Jednak nadal zalecamy ustawienie klucza instrumentacji w celu zachowania zgodności z poprzednimi wersjami zestawu SDK w przypadku ręcznej instrumentacji.

Różnica między metrykami standardowymi a metrykami Szczegółowe informacje a Azure App Service metrykami?

Program Application Szczegółowe informacje zbiera dane telemetryczne dotyczące żądań, które zostały wprowadzone do aplikacji. Jeśli błąd wystąpił w usłudze WebApps/WebServer, a żądanie nie dotarło do aplikacji użytkownika, program Application Szczegółowe informacje nie będzie mieć żadnych danych telemetrycznych dotyczących tej aplikacji.

Czas trwania obliczony przez usługę Application Szczegółowe informacje niekoniecznie jest zgodny z czasem odpowiedzi serwera zaobserwowanym przez serverresponsetime Web Apps. Dzieje się tak, Szczegółowe informacje aplikacja zlicza czas trwania tylko wtedy, gdy rzeczywiste żądanie dociera do aplikacji użytkownika. Jeśli żądanie zostało zablokowane/w kolejce na serwerze internetowym, ten czas oczekiwania zostanie uwzględniony w metrykach aplikacji internetowej, ale nie w metrykach aplikacji Szczegółowe informacje aplikacji.

Php i WordPress nie są obsługiwane

Witryny PHP i WordPress nie są obsługiwane. Obecnie nie ma oficjalnie obsługiwanego zestawu SDK/agenta do monitorowania tych obciążeń po stronie serwera. Jednak ręczne instrumentowanie transakcji po stronie klienta w witrynie PHP lub WordPress przez dodanie kodu JavaScript po stronie klienta do stron sieci Web można wykonać przy użyciu zestawu SDK języka JavaScript.

W poniższej tabeli przedstawiono bardziej szczegółowe wyjaśnienie, co oznaczają te wartości, ich przyczyny i zalecane poprawki:

Wartość problemu Wyjaśnienie Wprowadzanie poprawek
AppAlreadyInstrumented:true Ta wartość wskazuje, że rozszerzenie wykryło, że jakiś aspekt zestawu SDK jest już obecny w aplikacji i zostanie cofny. Może to być spowodowane odwołaniem do Microsoft.ApplicationInsights.AspNetCore , lub Microsoft.ApplicationInsights Usuń odwołania. Niektóre z tych odwołań są dodawane domyślnie z niektórych szablonów Visual Studio, a starsze wersje programu Visual Studio mogą dodawać odwołania do Microsoft.ApplicationInsights .
AppAlreadyInstrumented:true Jeśli aplikacja jest ukierunkowana na ASP.NET Core 2.1 lub 2.2, ta wartość wskazuje, że rozszerzenie wykryło, że jakiś aspekt zestawu SDK jest już obecny w aplikacji i zostanie wywrócą Klientom korzystającym z oprogramowania .NET Core 2.1,2.2 zaleca się używanie Microsoft.AspNetCore.App metapakiet. Ponadto włącz w portalu "Interop with Application Szczegółowe informacje SDK" (Międzyoptyk z zestawem SDK usługi Application Szczegółowe informacje) (zobacz powyższe instrukcje).
AppAlreadyInstrumented:true Ta wartość może być również spowodowana obecnością biblioteki DLL Microsoft.ApplicationsInsights w folderze aplikacji z poprzedniego wdrożenia. Wyczyść folder app, aby upewnić się, że te biblioteki dll zostały usunięte. Sprawdź zarówno katalog bin aplikacji lokalnej, jak i katalog wwwroot na App Service. (Aby sprawdzić katalog wwwroot aplikacji internetowej App Service: Narzędzia zaawansowane (Kudu) > Debugowanie > konsoli CMD > home\site\wwwroot).
IKeyExists:false Ta wartość wskazuje, że klucz instrumentacji nie jest obecny w właściwości AppSetting, APPINSIGHTS_INSTRUMENTATIONKEY . Możliwe przyczyny: wartości mogą zostać przypadkowo usunięte, nie zostały ustawione w skrypcie automatyzacji itp. Upewnij się, że ustawienie znajduje się w App Service aplikacji.

Informacje o wersji

Aby uzyskać informacje o najnowszych aktualizacjach i poprawkach usterek, zapoznaj się z informacjami o wersji.

Następne kroki