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.
V ovládacím panelu Azure pro službu App Service vyberte Přehledy aplikace a pak vyberte Povolit.
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.
Určíte prostředek a je připravený k použití.
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á, None zakáže shromažďování a export telemetrie protokolování. |
OTEL_METRICS_EXPORTER |
Pokud je tato možnost nastavená, None zakáž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:
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.
Automatizace vytvoření prostředku Přehledy aplikace a propojení s nově vytvořeným prostředkem služby App Service
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.
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.
Vyberte Zkontrolovat a vytvořit. Pak vyberte Stáhnout šablonu pro automatizaci.
Tato možnost vygeneruje nejnovější šablonu Resource Manageru se všemi nakonfigurovanými požadovanými nastaveními.
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 ~3
hodnotu .
{
"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ě AppMonitoredRG
prostř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 ~2
hodnotu . 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:
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.
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
- Povolení odesílání diagnostiky Azure do služby Application Přehledy
- Monitorování metrik stavu služby, abyste měli jistotu, že je vaše služba dostupná a responzivní
- Příjem oznámení o upozorněních vždy, když dojde k provozním událostem nebo metrikám překročí prahovou hodnotu
- Přehled dostupnosti