Alkalmazásfigyelés Azure App Service és ASP.NET

Az Azure ASP.NET futó, App Services webalkalmazások monitorozásának engedélyezése mostantól minden másnál egyszerűbb. Míg korábban manuálisan kellett beállítania az alkalmazást, a legújabb bővítmény/ügynök alapértelmezés szerint be van építve App Service rendszerképbe. Ez a cikk bevezető az application Insights Azure Monitor engedélyezéséhez, valamint előzetes útmutatást nyújt a nagy léptékű üzembe helyezés folyamatának automatizálásához.

Megjegyzés

A webhelybővítmények fejlesztői Application Insights keresztüli manuális hozzáadása > elavult. Ez a bővítménytelepítési módszer az egyes új verziók manuális frissítéseit is befolyásolja. A bővítmény legújabb, stabil kiadása már előre telepítette a App Service részeként. A fájlok a helyen találhatók, d:\Program Files (x86)\SiteExtensions\ApplicationInsightsAgent és minden stabil kiadással automatikusan frissülnek. Ha az alábbi, ügynökalapú utasításokat követve engedélyezi a monitorozást, az automatikusan eltávolítja az elavult bővítményt.

Megjegyzés

Ha a rendszer ügynökalapú monitorozást és manuális SDK-alapú rendszerműveleteket is észlel, csak a manuális rendszer-beállítási beállításokat fogja a rendszer. Ez megakadályozza a duplikált adatok elküldét. További információért tekintse meg az alábbi hibaelhárítási szakaszt.

Ügynökalapú figyelés engedélyezése

Megjegyzés

A APPINSIGHTS_JAVASCRIPT_ENABLED urlCompression együttes használata nem támogatott. További információért tekintse meg a hibaelhárítással kapcsolatos szakasz magyarázatát.

  1. Válassza Application Insights app service-hez az Azure vezérlőpultját, majd válassza az Engedélyezés lehetőséget.

    Képernyőkép a Application Insights az engedélyezés lehetőségről.

  2. Hozzon létre egy új erőforrást, vagy válasszon ki egy meglévő Application Insights az alkalmazáshoz.

    Megjegyzés

    Amikor az OK gombra kattint az új erőforrás létrehozásához, a rendszer a figyelési beállítások alkalmazását kéri. A Folytatás lehetőség Application Insights az új erőforrást az App Service-hez, ezzel egyben elindítja az App Service újraindítását is.

    Képernyőkép az Erőforrás módosítása legördülő menüről.

  3. A használni kívánt erőforrás megadása után kiválaszthatja, hogy az Application Insights hogyan gyűjtsön adatokat platformonként az alkalmazáshoz. ASP.NET alkalmazásfigyelés alapértelmezés szerint két különböző gyűjtési szinttel van beállítva.

    A webhelybővítmények Application Insights képernyőképe az Új erőforrás létrehozása beállítással.

    Az alábbiakban az egyes útvonalakhoz gyűjtött adatok összegzése látható:

    Adatok ASP.NET alapszintű gyűjtemény ASP.NET ajánlott gyűjtemény
    Processzor-, memória- és I/O-használati trendek hozzáadása Igen Igen
    Használati trendek gyűjtése, a rendelkezésreállási eredmények és a tranzakciók összevetése Igen Igen
    A gazdafolyamat által nem kezelt kivételek gyűjtése Igen Igen
    Az APM-metrikák pontosságának növelése terhelés alatt, mintavételezés használatakor Igen Igen
    Mikroszolgáltatások összevetése kérési és függőségi határokon keresztül Nem (csak egypéldányos APM-képességek) Igen
  4. A mintavételezés konfigurálásához, amelyet korábban a applicationinsights.config-fájllal vezérelhet, most már használhatja azt az Alkalmazásbeállításokban a megfelelő MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor előtaggal.

    • A kezdeti mintavételezés százalékos arányának beállításához például létrehozhat egy Alkalmazás beállítást a következő MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage értékkel: és 100 értéket.

    • A mintavételezés letiltásához állítsa MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage a értéket 100 értékre.

    • A támogatott beállítások a következők:

      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_EvaluationInterval
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MaxTelemetryItemsPerSecond
    • A támogatott adaptív mintavételezési telemetriai processzor beállításainak és definícióinak listáját a kód- és mintavételezési dokumentációban találhatja meg.

Ügyféloldali figyelés engedélyezése

Az ügyféloldali figyelés az ügyféloldali figyelés ASP.NET. Az ügyféloldali figyelés engedélyezése:

  • Beállítások > Konfiguráció
    • Az Alkalmazásbeállítások alatt hozzon létre egy új alkalmazásbeállítást:

      Név: APPINSIGHTS_JAVASCRIPT_ENABLED

      Érték: true

    • Mentse a beállításokat, és indítsa újra az alkalmazást.

