Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


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

Automatycznainstrumentacja, nazywana również monitorowaniem środowiska uruchomieniowego, jest najprostszym sposobem włączenia usługi Application Insights dla usługi aplikacja systemu Azure 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. 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 parametry połączenia w celu skorzystania z nowych funkcji.

Włącz usługę Application Insights

Ważne

Zobacz Dodatkowe warunki użytkowania wersji zapoznawczych platformy Microsoft Azure, aby zapoznać się z postanowieniami prawnymi dotyczącymi funkcji platformy Azure, które są w wersji beta lub wersji zapoznawczej albo w inny sposób nie zostały jeszcze wydane jako ogólnie dostępne.

Uwaga

Użyj autoinstrumentacji tylko w usłudze App Service, jeśli nie używasz ręcznej instrumentacji biblioteki OpenTelemetry w kodzie, takiej jak dystrybucja OpenTelemetry usługi Azure Monitor lub eksporter OpenTelemetry usługi Azure Monitor. Zapobiega to wysyłaniu zduplikowanych danych. Aby dowiedzieć się więcej na ten temat, zapoznaj się z sekcją rozwiązywania problemów w tym artykule.

Usługa Application Insights dla języka Python integruje się z usługą aplikacja systemu Azure Service opartą na kodzie. Integracja jest dostępna w publicznej wersji zapoznawczej i dodaje zestaw SDK języka Python, który jest ogólnie dostępny. Instrumentuje popularne biblioteki języka Python w kodzie, umożliwiając automatyczne zbieranie i korelowanie zależności, dzienników i metryk. Aby zobaczyć, które wywołania i metryki są zbierane, zobacz Biblioteki języka Python

Rejestrowanie danych telemetrycznych jest zbierane na poziomie głównego rejestratora. Aby dowiedzieć się więcej na temat natywnej hierarchii rejestrowania języka Python, odwiedź dokumentację rejestrowania języka Python.

Wymagania wstępne

  • Środowisko Python w wersji 3.11 lub starszej.
  • Usługa App Service musi być wdrożona jako kod. Kontenery niestandardowe nie są obsługiwane.

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 app service zostanie ponownie uruchomiona.

    Zrzut ekranu przedstawiający listę rozwijaną Zmień zasób.

  3. Określasz zasób i wszystko jest gotowe do użycia.

    Zrzut ekranu przedstawiający instrumentację aplikacji.

Biblioteki języka Python

Po instrumentowaniu zbierasz wywołania i metryki z tych bibliotek języka Python:

Instrumentacja Django

Aby użyć instrumentacji Django OpenTelemetry, należy ustawić zmienną DJANGO_SETTINGS_MODULE środowiskową w ustawieniach usługi App Service, aby wskazywała z folderu aplikacji na moduł ustawień.

Aby uzyskać więcej informacji, zobacz dokumentację platformy Django.

Dodawanie biblioteki instrumentacji społeczności

Więcej danych można zbierać automatycznie, dołączając biblioteki instrumentacji ze społeczności OpenTelemetry.

Przestroga

Nie obsługujemy ani nie gwarantujemy jakości bibliotek instrumentacji społeczności. Aby zasugerować jeden z naszych dystrybucji, post lub up-vote w naszej społeczności opinii. Należy pamiętać, że niektóre są oparte na eksperymentalnych specyfikacjach OpenTelemetry i mogą wprowadzać przyszłe zmiany powodujące niezgodność.

Aby dodać bibliotekę instrumentacji OpenTelemetry społeczności, zainstaluj ją za pośrednictwem pliku aplikacji requirements.txt . Automatyczna instrygacja OpenTelemetry automatycznie pobiera i instrumentuje wszystkie zainstalowane biblioteki. Znajdź listę bibliotek społeczności tutaj.

Ręczne uaktualnianie rozszerzenia monitorowania/agenta

Wersja języka Python usługi Application Insights jest aktualizowana automatycznie w ramach aktualizacji usługi App Service i nie można jej aktualizować ręcznie.

Jeśli wystąpi problem, który został rozwiązany w najnowszej wersji zestawu SDK usługi Application Insights, możesz usunąć automatyczneinstrumentację i ręcznie instrumentować aplikację przy użyciu najnowszej wersji zestawu SDK.

Konfigurowanie rozszerzenia monitorowania/agenta

Można skonfigurować za pomocą zmiennych środowiskowych OpenTelemetry, takich jak:

Zmienna środowiskowa Opis
OTEL_SERVICE_NAME, OTEL_RESOURCE_ATTRIBUTES Określa atrybuty zasobów OpenTelemetry skojarzone z aplikacją. Można ustawić dowolne atrybuty zasobu za pomocą OTEL_RESOURCE_ATTRIBUTES lub użyć OTEL_SERVICE_NAME , aby ustawić tylko wartość service.name.
OTEL_LOGS_EXPORTER Jeśli jest ustawiona wartość None, wyłącza zbieranie i eksportowanie danych telemetrycznych rejestrowania.
OTEL_METRICS_EXPORTER Jeśli jest ustawiona wartość None, wyłącza zbieranie i eksportowanie danych telemetrycznych metryk.
OTEL_TRACES_EXPORTER Jeśli jest ustawiona wartość None, wyłącza zbieranie i eksportowanie danych telemetrycznych śledzenia rozproszonego.
OTEL_BLRP_SCHEDULE_DELAY Określa interwał eksportu rejestrowania w milisekundach. Wartość domyślna to 5000.
OTEL_BSP_SCHEDULE_DELAY Określa interwał eksportu śledzenia rozproszonego w milisekundach. Wartość domyślna to 5000.
OTEL_TRACES_SAMPLER_ARG Określa współczynnik telemetrii rozproszonego śledzenia do próbkowania. Zaakceptowane wartości wahają się od 0 do 1. Wartość domyślna to 1.0, co oznacza, że żadne dane telemetryczne nie są próbkowane.
OTEL_PYTHON_DISABLED_INSTRUMENTATIONS Określa, które instrumentacje OpenTelemetry mają być wyłączone. Po wyłączeniu instrumentacje nie są wykonywane w ramach autoinstrumentacji. Akceptuje rozdzielaną przecinkami listę małych liter nazw bibliotek. Na przykład ustaw wartość na wartość , aby "psycopg2,fastapi" wyłączyć instrumentacje Psycopg2 i FastAPI. Domyślnie jest to pusta lista, włączając wszystkie obsługiwane instrumentacje.

