Monitorování aplikací pro Azure App Service a ASP.NET

Povolení monitorování v ASP Webové aplikace založené na technologii NET běžící na službě Aplikace Azure Service jsou teď jednodušší než kdy dřív. Dříve jste museli aplikaci instrumentovat ručně. Nejnovější rozšíření nebo agent je teď ve výchozím nastavení integrovaný do image služby App Service. Tento článek vás provede povolením monitorování Přehledy aplikací služby Azure Monitor a předběžnými pokyny k automatizaci procesu rozsáhlých nasazení.

Poznámka:

Ruční přidání rozšíření aplikace Přehledy webu prostřednictvím rozšíření Vývoj Tools>je zastaralé. Tato metoda instalace rozšíření byla závislá na ručních aktualizacích pro každou novou verzi. Nejnovější stabilní verze rozšíření je teď předinstalovaná jako součást image služby App Service. Soubory jsou umístěné ve složce d:\Program Files (x86)\SiteExtensions\Application Přehledy Agent a automaticky se aktualizují o každou stabilní verzi. Pokud budete postupovat podle pokynů k automatické aktivaci monitorování, automaticky se odebere zastaralé rozšíření za vás.

Pokud se zjistí monitorování automatického a ručního instrumentace založené na sadě SDK, bude dodrženo pouze nastavení ruční instrumentace. Toto uspořádání zabraňuje odesílání duplicitních dat. Další informace najdete v části Řešení potíží.

Poznámka:

Podpora příjmu dat založeného na instrumentačním klíči skončí 31. března 2025. Příjem klíčů instrumentace bude dál fungovat, ale už nebudeme poskytovat aktualizace ani podporu pro tuto funkci. Přechod na připojovací řetězec, abyste mohli využívat nové funkce.

Povolení automatického monitorování

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

Poznámka:

Kombinace APPINSIGHTS_JAVASCRIPT_ENABLED a urlCompression není podporovaná. Další informace najdete v vysvětlení v části Řešení potíží.

  1. V ovládacím panelu Azure pro vaši službu App Service vyberte Přehledy Aplikace. Pak vyberte Povolit.

    Snímek obrazovky znázorňující kartu 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 výběru Použít nastavení monitorování. Výběrem možnosti Pokračovat prodávejte 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. Po určení, který prostředek se má použít, můžete zvolit, jak má aplikace Přehledy shromažďovat data pro každou platformu pro vaši aplikaci. ASP.NET monitorování aplikací je ve výchozím nastavení zapnuté se dvěma různými úrovněmi kolekce.

    Snímek obrazovky znázorňující stránku Rozšíření webu Přehledy aplikace s vybranou možností Vytvořit nový prostředek

    Následující tabulka shrnuje data shromážděná pro každou trasu.

    Data základní kolekce ASP.NET doporučená kolekce ASP.NET
    Přidání trendů využití procesoru, paměti a vstupně-výstupních operací No Ano
    Shromažďování trendů využití a povolení korelace mezi výsledky dostupnosti a transakcemi Ano Yes
    Shromažďování výjimek nezpracovaných hostitelským procesem Ano Yes
    Zlepšení přesnosti metrik APM v případě zatížení při použití vzorkování Ano Yes
    Korelace mikroslužeb napříč požadavky a závislostmi Ne (pouze funkce APM s jednou instancí) Ano
  4. Pokud chcete nakonfigurovat vzorkování, které byste mohli dříve řídit prostřednictvím souboru applicationinsights.config , můžete s ním nyní pracovat prostřednictvím nastavení aplikace s odpovídající předponou MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor.

    • Pokud chcete například změnit počáteční procento vzorkování, můžete vytvořit nastavení MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage aplikace a hodnotu 100.

    • Pokud chcete vzorkování zakázat, nastavte MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage hodnotu 100.

    • Mezi podporovaná nastavení patří:

      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_EvaluationInterval
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MaxTelemetryItemsPerSecond
    • Seznam podporovaných nastavení a definic procesoru telemetrie adaptivního vzorkování najdete v dokumentaci ke kódu a vzorkování.

Povolení monitorování na straně klienta

Monitorování na straně klienta je výslovný souhlas s ASP.NET. Povolení monitorování na straně klienta:

  1. Vyberte Nastavení>Konfigurace.

  2. V části Nastavení aplikace vytvořte nové nastavení aplikace:

    • Název: Zadejte APPINSIGHTS_JAVASCRIPT_ENABLED.
    • Hodnota: Zadejte true.
  3. Uložte nastavení a restartujte aplikaci.

Pokud chcete zakázat monitorování na straně klienta, odeberte z nastavení aplikace přidružený pár hodnot klíče nebo nastavte hodnotu na false.

Automatizace monitorování

Pokud chcete povolit shromažďování telemetrických dat pomocí Přehledy aplikace, je potřeba nastavit jenom nastavení aplikace.

Snímek obrazovky znázorňující nastavení aplikace služby App Service s nastavením Přehledy aplikace

Definice nastavení aplikace

