Monitorování aplikací pro službu Aplikace Azure a Python (Preview)

Důležité

Právní podmínky, které platí pro funkce Azure, které jsou ve verzi beta, verzi Preview nebo které zatím nejsou veřejně dostupné, najdete v Dodatečných podmínkách použití pro Microsoft Azure verze Preview.

Monitorujte webové aplikace Pythonu ve službě Aplikace Azure Services beze změny kódu. V této příručce se dozvíte, jak povolit službu Azure Monitor Application Přehledy a nabízí tipy pro automatizaci rozsáhlých nasazení.

Integrační nástroje oblíbené knihovny Pythonu v kódu umožňují automaticky shromažďovat a korelovat závislosti, protokoly a metriky. Po instrumentaci shromažďujete volání a metriky z těchto knihoven Pythonu:

Instrumentace Název podporované knihovny Podporované verze
OpenTelemetry Django Instrumentation django Odkaz
Instrumentace OpenTelemetry FastApi fastapi Odkaz
Instrumentace OpenTelemetry Flask flask Odkaz
Instrumentace OpenTelemetry Psycopg2 psycopg2 Odkaz
Instrumentace žádostí OpenTelemetry requests Odkaz
Instrumentace urllib OpenTelemetry urllib Všechny
Instrumentace OpenTelemetry UrlLib3 urllib3 Odkaz

Poznámka:

Pokud používáte Django, přečtěte si další část Instrumentace Django v tomto článku.

Protokolování telemetrie se shromažďuje na úrovni kořenového protokolovacího nástroje. Další informace o nativní hierarchii protokolování Pythonu najdete v dokumentaci k protokolování Pythonu.

Požadavky

  • Python verze 3.11 nebo starší
  • Služba App Service musí být nasazená jako kód. Vlastní kontejnery se nepodporují.

Povolit Application Insights

Nejjednodušší způsob, jak monitorovat aplikace Pythonu na Aplikace Azure Services, je prostřednictvím webu Azure Portal.

Aktivace monitorování na webu Azure Portal automaticky instrumentuje aplikaci pomocí aplikačních Přehledy a nevyžaduje žádné změny kódu.

Poznámka:

Ve službě App Service byste měli použít automatickou distribuci pouze v případě, že ve svém kódu nepoužíváte ruční instrumentaci OpenTelemetry, jako je distribuce OpenTelemetry služby Azure Monitor nebo exportér OpenTelemetry služby Azure Monitor. Tím zabráníte odesílání duplicitních dat. Další informace o tom najdete v části řešení potíží v tomto článku.

Automatická registrace prostřednictvím webu Azure Portal

Úplný seznam podporovanýchscénářůch

Zapněte monitorování aplikací Pythonu ve službě Aplikace Azure Service bez nutnosti změn kódu.

Aplikační Přehledy pro Python se integruje se službou linuxové Aplikace Azure založené na kódu.

Integrace je ve verzi Public Preview. Přidá sadu Python SDK, která je ve verzi GA.

  1. V ovládacím panelu Azure pro službu App Service vyberte Přehledy aplikace a pak vyberte Povolit.

    Snímek obrazovky s kartou Přehledy aplikace s vybranou možností Povolit

  2. Zvolte vytvoření nového prostředku nebo vyberte existující prostředek Přehledy aplikace pro tuto aplikaci.

    Poznámka:

    Když vyberete OK a vytvoříte nový prostředek, zobrazí se výzva k použití nastavení monitorování. Výběrem možnosti Pokračovat propočíte nový prostředek aplikace Přehledy s vaší službou App Service. Tím se aktivuje také restartování služby App Service.

    Snímek obrazovky s rozevíracím seznamem Změnit prostředek

  3. Určíte prostředek a je připravený k použití.

    Snímek obrazovky instrumentace aplikace

Konfigurace

Můžete nakonfigurovat proměnné prostředí OpenTelemetry, například:

