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:

Felszereltség Támogatott tár neve Támogatott verziók
OpenTelemetry Django Instrumentation django Link
OpenTelemetry FastApi Instrumentation fastapi Link
OpenTelemetry Flask Instrumentation flask Link
OpenTelemetry Psycopg2 Instrumentation psycopg2 Link
OpenTelemetry Requests Instrumentation requests Link
OpenTelemetry UrlLib Instrumentation urllib Mind
OpenTelemetry UrlLib3 Instrumentation urllib3 Link

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ó.

  1. 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.

    Képernyőkép az Alkalmazás Elemzések lapról, amelyen az engedélyezés van kiválasztva.

  2. 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.

    Képernyőkép az erőforrás legördülő listájának módosításáról.

  3. Megadhatja az erőforrást, és készen áll a használatra.

    Képernyőkép az alkalmazás eszközéről.

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:

Képernyőkép az App Service-alkalmazás Gépház az elérhető alkalmazás Elemzések beállításaival.

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.

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.

  1. 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.

  2. 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.

    Képernyőkép az App Service webalkalmazás-létrehozási menüjéről.

    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.

    Képernyőkép egy App Service-webalkalmazás-sablonról.

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 AppMonitoredRGhí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:

Képernyőkép az Alkalmazás Elemzések lapról, amelyen az engedélyezés van kiválasztva.

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.

Képernyőkép az App Service-alkalmazás Gépház az elérhető alkalmazás Elemzések beállításaival.

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