Application Insights pro cloudové služby Azure
Application Insights může monitorovat aplikace cloudových služeb Azure pro zajištění dostupnosti, výkonu, selhání a využití kombinováním dat ze sad Application Insights SDK s daty Azure Diagnostics z vašich cloudových služeb. Na základě zpětné vazby ohledně výkonu a efektivity vaší aplikace při běžném používání můžete informovaně rozhodovat o směrování návrhu v každé fázi vývoje.
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.
Požadavky
Než začnete, potřebujete:
-
Přihlaste se pomocí účtu Microsoft pro Windows, Xbox Live nebo jiných cloudových služeb Microsoftu.
Nástroje Microsoft Azure 2.9 nebo novější
Developer Analytics Tools 7.10 nebo novější.
Rychlý začátek
Nejrychlejším a nejjednodušším způsobem, jak monitorovat cloudovou službu s použitím Application Insights, je zvolit tuto možnost při publikování služby v Azure.
Tato možnost umožňuje aplikaci za běhu a poskytuje vám veškerou telemetrii, kterou potřebujete ke sledování požadavků, výjimek a závislostí ve vaší webové roli. Monitoruje také čítače výkonu z vašich rolí pracovního procesu. Všechny diagnostické trasování vygenerované vaší aplikací se také posílají do Application Insights.
Pokud je tato možnost vše, co potřebujete, máte hotovo.
Další kroky zobrazují metriky z vaší aplikace a dotazují se na data pomocí Analýzy.
Pokud chcete monitorovat výkon v prohlížeči, můžete také chtít nastavit testy dostupnosti a přidat kód na webové stránky.
V dalších částech najdete následující další možnosti:
- Odesílání dat z různých komponent a sestavení konfigurací do samostatných prostředků
- Přidání vlastní telemetrie ze své aplikace.
Ukázková aplikace instrumentovaná pomocí Application Insights
V této ukázkové aplikaci se Application Insights přidá do cloudové služby se dvěma rolemi pracovního procesu hostovanými v Azure.
V další části se dozvíte, jak stejným způsobem přizpůsobit svůj vlastní projekt cloudové služby.
Plánování prostředků a skupin prostředků
Telemetrie z vaší aplikace se ukládá, analyzuje a zobrazuje v prostředku Azure typu Application Insights.
Každý prostředek patří do skupiny prostředků. Skupiny prostředků se používají ke správě nákladů, k udělení přístupu členům týmu a k nasazení aktualizací v jediné koordinované transakci. Můžete například napsat skript pro nasazení cloudové služby Azure a prostředků monitorování Application Insights v jedné operaci.
Prostředky pro komponenty
Ke každé položce telemetrie, která identifikuje její zdrojovou roli, doporučujeme přidat vlastnost dimenze. V tomto přístupu grafy metrik, jako jsou výjimky, obvykle zobrazují agregaci počtů z různých rolí, ale podle potřeby můžete graf segmentovat podle identifikátoru role. Vyhledávání můžete filtrovat také podle stejné dimenze. Tato alternativa usnadňuje zobrazení všeho ve stejnou dobu, ale může také vést k nejasnostem mezi rolemi.
Telemetrická data prohlížeče jsou obvykle součástí stejného prostředku jako u příslušné serverové webové role.
Umístěte prostředky Application Insights pro různé komponenty do jedné skupiny prostředků. Díky tomuto přístupu je můžete snadno spravovat společně.
Samostatný vývoj, testování a provoz
Pokud pro další funkci vyvíjíte vlastní událostí a předchozí verze běží v živém provozu, je vhodné odesílat telemetrická data pro vývoj do samostatného prostředku Application Insights. Jinak může být obtížné najít testovací telemetrii mezi veškerým provozem z živého webu.
Pokud se chcete této situaci vyhnout, vytvořte samostatné prostředky pro každou konfiguraci sestavení nebo razítko (vývoj, testování, produkční atd.) vašeho systému. Prostředky pro každou konfiguraci sestavení umístěte do samostatné skupiny prostředků.
Pokud chcete odeslat telemetrii do příslušných prostředků, můžete nastavit sadu Application Insights SDK tak, aby v závislosti na konfiguraci sestavení řídila jiný instrumentační klíč.
Naučte se dynamicky nastavit instrumentační klíč pro různé fáze.
Vytvoření prostředku Application Insights pro každou roli
Pokud jste se rozhodli vytvořit samostatný prostředek pro každou roli a možná samostatnou sadu pro každou konfiguraci sestavení, je nejjednodušší je vytvořit všechny na portálu Application Insights. Pokud vytváříte prostředky hodně, můžete proces automatizovat.
Na webu Azure Portal vyberte New>Developer Services>Application Insights.
V rozevíracím seznamu Typ aplikace vyberte ASP.NET webové aplikace.
Každý prostředek je identifikován instrumentačním klíčem. Tento klíč možná budete potřebovat později, pokud budete chtít konfiguraci sady SDK nakonfigurovat ručně nebo ověřit.
Nastavení diagnostiky Azure pro každou roli
Tuto možnost nastavte, pokud chcete aplikaci monitorovat pomocí Application Insights. U webových rolí tato možnost poskytuje monitorování výkonu, výstrahy, diagnostiku a analýzu využití. U jiných rolí můžete vyhledat a monitorovat diagnostiku Azure, jako je restartování, čítače výkonu a volání system.Diagnostics.Trace.
V sadě Visual Studio Průzkumník řešení v části Role služby YourCloudService>>otevřete vlastnosti jednotlivých rolí.<
V konfiguraci zaškrtněte políčko Odeslat diagnostická data do Application Insights a pak vyberte prostředek Application Insights, který jste vytvořili dříve.
Pokud jste se rozhodli použít samostatný prostředek Application Insights pro každou konfiguraci sestavení, vyberte nejprve konfiguraci.
To má vliv na vložení instrumentačních klíčů Application Insights do souborů s názvem ServiceConfiguration.*.cscfg. Tady je ukázkový kód.
Pokud chcete změnit úroveň diagnostických informací odesílaných do Application Insights, můžete to udělat tak, že přímo upravíte soubory .cscfg.
Instalace sady SDK v každém projektu
Pomocí této možnosti můžete do libovolné role přidat vlastní obchodní telemetrii. Tato možnost poskytuje podrobnější analýzu způsobu, jakým se vaše aplikace používá a provádí.
V sadě Visual Studio nakonfigurujte sadu SDK Application Insights pro každý projekt cloudové aplikace.
Pokud chcete konfigurovat webové role, klikněte pravým tlačítkem myši na projekt a pak vyberte Konfigurovat Application Insights nebo Přidat > telemetrii Application Insights.
Konfigurace rolí pracovního procesu:
a. Klikněte pravým tlačítkem myši na projekt a pak vyberte Spravovat balíčky NuGet.
b. Přidejte balíček Application Insights pro servery Windows.
Konfigurace sady SDK pro odesílání dat do prostředku Application Insights:
a. V vhodné spouštěcí funkci nastavte instrumentační klíč z konfiguračního nastavení v souboru .cscfg :
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault(); configuration.InstrumentationKey = RoleEnvironment.GetConfigurationSettingValue("APPINSIGHTS_INSTRUMENTATIONKEY"); var telemetryClient = new TelemetryClient(configuration);
b. Opakujte krok a pro každou roli v aplikaci. Podívejte se na příklady:
Nastavte soubor ApplicationInsights.config tak, aby se vždy zkopíroval do výstupního adresáře.
Zpráva v souboru .config vás vyzve, abyste tam umístili instrumentační klíč. U cloudových aplikací je ale lepší ji nastavit ze souboru .cscfg . Tento přístup zajišťuje správnou identifikaci role na portálu.
Nastavení monitorování stavu pro shromažďování úplných dotazů SQL (volitelné)
Tento krok je nutný pouze v případě, že chcete zachytit úplné dotazy SQL v rozhraní .NET Framework.
V
\*.csdef
souboru Přidat spouštěcí úlohu pro každou roli podobnou<Startup> <Task commandLine="AppInsightsAgent\InstallAgent.bat" executionContext="elevated" taskType="simple"> <Environment> <Variable name="ApplicationInsightsAgent.DownloadLink" value="http://go.microsoft.com/fwlink/?LinkID=522371" /> <Variable name="RoleEnvironment.IsEmulated"> <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" /> </Variable> </Environment> </Task> </Startup>
Stáhněte si InstallAgent.bat a InstallAgent.ps1, vložte je do
AppInsightsAgent
složky v každém projektu role. Nezapomeňte je zkopírovat do výstupního adresáře prostřednictvím vlastností souboru sady Visual Studio nebo skriptů sestavení.Ve všech rolích pracovního procesu přidejte proměnné prostředí:
<Environment> <Variable name="COR_ENABLE_PROFILING" value="1" /> <Variable name="COR_PROFILER" value="{324F817A-7420-4E6D-B3C1-143FBED6D855}" /> <Variable name="MicrosoftInstrumentationEngine_Host" value="{CA487940-57D2-10BF-11B2-A3AD5A13CBC0}" /> </Environment>
Spuštění a publikování aplikace
Spusťte aplikaci a přihlaste se k Azure.
Otevřete prostředky Application Insights, které jste vytvořili.
V Průzkumníku metrik se zobrazují jednotlivé datové body a agregovaná data se zobrazují v Průzkumníku metrik.
Přidejte další telemetrii (viz další části) a pak publikujte aplikaci, abyste získali živou diagnostiku a zpětnou vazbu k využití.
Pokud neexistují žádná data, postupujte takto:
- Pokud chcete zobrazit jednotlivé události, otevřete dlaždici Hledat .
- V aplikaci otevřete různé stránky, aby vygenerovala určitou telemetrii.
- Počkejte několik sekund a potom klikněte na Aktualizovat.
Zobrazení událostí diagnostiky Azure
Diagnostické informace Azure najdete v Application Insights v následujících umístěních:
- Čítače výkonu se zobrazují jako vlastní metriky.
- Protokoly událostí systému Windows se zobrazují jako trasování a vlastní události.
- Protokoly aplikací, protokoly trasování událostí pro Windows a veškeré protokoly infrastruktury diagnostiky se zobrazují jako trasování.
Pokud chcete zobrazit čítače výkonu a počty událostí, otevřete Průzkumník metrik a přidejte následující graf:
Pokud chcete vyhledávat v různých protokolech trasování odesílaných službou Azure Diagnostics, použijte vyhledávací nebo analytický dotaz. Předpokládejme například, že máte neošetřenou výjimku, která způsobila chybové ukončení a recyklaci role. Tyto informace se zobrazují v kanálu Aplikace protokolu událostí systému Windows. Pomocí vyhledávání můžete zobrazit chybu protokolu událostí systému Windows a zobrazit úplné trasování zásobníku pro výjimku. Pomůže vám to najít původní příčinu problému.
Další telemetrická data
V dalších částech se dozvíte, jak získat další telemetrii z různých aspektů vaší aplikace.
Sledování požadavků z rolí pracovního procesu
Ve webových rolí modul požadavků automaticky shromažďuje data týkající se požadavků HTTP. Příklady, jak můžete přepsat výchozí chování kolekce, najdete v ukázce MVCWebRole.
Můžete zaznamenávat výkon volání rolí pracovních procesů, pokud je budete sledovat stejným způsobem jako požadavky HTTP. V Application Insights typ telemetrických dat Požadavek měří uvedenou jednotku práce serveru, kterou lze časovat a která může nezávisle být úspěšná nebo neúspěšná. Přestože sada SDK zachytává požadavky HTTP automaticky, můžete vložit vlastní kód pro sledování požadavků na role pracovního procesu.
Prohlédněte si dvě ukázkové role pracovního procesu instrumentované k hlášení požadavků:
Výjimky
Informace o tom, jak shromažďovat neošetřené výjimky z různých typů webových aplikací, najdete v tématu Monitorování výjimek v Application Insights.
Ukázková webová role obsahuje kontrolery rozhraní MVC5 a Web API 2. Nezpracované výjimky z nich jsou zachyceny pomocí následujících obslužných rutin:
- Nastavení AiHandleErrorAttribute pro kontrolery MVC5, jak je znázorněno v tomto příkladu
- Nastavení AiWebApiExceptionLogger pro kontrolery webového rozhraní API 2, jak je znázorněno v tomto příkladu
U rolí pracovního procesu můžete sledovat výjimky dvěma způsoby:
- Použijte funkci TrackException(ex).
- Pokud jste přidali balíček NuGet naslouchacího procesu trasování Application Insights, můžete k protokolování výjimek použít System.Diagnostics.Trace, jak je znázorněno v tomto příkladu.
Čítače výkonu
Ve výchozím nastavení se shromažďují následující čítače:
- \Process(?? APP_WIN32_PROC?)) % času procesoru
- \Memory\Available Bytes
- Výjimky .NET CLR(?? APP_CLR_PROC??) # of Exceps Thrown / sec
- \Process(??APP_WIN32_PROC??)\Private Bytes
- \Process(??APP_WIN32_PROC??)\IO Data Bytes/sec
- \Processor(_Total)% čas procesoru
Pro webové role se shromažďují i tyto čítače:
- \ASP.NET Applications(??APP_W3SVC_PROC??)\Requests/Sec
- \ASP.NET Applications(??APP_W3SVC_PROC??)\Request Execution Time
- \ASP.NET Applications(??APP_W3SVC_PROC??)\Requests In Application Queue
Další vlastní nebo jiné čítače výkonu Windows můžete zadat úpravou ApplicationInsights.config, jak je znázorněno v tomto příkladu.
Korelace telemetrie pro role pracovního procesu
V případě bohatého prostředí diagnostiky si můžete prohlédnout, co vedlo k neúspěšným nebo vysokým požadavkem na latenci. U webových rolí sada SDK automaticky nastaví korelaci mezi související telemetrií.
K dosažení tohoto zobrazení pro role pracovního procesu můžete použít vlastní inicializátor telemetrie k nastavení společného atributu kontextu Operation.Id pro veškerou telemetrii. Díky tomu můžete na první pohled zjistit, jestli příčinou problému s latencí nebo selháním byla závislost nebo váš kód.
Postupujte následovně:
- Nastavte ID korelace na CallContext , jak je znázorněno v tomto příkladu. V tomto případě jako ID korelace používáme ID požadavku.
- Přidejte vlastní implementaci TelemetryInitializer, která nastaví Operation.Id na ID korelace, která byla nastavena dříve. Příklad naleznete v tématu ItemCorrelationTelemetryInitializer.
- Přidejte inicializátor vlastní telemetrie. Můžete to udělat v souboru ApplicationInsights.config nebo v kódu , jak je znázorněno v tomto příkladu.
Telemetrická data klienta
Pokud chcete získat telemetrii založenou na prohlížeči, například počty zobrazení stránek, časy načítání stránek nebo výjimky skriptu a psát vlastní telemetrii do skriptů stránky, přečtěte si téma Přidání sady JavaScript SDK na webové stránky.
Testy dostupnosti
Abyste měli jistotu, že vaše aplikace zůstane aktivní a reaguje, nastavte webové testy.
Zobrazení všeho najednou
Pro celkový přehled systému můžete zobrazit klíčové monitorovací grafy společně na jednom řídicím panelu. Můžete například připnout počty požadavků a selhání pro jednotlivé role.
Pokud váš systém používá jiné služby Azure, jako je Stream Analytics, zahrňte také jejich monitorovací grafy.
Pokud máte mobilní klientskou aplikaci, použijte App Center. V Analytics můžete vytvářet dotazy pro zobrazení počtu událostí a můžete je připnout na řídicí panel.
Příklad
V příkladu se monitoruje služba s webovou rolí a dvěma rolemi pracovních procesů.
Výjimka Metoda nebyla nalezena při spuštění v cloudových službách Azure
Vytvořili jste sestavení pro .NET LTS? Dřívější verze se automaticky nepodporují v rolích cloudových služeb Azure. Před spuštěním aplikace nainstalujte na každou roli .NET LTS.