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íží.
V ovládacím panelu Azure pro vaši službu App Service vyberte Přehledy Aplikace. 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 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.
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.
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 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 hodnotu100
.Pokud chcete vzorkování zakázat, nastavte
MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage
hodnotu100
.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:
Vyberte Nastavení>Konfigurace.
V části Nastavení aplikace vytvořte nové nastavení aplikace:
- Název: Zadejte APPINSIGHTS_JAVASCRIPT_ENABLED.
- Hodnota: Zadejte true.
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.
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.
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
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/ApplicationInsights
stránku .
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ů:
Upgrade můžete provést povolením prostřednictvím portálu: I když máte nainstalované rozšíření Application Přehledy pro App Service. Uživatelské rozhraní zobrazuje pouze tlačítko Povolit . Na pozadí se odebere staré rozšíření privátního webu.
Upgrade prostřednictvím PowerShellu:
- Nastavte nastavení aplikace tak, aby povolovala předinstalované rozšíření
ApplicationInsightsAgent
webu . Další informace najdete v tématu Povolení prostřednictvím PowerShellu. - Ručně odeberte rozšíření privátního webu s názvem Application Přehledy rozšíření pro App Service.
- Nastavte nastavení aplikace tak, aby povolovala předinstalované rozšíření
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.
Zkontrolujte, jestli
ApplicationInsightsAgent_EXTENSION_VERSION
je nastavení aplikace nastavené na hodnotu~2
.Přejděte na
https://yoursitename.scm.azurewebsites.net/ApplicationInsights
.Ověřte, že
Application Insights Extension Status
jePre-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
jetrue
. Pokud ne, přidejteAPPINSIGHTS_INSTRUMENTATIONKEY
identifikátor GUID instrumentačního klíče do nastavení aplikace.APPLICATIONINSIGHTS_CONNECTION_STRING
Potvrďte, že neexistují žádné položky pro
AppAlreadyInstrumented
,AppContainsDiagnosticSourceAssembly
aAppContainsAspNetTelemetryCorrelationAssembly
.Pokud některá z těchto položek existuje, odeberte z aplikace následující balíčky:
Microsoft.ApplicationInsights
,System.Diagnostics.DiagnosticSource
aMicrosoft.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.TelemetryCorrelation nebo 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_INSTRUMENTATIONKEY aplikace 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.dll
System.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
- Spusťte profiler v živé aplikaci.
- Monitorování služby Azure Functions pomocí aplikačních Přehledy
- Povolte odesílání diagnostiky Azure do Application Insights.
- Monitorujte metriky stavu služby, abyste zajistili dostupnost služby a její schopnost dobře reagovat.
- Přijímejte oznámení o výstrahách vždy, když nastanou provozní události nebo když metriky překročí prahovou hodnotu.
- Pomocí aplikace Přehledy pro javascriptové aplikace a webové stránky získáte telemetrii klienta z prohlížečů, které navštíví webovou stránku.
- Přehled dostupnosti