Proměnná prostředí Popis
OTEL_SERVICE_NAME, OTEL_RESOURCE_ATTRIBUTES Určuje atributy prostředku OpenTelemetry přidružené k vaší aplikaci. Pomocí OTEL_RESOURCE_ATTRIBUTES můžete nastavit libovolné atributy zdroje nebo použít OTEL_SERVICE_NAME pouze k nastavení service.name.
OTEL_LOGS_EXPORTER Pokud je tato možnost nastavená, Nonezakáže shromažďování a export telemetrie protokolování.
OTEL_METRICS_EXPORTER Pokud je tato možnost nastavená, Nonezakáže shromažďování a export telemetrie metrik.
OTEL_TRACES_EXPORTER Pokud je nastavená hodnota None, zakáže shromažďování a export distribuovaných telemetrických dat trasování.
OTEL_BLRP_SCHEDULE_DELAY Určuje interval exportu protokolování v milisekundách. Výchozí hodnota je 5000.
OTEL_BSP_SCHEDULE_DELAY Určuje interval exportu distribuovaného trasování v milisekundách. Výchozí hodnota je 5000.
OTEL_PYTHON_DISABLED_INSTRUMENTATIONS Určuje, které instrumentace OpenTelemetry se mají zakázat. Pokud je tato možnost zakázaná, instrumentace se nespustí jako součást automatického vytváření. Přijímá čárkami oddělený seznam názvů knihoven malými písmeny. Nastavte ho například tak, aby "psycopg2,fastapi" se zakázaly instrumentace Psycopg2 a FastAPI. Výchozí hodnota je prázdný seznam, který povoluje všechny podporované instrumentace.

Přidání knihovny instrumentace komunity

Pokud zahrnete knihovny instrumentace z komunity OpenTelemetry, můžete automaticky shromažďovat další data.

Upozornění

Nepodporujeme ani nezaručujeme kvalitu komunitních instrumentačních knihoven. Pokud ho chcete navrhnout pro naši distribuci, publikujte nebo hlasujte v naší komunitě pro zpětnou vazbu. Mějte na paměti, že některé jsou založené na experimentálních specifikacích OpenTelemetry a můžou představovat budoucí zásadní změny.

Pokud chcete přidat komunitní knihovnu OpenTelemetry Instrumentation Library, nainstalujte ji prostřednictvím souboru vaší aplikace requirements.txt . Autoinstrumentace OpenTelemetry automaticky přebírá všechny nainstalované knihovny a nástroje. Seznam komunitních knihoven najdete tady.

Automatizace monitorování

Aby bylo možné povolit shromažďování telemetrických dat pomocí Přehledy aplikace, je potřeba nastavit pouze následující nastavení aplikace:

Snímek obrazovky s Nastavení aplikace služby App Service s dostupnými nastaveními Přehledy aplikace

Definice nastavení aplikace

Název nastavení aplikace Definice Hodnota
APPLICATIONINSIGHTS_CONNECTION_STRING řetězec Připojení pro prostředek Přehledy aplikace Příklad: abcd1234-ab12-cd34-abcd1234abcd
ApplicationInsightsAgent_EXTENSION_VERSION Hlavní rozšíření, které řídí monitorování modulu runtime. ~3

Poznámka:

Profiler a ladicí program snímků nejsou pro aplikace Pythonu k dispozici.

Nastavení aplikace služby App Service pomocí Azure Resource Manageru

Nastavení aplikace pro službu Aplikace Azure Service je možné spravovat a konfigurovat pomocí šablon Azure Resource Manageru. Tuto metodu můžete použít při nasazování nových prostředků služby App Service s automatizací Resource Manageru nebo úpravou nastavení existujících prostředků.

Základní struktura JSON nastavení aplikace pro prostředek služby 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"
          }
        }
      ]

Příklad šablony Resource Manageru s nastavením aplikace nakonfigurovanými pro Přehledy aplikace může být tato šablona užitečná. Konkrétně se podívejte na oddíl, který začíná na řádku 238.

Pokud chcete vytvořit šablonu Resource Manageru s výchozím nastavením Přehledy aplikace, zahajte proces, jako byste chtěli vytvořit novou webovou aplikaci s povolenou Přehledy aplikace.

  1. Vytvořte nový prostředek služby App Service s požadovanými informacemi o webové aplikaci. Na kartě Monitorování povolte Přehledy aplikace.

  2. Vyberte Zkontrolovat a vytvořit. Pak vyberte Stáhnout šablonu pro automatizaci.

    Snímek obrazovky znázorňující nabídku vytvoření webové aplikace služby App Service

    Tato možnost vygeneruje nejnovější šablonu Resource Manageru se všemi nakonfigurovanými požadovanými nastaveními.

    Snímek obrazovky znázorňující šablonu webové aplikace služby App Service

V následující ukázce nahraďte všechny instance AppMonitoredSite názvem vašeho webu:

Poznámka:

Pokud používáte Windows, nastavte ApplicationInsightsAgent_EXTENSION_VERSION na hodnotu ~2. Pokud používáte Linux, nastavte ApplicationInsightsAgent_EXTENSION_VERSION na ~3hodnotu .

{
    "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"
}

Povolení prostřednictvím PowerShellu

Pokud chcete povolit monitorování aplikací prostřednictvím PowerShellu, musíte změnit jenom základní nastavení aplikace. Následující ukázka umožňuje monitorování aplikací pro web volaný AppMonitoredSite ve skupině AppMonitoredRGprostředků . Konfiguruje data, která se mají odesílat do 012345678-abcd-ef01-2345-6789abcd instrumentačního klíče.