Az ügyféloldali figyelés letiltásához távolítsa el a társított kulcs-érték párt az Alkalmazásbeállításokból, vagy állítsa false (hamis) értékre.

Monitorozás automatizálása

Ha engedélyezni szeretné a telemetriai adatok gyűjtését Application Insights, csak az Alkalmazásbeállításokat kell beállítania:

Az alkalmazásbeállítások App Service képernyőképe a Application Insights beállításokkal.

Alkalmazásbeállítások definíciói

Alkalmazásbeállítás neve Definíció Érték
ApplicationInsightsAgent_EXTENSION_VERSION A futásidejű monitorozást vezérlő fő bővítmény. ~2
XDT_MicrosoftApplicationInsights_Mode Az alapértelmezett módban csak az alapvető funkciók vannak engedélyezve az optimális teljesítmény biztosítása érdekében. default vagy recommended.
InstrumentationEngine_EXTENSION_VERSION Azt szabályozza, hogy a bináris átírási motor InstrumentationEngine be legyen-e kapcsolva. Ez a beállítás hatással van a teljesítményre, és hatással van a hidegindítási/indítási időre. ~1
XDT_MicrosoftApplicationInsights_BaseExtensions Azt szabályozza, & sql-táblák Azure-táblaszövegét a függőségi hívásokkal együtt rögzíti-e a program. Teljesítményre vonatkozó figyelmeztetés: Az alkalmazás hidegen való indítási ideje is érintett lesz. Ehhez a beállításhoz szükség van a InstrumentationEngine következőre: . ~1

App Service alkalmazásbeállítások konfigurálása a Azure Resource Manager

Az alkalmazásbeállítások App Services a sablonokkal kezelhetők és Azure Resource Manager konfigurálhatóak. Ez a módszer használható új virtuális App Service üzembe helyezésekor Azure Resource Manager automatizálással, vagy a meglévő erőforrások beállításainak módosításához.

Az app service-hez az alkalmazásbeállítások JSON-beli alapvető szerkezete az alábbi:

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

Ez a Azure Resource Manager konfigurált alkalmazásbeállításokkal Application Insights mintasablon hasznos lehet, különösen a 238.sortól kezdődő szakasz.

Ha olyan Azure Resource Manager sablont hoz létre, amely az összes alapértelmezett Application Insights-beállítást konfigurálta, kezdje el a folyamatot úgy, mintha egy új webalkalmazást hoz létre engedélyezett Application Insights beállításokkal.

  1. Hozzon létre egy App Service erőforrást a kívánt webalkalmazás-információkkal. Engedélyezett Application Insights a Figyelés lapon.

  2. Válassza az Áttekintés +létrehozás, majd az alul található Automatizálási sablon letöltése lehetőséget.

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

    Ez a beállítás létrehozza a Azure Resource Manager sablont, és konfigurálja az összes szükséges beállítást.

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

Az alábbi példában cserélje le az összes példányát AppMonitoredSite a webhely nevére:

