Monitorowanie aplikacji dla Azure App Service i Node.js

Włączanie monitorowania aplikacji internetowych opartych Node.js 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ę.

Uwaga

W przypadku wykrycia zarówno monitorowania opartego na agencie, jak i ręcznej instrumentacji opartej na zestawie SDK będą honorowane tylko ustawienia instrumentacji ręcznej. Ma to na celu zapobieganie wysłaniu zduplikowanych danych. Aby dowiedzieć się więcej na ten temat, zapoznaj się z sekcją rozwiązywania problemów poniżej.

Włączanie monitorowania opartego na agentach

Możesz monitorować aplikacje Node.js działające w Azure App Service bez konieczności zmiany kodu, wystarczy wykonać kilka prostych kroków. Usługę Application Insights dla Node.js można zintegrować z usługą App Service dla systemu Linux — zarówno kontenerami opartymi na kodzie, jak i kontenerami niestandardowymi oraz App Service na platformie Windows dla aplikacji opartych na kodzie. Integracja jest w publicznej wersji zapoznawczej. Integracja dodaje zestaw SDK Node.js, który jest w dostępnej gałędze.

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

    Zrzut ekranu przedstawiający kartę Szczegółowe informacje z wybraną pozycję Włącz.

  2. Wybierz utworzenie nowego zasobu lub wybierz istniejący zasób application 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 z usługą aplikacji, co spowoduje również ponowne uruchomienie usługi App Service.

    Zrzut ekranu przedstawiający menu rozwijane Zmień zasób.

  3. Po określonej wartości zasobu do użycia wszystko jest ustawione na wartość .

    Zrzut ekranu przedstawiający instrumentę aplikacji.

Włączanie monitorowania po stronie klienta

Aby włączyć monitorowanie po stronie klienta dla aplikacji Node.js, należy ręcznie dodać do aplikacji zestaw SDK JavaScript po stronie klienta.

Automatyzowanie monitorowania

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

Zrzut ekranu przedstawiający App Service application Ustawienia z dostępnymi ustawieniami Szczegółowe informacje aplikacji.

Definicje ustawień aplikacji

Nazwa ustawienia aplikacji Definicja Wartość
ApplicationInsightsAgent_EXTENSION_VERSION Rozszerzenie Główne, które kontroluje monitorowanie środowiska uruchomieniowego. ~2w systemie Windows lub ~3 w systemie Linux
XDT_MicrosoftApplicationInsights_NodeJS Flaga do kontrolowania, node.js jest dołączony agent. 0 lub 1 dotyczy tylko Windows.

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.

Podstawowa struktura danych JSON ustawień aplikacji dla usługi App Service znajduje się poniżej:

      "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 szablon aplikacji Azure Resource Manager z ustawieniami aplikacji skonfigurowanymi dla usługi Application Szczegółowe informacje, ten szablon może być przydatny, w szczególności w sekcji rozpoczynającej się od wiersza 238.

Aby utworzyć szablon aplikacji Azure Resource Manager ze skonfigurowanymi wszystkimi domyślnymi ustawieniami usługi Application Szczegółowe informacje, rozpocznij proces tak, jakby zamierzano 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ę Przeglądanie +tworzenie,a następnie pozycję Pobierz szablon automatyzacji u dołu.

    Zrzut ekranu App Service menu tworzenia aplikacji internetowej.

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

    Zrzut ekranu App Service szablonu aplikacji internetowej.

Poniżej znajduje się przykład, zamień wszystkie wystąpienia AppMonitoredSite obiektu 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

Rozwiązywanie problemów

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

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

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

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

    Upewnij SDKPresent się, że ustawiono wartość false, wartość true i AgentInitializedSuccessfullyIKey ma prawidłowy klucz iKey.

    Poniżej znajduje się przykład pliku JSON:

        "AppType":"node.js",
    
        "MachineName":"c89d3a6d0357",
    
        "PID":"47",
    
        "AgentInitializedSuccessfully":true,
    
        "SDKPresent":false,
    
        "IKey":"00000000-0000-0000-0000-000000000000",
    
        "SdkVersion":"1.8.10"
    
    

    Jeśli wartość jest prawdziwa, oznacza to, że rozszerzenie wykryło, że jakiś aspekt zestawu SDK jest już obecny w aplikacji SDKPresent i zostanie coffny.

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?

Dane Szczegółowe informacje zbierają 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 usługi Application Szczegółowe informacje aplikacji.

Informacje o wersji

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

Następne kroki