Název nastavení aplikace Definice Hodnota
ApplicationInsightsAgent_EXTENSION_VERSION Hlavní rozšíření, které řídí monitorování modulu runtime. ~2
XDT_MicrosoftApplicationInsights_Mode Ve výchozím režimu jsou povoleny pouze základní funkce, které zajistí optimální výkon. default nebo recommended
InstrumentationEngine_EXTENSION_VERSION Určuje, jestli bude zapnutý modul binárního přepisu InstrumentationEngine . Toto nastavení má vliv na výkon a ovlivňuje dobu studeného spuštění a spuštění. ~1
XDT_MicrosoftApplication Přehledy_BaseExtensions Určuje, jestli se text tabulky SQL a Azure zachytí spolu s voláními závislostí. Upozornění na výkon: Doba studeného spuštění aplikace bude ovlivněna. Toto nastavení vyžaduje .InstrumentationEngine ~1

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

Upgrade rozšíření monitorování nebo agenta: .NET

Upgrade z verze 2.8.9 a novější

Upgrade z verze 2.8.9 probíhá automaticky bez dalších akcí. Nové monitorovací bity se do cílové služby App Service doručují na pozadí. Při restartování aplikace se vyberou.

Pokud chcete zkontrolovat, jakou verzi rozšíření používáte, přejděte na https://yoursitename.scm.azurewebsites.net/ApplicationInsightsstránku .

Snímek obrazovky znázorňující cestu URL ke kontrole verze rozšíření, které používáte

Upgrade z verze 1.0.0 – 2.6.5

Počínaje verzí 2.8.9 se používá předinstalované rozšíření webu. Pokud používáte starší verzi, můžete ji aktualizovat jedním ze dvou způsobů:

Pokud se upgrade provádí z verze starší než 2.5.1, zkontrolujte, jestli jsou knihovny DLL Přehledy aplikace odebrány ze složky přihrádky aplikace. Další informace najdete v postupu v části Řešení potíží.

Řešení problému

Poznámka:

Když vytvoříte webovou aplikaci s ASP.NET moduly runtime ve službě App Service, nasadí jako úvodní web jednu statickou stránku HTML. Nedoporučujeme řešit potíže s výchozí šablonou. Před řešením problému nasaďte aplikaci.

Tady je náš podrobný průvodce odstraňováním potíží pro monitorování založené na rozšíření nebo agentech pro ASP. Aplikace založené na technologii NET spuštěné ve službě App Service.

  1. Zkontrolujte, jestli ApplicationInsightsAgent_EXTENSION_VERSION je nastavení aplikace nastavené na hodnotu ~2.

  2. Přejděte na https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

    Snímek obrazovky zobrazující stránku s výsledky předchozího odkazu

    • Ověřte, že Application Insights Extension Status je Pre-Installed Site Extension, version 2.8.x.xxxx a je spuštěný.

      Pokud není spuštěný, povolte monitorování Přehledy aplikací podle pokynů.

    • Ověřte, že zdroj stavu existuje a vypadá takto Status source D:\home\LogFiles\ApplicationInsights\status\status_RD0003FF0317B6_4248_1.json.

      Pokud podobná hodnota není dostupná, znamená to, že aplikace není aktuálně spuštěná nebo není podporovaná. Pokud chcete zajistit, že je aplikace spuštěná, zkuste ručně navštívit adresu URL aplikace nebo koncové body aplikace, což umožní zpřístupnění informací modulu runtime.

    • Potvrďte, že IKeyExists je true. Pokud ne, přidejte APPINSIGHTS_INSTRUMENTATIONKEY identifikátor GUID instrumentačního klíče do nastavení aplikace.APPLICATIONINSIGHTS_CONNECTION_STRING

    • Potvrďte, že neexistují žádné položky pro AppAlreadyInstrumented, AppContainsDiagnosticSourceAssemblya AppContainsAspNetTelemetryCorrelationAssembly.

      Pokud některá z těchto položek existuje, odeberte z aplikace následující balíčky: Microsoft.ApplicationInsights, System.Diagnostics.DiagnosticSourcea Microsoft.AspNet.TelemetryCorrelation.

Výchozí web nasazený s webovými aplikacemi nepodporuje automatické monitorování na straně klienta

Když vytvoříte webovou aplikaci s ASP.NET moduly runtime ve službě App Service, nasadí jako úvodní web jednu statickou stránku HTML. Statická webová stránka také načte ASP. Webová část spravovaná technologií NET ve službě IIS Tato stránka umožňuje testování monitorování na straně serveru bez kódu, ale nepodporuje automatické monitorování na straně klienta.

Pokud chcete otestovat monitorování bez kódu serveru a na straně klienta pro ASP.NET ve webové aplikaci služby App Service, doporučujeme postupovat podle oficiálních příruček k vytvoření webové aplikace ASP.NET Framework. Pak pomocí pokynů v aktuálním článku povolte monitorování.

APPINSIGHTS_JAVASCRIPT_ENABLED a urlCompression se nepodporují.

