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. Pobieranie klucza instrumentacji będzie nadal działać, ale nie będziemy już udostępniać aktualizacji ani zapewniać wsparcia dla tej funkcji. Przejście na łańcuchy połączeń 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 kolekcją Zalecaną, niezależnie od tego, czy ustawienie aplikacji APPINSIGHTS_JAVASCRIPT_ENABLED 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. W witrynie Azure Portal utwórz nowy zasób aplikacji internetowej z żądanymi informacjami. Włącz usługę Application Insights na karcie Monitorowanie i bezpieczne .

  2. Przejdź do pozycji Przeglądanie i tworzenie, a następnie wybierz pozycję Pobierz szablon do automatyzacji. Ta opcja generuje najnowszy szablon usługi Resource Manager ze skonfigurowanymi wszystkimi wymaganymi ustawieniami.

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

Uwaga

Poniższy przykładowy szablon dotyczy aplikacji .NET 8 (LTS) działającej w systemie Windows. Używa symboli zastępczych my-monitored-web-app dla nazwy aplikacji i aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e identyfikatora subskrypcji.

Nie zalecamy kopiowania i bezpośredniego używania go. Zamiast tego wygeneruj własny szablon na podstawie powyższych instrukcji.


Rozwiń, aby wyświetlić przykładowy szablon
{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "subscriptionId": {
            "type": "string"
        },
        "resourceGroupName": {
            "type": "string"
        },
        "name": {
            "type": "string"
        },
        "location": {
            "type": "string"
        },
        "hostingPlanName": {
            "type": "string"
        },
        "serverFarmResourceGroup": {
            "type": "string"
        },
        "alwaysOn": {
            "type": "bool"
        },
        "ftpsState": {
            "type": "string"
        },
        "autoGeneratedDomainNameLabelScope": {
            "type": "string"
        },
        "sku": {
            "type": "string"
        },
        "skuCode": {
            "type": "string"
        },
        "workerSize": {
            "type": "string"
        },
        "workerSizeId": {
            "type": "string"
        },
        "numberOfWorkers": {
            "type": "string"
        },
        "currentStack": {
            "type": "string"
        },
        "phpVersion": {
            "type": "string"
        },
        "netFrameworkVersion": {
            "type": "string"
        }
    },
    "variables": {},
    "resources": [
        {
            "apiVersion": "2022-03-01",
            "name": "[parameters('name')]",
            "type": "Microsoft.Web/sites",
            "location": "[parameters('location')]",
            "tags": null,
            "dependsOn": [
                "microsoft.insights/components/my-monitored-web-app",
                "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]"
            ],
            "properties": {
                "name": "[parameters('name')]",
                "siteConfig": {
                    "appSettings": [
                        {
                            "name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
                            "value": "[reference('microsoft.insights/components/my-monitored-web-app', '2015-05-01').ConnectionString]"
                        },
                        {
                            "name": "ApplicationInsightsAgent_EXTENSION_VERSION",
                            "value": "~2"
                        },
                        {
                            "name": "XDT_MicrosoftApplicationInsights_Mode",
                            "value": "default"
                        }
                    ],
                    "metadata": [
                        {
                            "name": "CURRENT_STACK",
                            "value": "[parameters('currentStack')]"
                        }
                    ],
                    "phpVersion": "[parameters('phpVersion')]",
                    "netFrameworkVersion": "[parameters('netFrameworkVersion')]",
                    "alwaysOn": "[parameters('alwaysOn')]",
                    "ftpsState": "[parameters('ftpsState')]"
                },
                "serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "clientAffinityEnabled": true,
                "virtualNetworkSubnetId": null,
                "httpsOnly": true,
                "publicNetworkAccess": "Enabled",
                "autoGeneratedDomainNameLabelScope": "[parameters('autoGeneratedDomainNameLabelScope')]"
            },
            "resources": [
                {
                    "type": "Microsoft.Web/sites/basicPublishingCredentialsPolicies",
                    "apiVersion": "2022-09-01",
                    "name": "[concat(parameters('name'), '/scm')]",
                    "properties": {
                        "allow": true
                    },
                    "dependsOn": [
                        "[resourceId('Microsoft.Web/Sites', parameters('name'))]"
                    ]
                },
                {
                    "type": "Microsoft.Web/sites/basicPublishingCredentialsPolicies",
                    "apiVersion": "2022-09-01",
                    "name": "[concat(parameters('name'), '/ftp')]",
                    "properties": {
                        "allow": true
                    },
                    "dependsOn": [
                        "[resourceId('Microsoft.Web/Sites', parameters('name'))]"
                    ]
                }
            ]
        },
        {
            "apiVersion": "2018-11-01",
            "name": "[parameters('hostingPlanName')]",
            "type": "Microsoft.Web/serverfarms",
            "location": "[parameters('location')]",
            "kind": "",
            "tags": null,
            "dependsOn": [],
            "properties": {
                "name": "[parameters('hostingPlanName')]",
                "workerSize": "[parameters('workerSize')]",
                "workerSizeId": "[parameters('workerSizeId')]",
                "numberOfWorkers": "[parameters('numberOfWorkers')]",
                "zoneRedundant": false
            },
            "sku": {
                "Tier": "[parameters('sku')]",
                "Name": "[parameters('skuCode')]"
            }
        },
        {
            "apiVersion": "2020-02-02-preview",
            "name": "my-monitored-web-app",
            "type": "microsoft.insights/components",
            "location": "centralus",
            "tags": null,
            "dependsOn": [
                "newWorkspaceTemplate"
            ],
            "properties": {
                "ApplicationId": "[parameters('name')]",
                "Request_Source": "IbizaWebAppExtensionCreate",
                "Flow_Type": "Redfield",
                "Application_Type": "web",
                "WorkspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/DefaultResourceGroup-CUS/providers/Microsoft.OperationalInsights/workspaces/DefaultWorkspace-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e-CUS"
            }
        },
        {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2021-04-01",
            "name": "newWorkspaceTemplate",
            "resourceGroup": "DefaultResourceGroup-CUS",
            "subscriptionId": "[parameters('subscriptionId')]",
            "properties": {
                "mode": "Incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentVersion": "1.0.0.0",
                    "parameters": {},
                    "variables": {},
                    "resources": [
                        {
                            "apiVersion": "2020-08-01",
                            "name": "DefaultWorkspace-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e-CUS",
                            "type": "Microsoft.OperationalInsights/workspaces",
                            "location": "centralus",
                            "properties": {}
                        }
                    ]
                }
            }
        }
    ]
}

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 my-monitored-web-app w grupie my-resource-groupzasobów . Konfiguruje dane, które mają być wysyłane do ciągu InstrumentationKey=012345678-abcd-ef01-2345-6789abcd połączenia.

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 systemu Windows ustaw wartość ApplicationInsightsAgent_EXTENSION_VERSION na ~2.