Poznámka:

Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Poznámka:

Pokud používáte Systém Windows, nastavte aplikaci Přehledy Agent_EXTENSION_VERSION na ~2hodnotu . Pokud používáte Linux, nastavte aplikaci Přehledy Agent_EXTENSION_VERSION na ~3.

$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

Instrumentace Django

Pokud chcete použít Instrumentaci OpenTelemetry Django, musíte nastavit DJANGO_SETTINGS_MODULE proměnnou prostředí v nastavení služby App Service tak, aby odkazovat ze složky aplikace na modul nastavení. Další informace najdete v dokumentaci k Django.

Nejčastější dotazy

Jaký je rozdíl mezi standardními metrikami oproti metrikám služby Application Přehledy a Aplikace Azure Service?

Aplikace Přehledy shromažďuje telemetrii pro požadavky, které je do aplikace provedly. Pokud k selhání dojde ve službě WebApps/WebServer a požadavek se nedotášel k uživatelské aplikaci, aplikace Přehledy o ní nemá žádnou telemetrii.

Doba trvání serverresponsetime vypočítaná aplikací Přehledy nemusí nutně odpovídat době odezvy serveru zjištěné službou Web Apps. Toto chování je způsobeno tím, že aplikace Přehledy počítá pouze dobu trvání, kdy požadavek skutečně dosáhne uživatelské aplikace. Pokud se požadavek zablokuje nebo zařadí do fronty ve webovém serveru, doba čekání se zahrne do metrik Web Apps, ale ne do metrik Přehledy aplikace.

Řešení problému

Tady poskytujeme průvodce odstraňováním potíží pro monitorování aplikací Pythonu ve službě Aplikace Azure Services pomocí automatického vytváření.

Duplicitní telemetrie

Ve službě App Service byste měli použít automatickou distribuci pouze v případě, že ve svém kódu nepoužíváte ruční instrumentaci OpenTelemetry, jako je distribuce OpenTelemetry služby Azure Monitor nebo exportér OpenTelemetry služby Azure Monitor. Použití automatické analýzy nad ruční instrumentací může způsobit duplicitní telemetrii a zvýšit náklady. Pokud chcete použít automatickoustrumentaci OpenTelemetry služby App Service, nejprve z kódu odeberte ruční instrumentaci OpenTelemetry.

Chybějící telemetrie

Pokud vám chybí telemetrie, postupujte podle těchto kroků a ověřte, že je automatická analýza povolená správně.

Krok 1: Zkontrolujte okno Přehledy aplikace ve vašem prostředku služby App Service

Ověřte, že je v okně Přehledy aplikace ve vašem prostředku služby App Service povolená automatická správa:

Snímek obrazovky s kartou Přehledy aplikace s vybranou možností Povolit

Krok 2: Ověřte správnost Nastavení aplikace

Ověřte, že ApplicationInsightsAgent_EXTENSION_VERSION je nastavení aplikace nastavené na hodnotu ~3 a že odkazuje APPLICATIONINSIGHTS_CONNECTION_STRING na příslušný prostředek aplikace Přehledy.

Snímek obrazovky s Nastavení aplikace služby App Service s dostupnými nastaveními Přehledy aplikace

Krok 3: Kontrola diagnostických a stavových protokolů autoinstruace

Přejděte na /var/log/applicationinsights/ a otevřete status_*.json.

Ověřte, že AgentInitializedSuccessfully je nastavená hodnota true a IKey jestli má platný klíč iKey.

Tady je ukázkový soubor JSON:

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

Soubor applicationinsights-extension.log ve stejné složce může zobrazit další užitečnou diagnostiku.

Aplikace Django

Pokud vaše aplikace používá Django a buď se nedaří spustit, nebo používá nesprávné nastavení, nezapomeňte nastavit proměnnou DJANGO_SETTINGS_MODULE prostředí. Podrobnosti najdete v části Instrumentace Django.


Testování připojení mezi hostitelem vaší aplikace a službou příjmu dat

Sady SDK a agenti aplikace Přehledy odesílají telemetrii, aby se ingestovala jako volání REST do koncových bodů příjmu dat. Připojení z webového serveru nebo hostitelského počítače aplikace ke koncovým bodům služby pro příjem dat můžete otestovat pomocí nezpracovaných klientů REST z příkazů PowerShellu nebo curl. Viz Řešení potíží s chybějící telemetrií aplikací ve službě Azure Monitor application Přehledy.

Nejnovější aktualizace a opravy chyb najdete v poznámkách k verzi. -->

Další kroky