Włączanie monitorowania po stronie klienta

Aby włączyć monitorowanie po stronie klienta dla aplikacji w języku Python, należy ręcznie dodać zestaw JAVAScript SDK po stronie klienta do aplikacji.

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 dostępnymi ustawieniami usługi Application Insights.

Definicje ustawień aplikacji

Nazwa ustawienia aplikacji Definicja Wartość
APPLICATIONINSIGHTS_CONNECTION_STRING Ciąg połączeń dla zasobu usługi Application Insights. Przykład: abcd1234-ab12-cd34-abcd1234abcd
ApplicationInsightsAgent_EXTENSION_VERSION Główne rozszerzenie, które kontroluje monitorowanie środowiska uruchomieniowego. ~3

Uwaga

Debuger migawek nie jest dostępny dla aplikacji języka Python.

Ustawienia aplikacji usługi App Service z usługą Azure Resource Manager

Ustawienia aplikacji dla usługi aplikacja systemu Azure można zarządzać i konfigurować przy użyciu szablonów usługi 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 swojej nazwy witryny:

Uwaga

W przypadku korzystania z systemu Windows ustaw wartość ApplicationInsightsAgent_EXTENSION_VERSION ~2. W przypadku korzystania z systemu Linux ustaw wartość ApplicationInsightsAgent_EXTENSION_VERSION ~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 ~2wartość . W przypadku korzystania z systemu Linux ustaw ApplicationInsightsAgent_EXTENSION_VERSION na ~3wartość .

$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:

    • Plik 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 metrykami standardowymi z usługi Application Insights a metrykami usługi aplikacja systemu Azure 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 uzyskać pozyskane jako wywołania REST do naszych punktów końcowych pozyskiwania. Możesz przetestować łączność z serwera internetowego lub maszyny hosta aplikacji do punktów końcowych usługi pozyskiwania przy użyciu pierwotnych 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.

Zduplikowane dane telemetryczne

Użyj autoinstrumentacji tylko w usłudze App Service, jeśli nie używasz ręcznej instrumentacji biblioteki OpenTelemetry w kodzie, takiej jak dystrybucja OpenTelemetry usługi Azure Monitor lub eksporter OpenTelemetry usługi Azure Monitor.

Korzystanie z autoinstrumentacji na podstawie instrumentacji ręcznej może spowodować zduplikowane dane telemetryczne i zwiększyć koszt. Aby użyć autoinstrumentacji OpenTelemetry usługi App Service, najpierw usuń instrumentację ręczną openTelemetry z kodu.

Brak telemetrii

Jeśli brakuje telemetrii, wykonaj następujące kroki, aby upewnić się, że automatycznainstrumentacja jest włączona poprawnie.

  1. Upewnij się, że funkcja autoinstrumentacji jest włączona w środowisku usługi Application Insights w zasobie usługi App Service.

    Zrzut ekranu przedstawiający kartę Application Insights z wybraną włączoną funkcją .

  2. Upewnij się, że ApplicationInsightsAgent_EXTENSION_VERSION ustawienie aplikacji jest ustawione na wartość ~3 i że wskazuje APPLICATIONINSIGHTS_CONNECTION_STRING odpowiedni zasób usługi Application Insights.

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

  3. Sprawdź diagnostykę autoinstrumentacji i dzienniki stanu.

    a. Przejdź do folderu /var/log/applicationinsights/ i otwórz status_*.json.

    b. Upewnij się, że AgentInitializedSuccessfully ustawiono wartość true i IKey mieć prawidłowy klucz iKey.

    Przykładowy plik JSON:

        "AgentInitializedSuccessfully":true,
    
        "AppType":"python",
    
        "MachineName":"c89d3a6d0357",
    
        "PID":"47",
    
        "IKey":"00000000-0000-0000-0000-000000000000",
    
        "SdkVersion":"1.0.0"
    
    

    Plik applicationinsights-extension.log w tym samym folderze może pokazywać inną pomocną diagnostykę.

Aplikacje Django

Jeśli aplikacja używa platformy Django i nie uruchamia się lub używa nieprawidłowych ustawień, upewnij się, że ustawiono zmienną DJANGO_SETTINGS_MODULE środowiskową. Aby uzyskać szczegółowe informacje, zobacz sekcję Instrumentacja Django.

Aby uzyskać najnowsze aktualizacje i poprawki błędów, zapoznaj się z informacjami o wersji.

Następne kroki