W przypadku systemu Linux ustaw wartość ApplicationInsightsAgent_EXTENSION_VERSION na ~3.

$app = Get-AzWebApp -ResourceGroupName "my-resource-group" -Name "my-monitored-web-app" -ErrorAction Stop
$newAppSettings = @{} # Case-insensitive hash map
$app.SiteConfig.AppSettings | %{$newAppSettings[$_.Name] = $_.Value} # Preserve non-Application-Insights application settings.
$newAppSettings["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"; # Set the Application Insights connection string
$newAppSettings["ApplicationInsightsAgent_EXTENSION_VERSION"] = "~3"; # Enable the ApplicationInsightsAgent.
$app = Set-AzWebApp -AppSettings $newAppSettings -ResourceGroupName $app.ResourceGroup -Name $app.Name -ErrorAction Stop

Rozwiązywanie problemów

Przetestuj łączność między hostem aplikacji a serwisem przesyłania danych

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 środowiskami uruchomieniowymi ASP.NET Core w usłudze App Service jest wdrażana pojedyncza statyczna strona HTML jako początkową witrynę internetową. 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 pokazujący włączone ustawienie międzyoperacyjnoś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 to False, dodaj APPINSIGHTS_INSTRUMENTATIONKEY oraz 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.

Następne kroki