{
    "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 PowerShellen keresztül

Az alkalmazás PowerShellen keresztüli monitorozásának engedélyezéséhez csak a mögöttes alkalmazásbeállításokat kell módosítani. Az alábbi példa lehetővé teszi az "AppMonitoredSite" nevű webhely alkalmazásfigyelését az "AppMonitoredRG" erőforráscsoportban, és konfigurálja, hogy az adatokat a rendszer elküldje a "012345678-abcd-ef01-2345-6789abcd" rendszerképkulcsnak.

Megjegyzés

Ez a cikk frissült az Azure Az PowerShell-moduljának használatával. Mostantól az Az PowerShell-modul használatát javasoljuk az Azure-ral folytatott interakciókhoz. Az Az PowerShell-modul használatának megkezdéséhez lásd 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.

$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

Figyelési bővítmény/ügynök frissítése – .NET

Frissítés a 2.8.9-es és újabb verziókról

A 2.8.9-es verzióról való frissítés automatikusan, további műveletek nélkül történik. Az új figyelési bitek a háttérben lesznek kézbesítve a célalkalmazás-szolgáltatásnak, és az alkalmazás újraindításakor a rendszer fel fogja őket fogni.

A futtatott bővítmény verziójának ellenőrzéshez tekintse meg a következőt: https://yoursitename.scm.azurewebsites.net/ApplicationInsights .

Képernyőkép az URL-címről a futtatott bővítmény verziójának ellenőrzéséhez.

Frissítés az 1.0.0–2.6.5-ös verzióról

A 2.8.9-es verziótól kezdve a rendszer az előre telepített helybővítményt használja. Ha Ön korábbi verzió, kétféleképpen frissíthet:

Ha a frissítés a 2.5.1-esnél korábbi verzióról történik, ellenőrizze, hogy az ApplicationInsigths dll-fájlok el vannak-e távolítva az alkalmazás bin mappából, tekintse meg a hibaelhárítási lépéseket.

Hibaelhárítás

Az alábbiakban részletes hibaelhárítási útmutatót olvashat az Azure ASP.NET-on futó, bővítmény-/ügynökalapú App Services.

  1. Ellenőrizze, ApplicationInsightsAgent_EXTENSION_VERSION hogy az alkalmazásbeállítás értéke "~2".

  2. Nyissa meg a következő címet: https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

    A fenti eredményoldalon látható hivatkozás képernyőképe.

    • Győződjön meg arról, hogy Application Insights Extension Status a Pre-Installed Site Extension, version 2.8.x.xxxx, is running.

      Ha nem fut, kövesse az Application Insights utasításokat.

    • Győződjön meg arról, hogy az állapotforrás létezik, és így néz ki: Status source D:\home\LogFiles\ApplicationInsights\status\status_RD0003FF0317B6_4248_1.json

      Ha nincs hasonló érték, az azt jelenti, hogy az alkalmazás jelenleg nem fut vagy nem támogatott. Az alkalmazás futásának biztosításához próbálja meg manuálisan felkeresni az alkalmazás URL-címét/alkalmazásvégpontját, hogy a futtatókörnyezet adatai elérhetővé válnak.

    • Győződjön meg arról, hogy a ha az , adja hozzá a és a et az IKeyExists true false APPINSIGHTS_INSTRUMENTATIONKEY APPLICATIONINSIGHTS_CONNECTION_STRING ikey GUID azonosítóval az alkalmazásbeállításokhoz.

    • Győződjön meg arról, hogy nincsenek bejegyzések a következő hez: AppAlreadyInstrumented AppContainsDiagnosticSourceAssembly , és AppContainsAspNetTelemetryCorrelationAssembly .

      Ha a bejegyzések bármelyike létezik, távolítsa el a következő csomagokat az alkalmazásból: Microsoft.ApplicationInsights , System.Diagnostics.DiagnosticSource és Microsoft.AspNet.TelemetryCorrelation .

A webalkalmazásokkal üzembe helyezett alapértelmezett webhely nem támogatja az automatikus ügyféloldali figyeléseket

Amikor létrehoz egy webalkalmazást az Azure-beli App Services üzembe helyez egy statikus ASP.NET HTML-oldalt kezdő webhelyként. A statikus weblap egy felügyelt ASP.NET is betölt az IIS-be. Ez lehetővé teszi a kód nélküli kiszolgálóoldali figyelés tesztelését, de nem támogatja az automatikus ügyféloldali figyeléseket.

Ha kód nélküli kiszolgáló- és ügyféloldali monitorozást szeretne tesztelni az ASP.NET-hoz egy Azure App Services-webalkalmazásban, javasoljuk, hogy kövesse az ASP.NET Framework-webalkalmazások létrehozásához szükséges hivatalos útmutatókat, majd használja az aktuális cikkben található utasításokat a monitorozás engedélyezéséhez.

APPINSIGHTS_JAVASCRIPT_ENABLED és urlCompression nem támogatott

Ha a APPINSIGHTS_JAVASCRIPT_ENABLED=true paramétert használja olyan esetekben, amikor a tartalom kódolva van, a következő hibákat okozhatja:

  • 500 URL-átírási hiba
  • Az 500.53 URL-átírási modul a kimenő újraírási szabályokkal hibaüzenettel együtt nem alkalmazható, ha a HTTP-válasz tartalma kódolva van ("gzip").

Ennek az az oka, APPINSIGHTS_JAVASCRIPT_ENABLED alkalmazás beállítása igazra van állítva, és a tartalomkódolás egyszerre van jelen. Ez a forgatókönyv még nem támogatott. Megkerülő megoldásként eltávolíthatja a APPINSIGHTS_JAVASCRIPT_ENABLED az alkalmazásbeállításokból. Sajnos ez azt jelenti, hogy ha továbbra is szükség van ügyféloldali/böngészőoldali JavaScript-eszközökre, manuális SDK-referenciákra van szükség a weblapok esetében. Kövesse az utasításokat a JavaScript SDK manuális beállításához.

Az ügynök/bővítmény legfrissebb Application Insights tekintse meg a kibocsátási megjegyzéseket.

Kapcsolati sztring és eszközkulcs

Kód nélküli figyelés használata esetén csak a kapcsolati sztringre van szükség. Javasoljuk azonban a rendszerelemkulcs beállítását is, hogy a manuális rendszerbeállítás során is megőrizze a visszamenőleges kompatibilitást az SDK régebbi verzióival.

Mi a különbség az Application Elemzések és Azure App Service standard metrikák között?

Az Elemzések telemetriai adatokat gyűjt az alkalmazásnak átkért kérelmekről. Ha a hiba a WebApps/WebServer szolgáltatásban történt, és a kérés nem éri el a felhasználói alkalmazást, akkor az Application Elemzések nem fog telemetriai adatokat gyűjteni róla.

Az Application Elemzések által kiszámított időtartam nem feltétlenül egyezik meg a kiszolgáló válaszidevel, serverresponsetime amelyet a Web Apps. Ennek az az oka Elemzések hogy az Application 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/várólistára kerül a WebServerben, a webalkalmazás-metrikák tartalmazzák a várakozási időt, az Application Elemzések metrikákban azonban nem.

A PHP és a WordPress nem támogatott

A PHP- és a WordPress-webhelyek nem támogatottak. Jelenleg nincs hivatalosan támogatott SDK/ügynök a számítási feladatok kiszolgálóoldali figyeléséhez. Azonban az ügyféloldali tranzakciók PHP- vagy WordPress-webhelyen való manuális rendszerezése az ügyféloldali JavaScript weboldalakhoz való hozzáadásával a JavaScript SDK-val valósítható meg.

Az alábbi táblázat részletesebb magyarázatot nyújt az értékek jelentésére, azok mögöttes okaira és a javasolt javításokra:

Probléma értéke Magyarázat Javítás
AppAlreadyInstrumented:true Ez az érték azt jelzi, hogy a bővítmény azt észlelte, hogy az SDK bizonyos aspektusa már jelen van az alkalmazásban, és vissza fog állni. Ennek oka lehet egy , vagy System.Diagnostics.DiagnosticSource Microsoft.AspNet.TelemetryCorrelation``Microsoft.ApplicationInsights Távolítsa el a hivatkozásokat. Ezen hivatkozások némelyike alapértelmezés szerint hozzá van adva bizonyos Visual Studio sablonokból, a régebbi Visual Studio pedig hivatkozhatnak a Microsoft.ApplicationInsights fájlra.
AppAlreadyInstrumented:true Ha az alkalmazás ASP.NET Core 2.1-et vagy 2.2-t céloz meg, ez az érték azt jelzi, hogy a bővítmény azt észlelte, hogy az SDK bizonyos aspektusa már jelen van az alkalmazásban, és vissza fog állni A .NET Core 2.1,2.2-es Microsoft.AspNetCore.App ajánlott inkább metacsomagot használni. Emellett kapcsolja be a portálon az "Interop with Application Insights SDK" (Az sdk-val való Application Insights) (lásd a fenti utasításokat).
AppAlreadyInstrumented:true Ezt az értéket az is okozhatja, hogy a fenti dll-fájlok jelen vannak az alkalmazás mappájában egy korábbi telepítésből. Az alkalmazás mappájának megtisztításán keresztül győződjön meg arról, hogy a dll-fájlok el vannak távolítva. Ellenőrizze a helyi alkalmazás bin könyvtárát és a wwwroot könyvtárat a App Service. (A App Service-webalkalmazás wwwroot könyvtárának ellenőrzése: Advanced Tools (Kudu) > Debug console > CMD > home\site\wwwroot).
AppContainsAspNetTelemetryCorrelationAssembly: true Ez az érték azt jelzi, hogy a bővítmény hivatkozásokat észlelt az alkalmazásban, és vissza Microsoft.AspNet.TelemetryCorrelation fog menni. Távolítsa el a hivatkozást.
AppContainsDiagnosticSourceAssembly**:true Ez az érték azt jelzi, hogy a bővítmény hivatkozásokat észlelt az alkalmazásban, és vissza System.Diagnostics.DiagnosticSource fog menni. A ASP.NET távolítsa el a hivatkozást.
IKeyExists:false Ez az érték azt jelzi, hogy a eszközkulcs nincs jelen az AppSetting (Alkalmazás-beállítás) APPINSIGHTS_INSTRUMENTATIONKEY beállításban. Lehetséges okok: Előfordulhat, hogy az értékek véletlenül el lett távolítva, elfelejtette beállítani az értékeket az Automation-szkriptben stb. Győződjön meg arról, hogy a beállítás meg van jelen App Service alkalmazásbeállítások között.

Kibocsátási megjegyzések

A legújabb frissítésekért és hibajavításokért tekintse meg a kibocsátási megjegyzéseket.

Következő lépések