Pokud používáte APPINSIGHTS_JAVASCRIPT_ENABLED=true v případech, kdy je obsah kódovaný, můžou se zobrazit chyby jako:

  • Chyba přepsání adresy URL 500
  • Chyba modulu přepsání adresy URL 500.53 se zprávou "Pravidla odchozího přepisu se nedají použít, když je obsah odpovědi HTTP kódovaný ('gzip')."

K chybě dochází, protože APPINSIGHTS_JAVASCRIPT_ENABLED nastavení aplikace je nastaveno na true a kódování obsahu je k dispozici ve stejnou dobu. Tento scénář se zatím nepodporuje. Alternativním řešením je odebrat APPINSIGHTS_JAVASCRIPT_ENABLED z nastavení aplikace. Pokud je instrumentace JavaScriptu na straně klienta nebo prohlížeče stále nutná, jsou pro webové stránky potřeba ruční odkazy na sadu SDK. Postupujte podle pokynů pro ruční instrumentaci pomocí sady JavaScript SDK.

Nejnovější informace o agentu nebo rozšíření aplikace Přehledy najdete v poznámkách k verzi.

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.

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.

PHP a WordPress nejsou podporovány.

Weby PHP a WordPress nejsou podporované. Pro monitorování těchto úloh na straně serveru v současné době neexistuje žádná oficiálně podporovaná sada SDK/agent. Transakce na straně klienta můžete na webu PHP nebo WordPress ručně instrumentovat přidáním JavaScriptu na straně klienta do webových stránek pomocí sady JavaScript SDK.

Následující tabulka obsahuje podrobnější vysvětlení, co tyto hodnoty znamenají, jejich základní příčiny a doporučené opravy.

Hodnota problému Vysvětlení Oprava
AppAlreadyInstrumented:true Tato hodnota označuje, že rozšíření zjistilo, že v aplikaci už existuje určitý aspekt sady SDK a že se vrátí zpět. Může to být způsobeno odkazem na System.Diagnostics.DiagnosticSource, Microsoft.AspNet.TelemetryCorrelationnebo Microsoft.ApplicationInsights. Odeberte odkazy. Některé z těchto odkazů se ve výchozím nastavení přidávají z určitých šablon sady Visual Studio. Starší verze sady Visual Studio můžou přidávat odkazy na Microsoft.ApplicationInsights.
AppAlreadyInstrumented:true Tato hodnota může být způsobena také přítomností předchozích knihoven DLL ve složce aplikace z předchozího nasazení. Vyčistěte složku aplikace a ujistěte se, že jsou tyto knihovny DLL odebrány. Zkontrolujte adresář bin vaší místní aplikace i adresář wwwroot v prostředku služby App Service. Pokud chcete zkontrolovat adresář wwwroot webové aplikace služby App Service, vyberte Advanced Tools (Kudu)>Konzola ladění>CMD>home\site\wwwroot.
AppContainsAspNetTelemetryCorrelationAssembly: true Tato hodnota označuje, že rozšíření zjistilo odkazy na Microsoft.AspNet.TelemetryCorrelation v aplikaci a vrátí se zpět. Odeberte odkaz.
AppContainsDiagnosticSourceAssembly**:true Tato hodnota označuje, že rozšíření zjistilo odkazy na System.Diagnostics.DiagnosticSource v aplikaci a vrátí se zpět. Pro ASP.NET odeberte odkaz.
IKeyExists:false Tato hodnota označuje, že v nastavení APPINSIGHTS_INSTRUMENTATIONKEYaplikace není k dispozici instrumentační klíč. Možné příčiny můžou být, že se hodnoty omylem odebraly, nebo jste zapomněli nastavit hodnoty ve skriptu automatizace. Ujistěte se, že je nastavení v nastavení aplikace služby App Service.

System.IO.FileNotFoundException po upgradu 2.8.44

Verze 2.8.44 autoinstrumentace upgraduje sadu Application Přehledy SDK na 2.20.0. Sada Application Přehledy SDK má nepřímý odkaz prostřednictvím System.Runtime.CompilerServices.Unsafe.dllSystem.Diagnostics.DiagnosticSource.dll. Pokud má aplikace přesměrování vazby a System.Runtime.CompilerServices.Unsafe.dll pokud tato knihovna není ve složce aplikace, může dojít k vyvolání System.IO.FileNotFoundException.

Pokud chcete tento problém vyřešit, odeberte položku přesměrování vazby ze System.Runtime.CompilerServices.Unsafe.dll souboru web.config. Pokud aplikace chtěla použít System.Runtime.CompilerServices.Unsafe.dll, nastavte přesměrování vazby, jak je znázorněno tady:

<dependentAssembly>
	<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
	<bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
</dependentAssembly>

Jako dočasné alternativní řešení můžete nastavit nastavení ApplicationInsightsAgent_EXTENSION_VERSION aplikace na hodnotu 2.8.37. Toto nastavení aktivuje službu App Service, aby používala staré rozšíření Přehledy aplikace. Dočasné zmírnění rizik by se mělo používat pouze jako dočasné.

Poznámky k verzi

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

Další kroky