Alkalmazásfigyelés Azure-alkalmazás szolgáltatáshoz és Pythonhoz (előzetes verzió)
Fontos
A bétaverziójú, előzetes verziójú vagy másként még általánosan nem elérhető Azure-szolgáltatások jogi feltételeit lásd: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.
A Kód módosítása nélkül monitorozza a Python-webalkalmazásokat a Azure-alkalmazás Services szolgáltatásban. Ez az útmutató bemutatja, hogyan engedélyezheti az Azure Monitor-alkalmazás Elemzések, és tippeket nyújt a nagy léptékű üzemelő példányok automatizálásához.
Az integrációs eszközök népszerű Python-kódtárakat használnak a kódban, így automatikusan összegyűjtheti és korrelálhatja a függőségeket, naplókat és metrikákat. A rendszerezés után az alábbi Python-kódtárakból gyűjt hívásokat és metrikákat:
Feljegyzés
Ha Django-t használ, tekintse meg a cikk további Django Instrumentation szakaszát.
A naplózási telemetria a gyökérnaplózó szintjén lesz összegyűjtve. A Python natív naplózási hierarchiájával kapcsolatos további információkért tekintse meg a Python naplózási dokumentációját.
Előfeltételek
- A Python 3.11-es vagy korábbi verziója.
- Az App Service-t kódként kell üzembe helyezni. Az egyéni tárolók nem támogatottak.
Az Application Insights engedélyezése
A Python-alkalmazások Azure-alkalmazás-szolgáltatásokon való monitorozásának legegyszerűbb módja az Azure Portal.
A monitorozás aktiválása az Azure Portalon automatikusan aktiválja az alkalmazást az Application Elemzések használatával, és nem igényel kódmódosítást.
Feljegyzés
Csak akkor használja az automatikus betanítást az App Service-ben, ha nem használja az OpenTelemetria manuális rendszerezését a kódban, például az Azure Monitor OpenTelemetry Distro-t vagy az Azure Monitor OpenTelemetry-exportőrt. Ennek célja, hogy megakadályozza a duplikált adatok küldését. Erről a cikk hibaelhárítási szakaszában olvashat bővebben.
Autoinstrumentáció az Azure Portalon
A támogatott autoinstrumentációs forgatókönyvek teljes listájáért tekintse meg a támogatott környezeteket, nyelveket és erőforrás-szolgáltatókat.
Váltás a Python-alkalmazások monitorozására a Azure-alkalmazás Szolgáltatásban, és nincs szükség kódmódosításra.
A Pythonhoz készült alkalmazás Elemzések kódalapú Linux Azure-alkalmazás Szolgáltatással integrálható.
Az integráció nyilvános előzetes verzióban érhető el. Hozzáadja a Python SDK-t, amely a GA-ban található.
Válassza az Alkalmazás Elemzések lehetőséget az App Service Azure vezérlőpultjában, majd válassza az Engedélyezés lehetőséget.
Válasszon új erőforrást, vagy válasszon egy meglévő alkalmazás-Elemzések erőforrást ehhez az alkalmazáshoz.
Feljegyzés
Amikor az OK gombot választja az új erőforrás létrehozásához, a rendszer kérni fogja a figyelési beállítások alkalmazását. A Folytatás lehetőség választásával összekapcsolhatja az új alkalmazás-Elemzések erőforrást az app service-hez, és ezzel elindítja az app service újraindítását is.
Megadhatja az erőforrást, és készen áll a használatra.
Konfiguráció
OpenTelemetry környezeti változókkal konfigurálható, például:
Környezeti változó | Leírás |
---|---|
OTEL_SERVICE_NAME , OTEL_RESOURCE_ATTRIBUTES |
Megadja az alkalmazáshoz társított OpenTelemetry-erőforrásattribútumokat. Bármilyen erőforrásattribútumot beállíthat OTEL_RESOURCE_ATTRIBUTES, vagy a OTEL_Standard kiadás RVICE_NAME használatával csak a service.name . |
OTEL_LOGS_EXPORTER |
Ha be van None állítva, letiltja a naplózási telemetriai adatok gyűjtését és exportálását. |
OTEL_METRICS_EXPORTER |
Ha be van None állítva, letiltja a metrikatelemetria gyűjtését és exportálását. |
OTEL_TRACES_EXPORTER |
Ha be van None állítva, letiltja az elosztott nyomkövetési telemetriai adatok gyűjtését és exportálását. |
OTEL_BLRP_SCHEDULE_DELAY |
Ezredmásodpercben adja meg a naplózás exportálási időközét. Alapértelmezés szerint 5000. |
OTEL_BSP_SCHEDULE_DELAY |
Ezredmásodpercben adja meg az elosztott nyomkövetés exportálási időközét. Alapértelmezés szerint 5000. |
OTEL_PYTHON_DISABLED_INSTRUMENTATIONS |
Megadja, hogy mely OpenTelemetry-rendszerállapotokat kell letiltani. Ha le van tiltva, a rendszerállapotok nem lesznek végrehajtva az autoinstrumentáció részeként. A kisbetűs kódtárnevek vesszővel tagolt listáját fogadja el. Állítsa be például úgy, hogy "psycopg2,fastapi" letiltsa a Psycopg2 és a FastAPI rendszerállapotokat. Alapértelmezés szerint egy üres lista, amely lehetővé teszi az összes támogatott rendszerállapot engedélyezését. |
Közösségi rendszerállapot-kódtár hozzáadása
Az OpenTelemetry-közösség rendszerállapot-kódtárainak felvételekor automatikusan további adatokat gyűjthet.
Figyelemfelhívás
Nem támogatjuk és nem garantáljuk a közösségi eszközkódtárak minőségét. Javasoljuk, hogy egy a mi disztribúció, post vagy up-vote a mi visszajelzési közösség. Vegye figyelembe, hogy egyes adatok kísérleti OpenTelemetria-specifikációkon alapulnak, és jövőbeli kompatibilitástörő változásokat eredményezhetnek.
A közösségi OpenTelemetry Instrumentation Library hozzáadásához telepítse az alkalmazás fájlján requirements.txt
keresztül. Az OpenTelemetry autoinstrumentation automatikusan felveszi és az összes telepített kódtárat elvégzi. A közösségi könyvtárak listáját itt találja.
Monitorozás automatizálása
Ahhoz, hogy az Alkalmazás Elemzések telemetriagyűjtést engedélyezhessen, csak a következő alkalmazásbeállításokat kell megadni:
Alkalmazásbeállítások definíciói
Alkalmazásbeállítás neve | Definíció | Érték |
---|---|---|
APPLICATIONINSIGHTS_CONNECTION_STRING | Csatlakozás ions sztring az alkalmazás Elemzések erőforráshoz | Példa: abcd1234-ab12-cd34-abcd1234abcd |
ApplicationInsightsAgent_EXTENSION_VERSION | Fő bővítmény, amely vezérli a futtatókörnyezet monitorozását. | ~3 |
Feljegyzés
A Profiler és a pillanatkép-hibakereső nem érhető el Python-alkalmazásokhoz
App Service-alkalmazásbeállítások az Azure Resource Managerrel
A Azure-alkalmazás szolgáltatás alkalmazásbeállításai azure Resource Manager-sablonokkal kezelhetők és konfigurálhatók. Ezt a módszert akkor használhatja, ha új App Service-erőforrásokat helyez üzembe a Resource Manager automatizálásával, vagy módosítja a meglévő erőforrások beállításait.
Az App Service-erőforrás JSON-alkalmazásbeállításainak alapstruktúrája:
"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"
}
}
]
Az Alkalmazás Elemzések konfigurált alkalmazásbeállításokat tartalmazó Resource Manager-sablon esetében ez a sablon hasznos lehet. Pontosabban lásd a 238- as sorban kezdődő szakaszt.
Alkalmazás-Elemzések erőforrás létrehozásának automatizálása és az újonnan létrehozott App Service-erőforrásra mutató hivatkozás
Ha egy Resource Manager-sablont szeretne létrehozni az alapértelmezett alkalmazás Elemzések beállításokkal, kezdje el úgy a folyamatot, mintha egy új webalkalmazást szeretne létrehozni, amelyen engedélyezve van az Alkalmazás Elemzések.
Hozzon létre egy új App Service-erőforrást a kívánt webalkalmazás-adatokkal. Az Alkalmazás Elemzések engedélyezése a Figyelés lapon.
Válassza az Áttekintés + létrehozás lehetőséget. Ezután válassza a Sablon letöltése automatizáláshoz lehetőséget.
Ez a beállítás létrehozza a legújabb Resource Manager-sablont az összes szükséges beállítás konfigurálva.
Az alábbi példában cserélje le az összes példányt AppMonitoredSite
a webhely nevére:
Feljegyzés
Ha Windowst használ, állítsa a következőre ApplicationInsightsAgent_EXTENSION_VERSION
~2
: . Linux használata esetén állítsa a következőre 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"
}
Engedélyezés a PowerShell-lel
Az alkalmazásfigyelés PowerShellen keresztüli engedélyezéséhez csak a mögöttes alkalmazásbeállításokat kell módosítani. Az alábbi minta lehetővé teszi az alkalmazásfigyelést az erőforráscsoportban AppMonitoredRG
hívott AppMonitoredSite
webhelyeken. Úgy konfigurálja az adatokat, hogy azokat a 012345678-abcd-ef01-2345-6789abcd
rendszerállapot-kulcsra küldhesse.
Feljegyzés
Javasoljuk, hogy az Azure Az PowerShell modult használja az Azure-ral való interakcióhoz. Az első lépésekhez tekintse meg az Azure PowerShell telepítését ismertető szakaszt. Az Az PowerShell-modulra történő migrálás részleteiről lásd: Az Azure PowerShell migrálása az AzureRM modulból az Az modulba.
Feljegyzés
Windows használata esetén állítsa az Application Elemzések Agent_EXTENSION_VERSION értéket a következőre~2
: . Linux használata esetén állítsa az Application Elemzések Agent_EXTENSION_VERSION értéket a következőre~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
Django Instrumentation
Az OpenTelemetry Django Instrumentation használatához be kell állítania a környezeti változót az DJANGO_SETTINGS_MODULE
App Service beállításai között, hogy az alkalmazásmappából a beállítások modulba mutasson. További információkért lásd a Django dokumentációját.
Gyakori kérdések
Mi a különbség az alkalmazás Elemzések és Azure-alkalmazás szolgáltatásmetrikái között?
Az alkalmazás Elemzések telemetriát gyűjt az alkalmazásnak küldött kérésekhez. Ha a hiba a WebApps/WebServer szolgáltatásban jelentkezik, és a kérés nem érte el a felhasználói alkalmazást, az alkalmazás Elemzések nem rendelkezik telemetriai adatokkal.
Az alkalmazás Elemzések által kiszámított időtartam serverresponsetime
nem feltétlenül egyezik meg a Web Apps által megfigyelt kiszolgálói válaszidővel. Ennek a viselkedésnek az az oka, hogy az alkalmazás Elemzések csak azt az időtartamot számolja meg, amikor a kérés ténylegesen eléri a felhasználói alkalmazást. Ha a kérés elakadt vagy várólistára került a WebServerben, a várakozási idő a Web Apps-metrikák részét képezi, az Alkalmazás Elemzések metrikákban azonban nem.
Hibaelhárítás
Itt talál hibaelhárítási útmutatót a Python-alkalmazások Azure-alkalmazás-szolgáltatások automatikus beléptetéssel történő monitorozásához.
Ismétlődő telemetriai adatok
Csak akkor használja az automatikus betanítást az App Service-ben, ha nem használja az OpenTelemetria manuális rendszerezését a kódban, például az Azure Monitor OpenTelemetry Distro-t vagy az Azure Monitor OpenTelemetry-exportőrt. Az automatikus beépítés a manuális rendszerállapoton felül ismétlődő telemetriát okozhat, és növelheti a költségeket. Az App Service OpenTelemetria autoinstrumentációjának használatához először távolítsa el az OpenTelemetria manuális rendszerezését a kódból.
Hiányzó telemetria
Ha nem rendelkezik telemetriával, kövesse az alábbi lépéseket annak ellenőrzéséhez, hogy az autoinstrumentáció megfelelően van-e engedélyezve.
1. lépés: Az App Service-erőforrás Alkalmazás Elemzések paneljének ellenőrzése
Győződjön meg arról, hogy az automatikus beléptetés engedélyezve van az App Service-erőforrás Alkalmazás Elemzések paneljén:
2. lépés: Győződjön meg arról, hogy az alkalmazás Gépház helyesek
Győződjön meg arról, hogy az ApplicationInsightsAgent_EXTENSION_VERSION
alkalmazás beállítása értékre ~3
van állítva, és hogy a APPLICATIONINSIGHTS_CONNECTION_STRING
megfelelő alkalmazás Elemzések erőforrásra mutat.
3. lépés: Az autoinstrumentáció diagnosztikáinak és állapotnaplóinak ellenőrzése
Lépjen a /var/log/applicationinsights/ lapra, és nyissa meg status_*.json.
Győződjön meg arról, hogy AgentInitializedSuccessfully
igaz értékre van állítva, és IKey
érvényes iKey-azonosítóval rendelkezik.
Íme egy példa JSON-fájlra:
"AgentInitializedSuccessfully":true,
"AppType":"python",
"MachineName":"c89d3a6d0357",
"PID":"47",
"IKey":"00000000-0000-0000-0000-000000000000",
"SdkVersion":"1.0.0"
Az applicationinsights-extension.log
ugyanabban a mappában lévő fájl más hasznos diagnosztikát is megjeleníthet.
Django-alkalmazások
Ha az alkalmazás Django-t használ, és vagy nem indul el, vagy helytelen beállításokat használ, győződjön meg arról, hogy beállítja a környezeti változót DJANGO_SETTINGS_MODULE
. A részletekért tekintse meg a Django Instrumentation szakaszt .
Az alkalmazásgazda és a betöltési szolgáltatás közötti kapcsolat tesztelése
Az alkalmazás Elemzések SDK-k és ügynökök telemetriát küldenek, hogy REST-hívásként betöltse a betöltési végpontokat. A webkiszolgálóról vagy az alkalmazásgazdagépről a betöltési szolgáltatás végpontjaihoz való kapcsolódást a PowerShellből vagy curl parancsokból származó nyers REST-ügyfelek használatával tesztelheti. Tekintse meg az Azure Monitor-alkalmazás Elemzések hiányzó alkalmazástelemetria hibaelhárítását.
A legújabb frissítések és hibajavításokért tekintse meg a kibocsátási megjegyzéseket. -->
Következő lépések
- Az Azure-diagnosztika elküldése az Alkalmazás Elemzések
- A szolgáltatás állapotmetrikáinak monitorozása annak érdekében, hogy a szolgáltatás elérhető és rugalmas legyen
- Riasztási értesítések fogadása, ha működési események történnek, vagy a metrikák átlépik a küszöbértéket
- Rendelkezésre állás áttekintése