Application Insights voor Azure-cloudservices
Application Insights kan Azure-cloudservice-apps bewaken op beschikbaarheid, prestaties, fouten en gebruik door gegevens uit Application Insights SDK's te combineren met Diagnostische gegevens van Azure vanuit uw cloudservices. Op basis van de feedback die u krijgt over de prestaties en de effectiviteit van uw app tijdens het gebruik, kunt u weldoordachte beslissingen nemen over de richting van het ontwerp in elke fase van de ontwikkelingslevenscyclus.
Notitie
Op 31 maart 2025 eindigt de ondersteuning voor opname van instrumentatiesleutels. Opname van instrumentatiesleutels blijft werken, maar we bieden geen updates of ondersteuning meer voor de functie. Overgang naar verbindingsreeks s om te profiteren van nieuwe mogelijkheden.
Vereisten
Voordat u begint, hebt u het volgende nodig:
Een Azure-abonnement.
Meld u aan met uw Microsoft-account voor Windows, Xbox Live of andere Microsoft-cloudservices.
Microsoft Azure-hulpprogramma's 2.9 of hoger.
Developer Analytics Tools 7.10 of hoger.
Snel aan de slag gaan
Als u uw cloudservice wilt controleren met Application Insights, kunt u dat het snelst en gemakkelijkst doen door die optie te kiezen wanneer u uw service naar Azure publiceert.
Met deze optie wordt uw app tijdens runtime gebruikt, zodat u alle telemetriegegevens krijgt die u nodig hebt om aanvragen, uitzonderingen en afhankelijkheden in uw webrol te bewaken. Ook worden prestatiemeteritems van uw werkrollen bewaakt. Diagnostische traceringen die door uw app worden gegenereerd, worden ook verzonden naar Application Insights.
Als deze optie alles is wat u nodig hebt, bent u klaar.
De volgende stappen zijn het weergeven van metrische gegevens uit uw app en het uitvoeren van query's op uw gegevens met Analytics.
Als u de prestaties in de browser wilt bewaken, wilt u mogelijk ook beschikbaarheidstests instellen en code toevoegen aan uw webpagina's.
In de volgende secties worden de volgende aanvullende opties besproken:
- Gegevens van verschillende onderdelen verzenden en configuraties bouwen om resources te scheiden.
- U kunt aangepaste telemetrie uit uw app toevoegen.
Voorbeeld-app geïnstrueerd met Application Insights
In deze voorbeeld-app wordt Application Insights toegevoegd aan een cloudservice met twee werkrollen die worden gehost in Azure.
In de volgende sectie leert u hoe u uw eigen cloudserviceproject op dezelfde manier kunt aanpassen.
Resources en resourcegroepen plannen
De telemetrie van uw app wordt opgeslagen, geanalyseerd en weergegeven in een Azure-resource van het type Application Insights.
Elke resource behoort tot een resourcegroep. Resourcegroepen worden gebruikt voor het beheren van kosten, het verlenen van toegang tot teamleden en het implementeren van updates in één gecoördineerde transactie. U kunt bijvoorbeeld een script schrijven om een Azure-cloudservice en de bijbehorende Application Insights-bewakingsresources in één bewerking te implementeren .
Resources voor onderdelen
U wordt aangeraden een dimensieeigenschap toe te voegen aan elk telemetrie-item dat de bronrol identificeert. In deze benadering tonen metrische grafieken, zoals uitzonderingen, normaal gesproken een aggregatie van de aantallen uit de verschillende rollen, maar u kunt de grafiek indien nodig segmenteren op basis van de rol-id. U kunt ook zoekopdrachten filteren op dezelfde dimensie. Dit alternatief maakt het een beetje gemakkelijker om alles tegelijkertijd weer te geven, maar het kan ook leiden tot verwarring tussen de rollen.
Telemetrie van de browser wordt gewoonlijk opgenomen in dezelfde resource als de gegevens van de webrol op de server.
Plaats de Application Insights-resources voor de verschillende onderdelen in één resourcegroep. Deze aanpak maakt het eenvoudig om ze samen te beheren.
Ontwikkelings-, test- en productiegegevens scheiden
Als u aangepaste gebeurtenissen ontwikkelt voor uw volgende functie terwijl de vorige versie live is, kunt u de via telemetrie verzamelde ontwikkelingsgegevens het beste verzenden naar een afzonderlijke Application Insights-resource. Anders kan het lastig zijn om uw testtelemetrie te vinden tussen al het verkeer van de livesite.
Om deze situatie te voorkomen, maakt u afzonderlijke resources voor elke buildconfiguratie of 'stempel' (ontwikkeling, test, productie, enzovoort) van uw systeem. Plaats de resources voor elke buildconfiguratie in een afzonderlijke resourcegroep.
Als u de telemetrie naar de juiste resources wilt verzenden, kunt u de Application Insights SDK zo instellen dat er een andere instrumentatiesleutel wordt opgehaald, afhankelijk van de buildconfiguratie.
Meer informatie over het dynamisch instellen van de instrumentatiesleutel voor verschillende fasen.
Een Application Insights-resource maken voor elke rol
Als u hebt besloten om een afzonderlijke resource te maken voor elke rol en misschien een afzonderlijke set voor elke buildconfiguratie, kunt u ze het eenvoudigst maken in de Application Insights-portal. Als u veel resources maakt, kunt u het proces automatiseren.
Selecteer in Azure Portal De optie New>Developer Services>Application Insights.
Selecteer ASP.NET webtoepassing in de vervolgkeuzelijst Toepassingstype.
Elke resource wordt geïdentificeerd door een instrumentatiesleutel. Mogelijk hebt u deze sleutel later nodig als u de configuratie van de SDK handmatig wilt configureren of controleren.
Azure Diagnostics instellen voor elke rol
Stel deze optie in om uw app te controleren met Application Insights. Voor webrollen biedt deze optie prestatiebewaking, waarschuwingen, diagnostische gegevens en gebruiksanalyse. Voor andere rollen kunt u Azure Diagnostics zoeken en bewaken, zoals opnieuw opstarten, prestatiemeteritems en aanroepen naar System.Diagnostics.Trace.
Open in Visual Studio Solution Explorer onder YourCloudService-rollen>> de eigenschappen van elke rol.<
Schakel in Configuratie het selectievakje Diagnostische gegevens verzenden naar Application Insights in en selecteer vervolgens de Application Insights-resource die u eerder hebt gemaakt.
Als u hebt besloten om een afzonderlijke Application Insights-resource voor elke buildconfiguratie te gebruiken, selecteert u eerst de configuratie.
Dit heeft het effect van het invoegen van uw Application Insights-instrumentatiesleutels in de bestanden met de naam ServiceConfiguration.*.cscfg. Hier volgt de voorbeeldcode.
Als u het niveau van diagnostische gegevens wilt variëren die naar Application Insights worden verzonden, kunt u dit doen door de CSCFG-bestanden rechtstreeks te bewerken.
De SDK installeren in elk project
Met deze optie kunt u aangepaste zakelijke telemetrie toevoegen aan elke rol. De optie biedt een nadere analyse van hoe uw app wordt gebruikt en presteert.
Gebruik Visual Studio om de Application Insights-SDK voor elk cloudtoepassingsproject te configureren.
Als u webrollen wilt configureren, klikt u met de rechtermuisknop op het project en selecteert u Application Insights configureren of Application Insights-telemetrie toevoegen>.
Werkrollen configureren:
a. Klik met de rechtermuisknop op het project en selecteer NuGet-pakketten beheren.
b. Voeg Application Insights voor Windows Servers toe.
De SDK configureren voor het verzenden van gegevens naar de Application Insights-resource:
a. Stel in een geschikte opstartfunctie de instrumentatiesleutel in vanuit de configuratie-instelling in het CSCFG-bestand :
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault(); configuration.InstrumentationKey = RoleEnvironment.GetConfigurationSettingValue("APPINSIGHTS_INSTRUMENTATIONKEY"); var telemetryClient = new TelemetryClient(configuration);
b. Herhaal stap a voor elke rol in uw app. Zie de voorbeelden:
Stel het ApplicationInsights.config-bestand in dat altijd naar de uitvoermap moet worden gekopieerd.
In een bericht in het .config-bestand wordt u gevraagd de instrumentatiesleutel daar te plaatsen. Voor cloud-apps is het echter beter om deze in te stellen vanuit het CSCFG-bestand . Deze aanpak zorgt ervoor dat de rol correct wordt geïdentificeerd in de portal.
Status Monitor instellen om volledige SQL-query's te verzamelen (optioneel)
Deze stap is alleen nodig als u volledige SQL-query's wilt vastleggen in .NET Framework.
In het bestand Opstarttaak
\*.csdef
toevoegen voor elke rol die vergelijkbaar is met<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>
Download InstallAgent.bat en InstallAgent.ps1 en plaats ze in de
AppInsightsAgent
map voor elk rolproject. Zorg ervoor dat u ze naar de uitvoermap kopieert via bestandseigenschappen van Visual Studio of scripts bouwt.Voeg op alle werkrollen omgevingsvariabelen toe:
<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>
De app uitvoeren en publiceren
Voer uw app uit en meld u aan bij Azure.
Open de Application Insights-resources die u hebt gemaakt.
Afzonderlijke gegevenspunten worden weergegeven in Zoeken en geaggregeerde gegevens worden weergegeven in Metric Explorer.
Voeg meer telemetrie toe (zie de volgende secties) en publiceer vervolgens uw app voor livediagnose en gebruiksfeedback.
Als er geen gegevens zijn, gaat u als volgt te werk:
- Als u afzonderlijke gebeurtenissen wilt weergeven, opent u de tegel Zoeken .
- Open in de app verschillende pagina's zodat er telemetrie wordt gegenereerd.
- Wacht een paar seconden en klik vervolgens op Vernieuwen.
Azure Diagnostics-gebeurtenissen weergeven
U vindt de diagnostische gegevens van Azure in Application Insights op de volgende locaties:
- Prestatiemeteritems worden weergegeven als aangepaste functies voor het verzamelen van metrische gegevens.
- Windows-gebeurtenislogboeken worden als traceringen en aangepaste gebeurtenissen weergegeven.
- Toepassinglogboeken, ETW-logboeken en logboeken met diagnostische gegevens over de infrastructuur worden weergegeven als traceringen.
Als u prestatiemeteritems en het aantal gebeurtenissen wilt weergeven, opent u Metrics Explorer en voegt u de volgende grafiek toe:
Als u wilt zoeken in de verschillende traceringslogboeken die door Azure Diagnostics worden verzonden, gebruikt u Search of een Analytics-query. Stel dat u een niet-verwerkte uitzondering hebt waardoor een rol vastloopt en recyclet. Deze informatie zou worden weergegeven in het toepassingskanaal van het Windows-gebeurtenislogboek. U kunt Zoeken gebruiken om de Windows-gebeurtenislogboekfout weer te geven en de volledige stacktracering voor de uitzondering op te halen. Dit helpt u bij het vinden van de hoofdoorzaak van het probleem.
Meer telemetrie
In de volgende secties wordt besproken hoe u aanvullende telemetrie kunt ophalen uit verschillende aspecten van uw app.
Aanvragen van werkrollen bijhouden
In webrollen worden door de aanvraagmodule automatisch gegevens over HTTP-aanvragen verzameld. Zie het voorbeeld van MVCWebRole voor voorbeelden van hoe u het standaardgedrag van de verzameling kunt overschrijven.
U kunt de prestaties van aanroepen voor werkrollen vastleggen door ze op dezelfde manier bij te houden als HTTP-aanvragen. In Application Insights wordt met het telemetrietype Request een werkeenheid op een benoemde server gemeten die kan worden getimed en als onafhankelijk item kan slagen of mislukken. Hoewel HTTP-aanvragen automatisch door de SDK worden vastgelegd, kunt u uw eigen code invoegen om aanvragen voor werkrollen bij te houden.
Zie de twee voorbeeldrolrollen die zijn geïnstrueerd om aanvragen te rapporteren:
Uitzonderingen
Zie Bewakingsuitzondering in Application Insights voor informatie over het verzamelen van niet-verwerkte uitzonderingen van verschillende typen web-apps.
De voorbeeldwebrol heeft MVC5- en Web API 2-controllers. De onverwerkte uitzonderingen van de twee werkrollen worden vastgelegd met de volgende handlers:
- AiHandleErrorAttribute ingesteld voor MVC5-controllers , zoals wordt weergegeven in dit voorbeeld
- AiWebApiExceptionLogger ingesteld voor Web API 2-controllers , zoals weergegeven in dit voorbeeld
Voor werkrollen kunt u uitzonderingen op twee manieren bijhouden:
- Use TrackException(ex).
- Als u het NuGet-pakket van de Traceer-listener van Application Insights hebt toegevoegd, kunt u System.Diagnostics.Trace gebruiken om uitzonderingen te registreren, zoals in dit voorbeeld wordt weergegeven.
Prestatiemeteritems
Voor de volgende prestatiemeteritems worden gegevens verzameld:
- \Process(?? APP_WIN32_PROC?)% processortijd
- \Memory\Available Bytes
- .NET CLR-uitzonderingen(?? APP_CLR_PROC?)Aantal gegenereerde exceps per seconde
- \Process(??APP_WIN32_PROC??)\Private Bytes
- \Process(??APP_WIN32_PROC??)\IO Data Bytes/sec
- \Processor(_Total)% processortijd
Voor webrollen worden ook gegevens verzameld voor de volgende prestatiemeteritems:
- \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
U kunt extra aangepaste of andere Windows-prestatiemeteritems opgeven door ApplicationInsights.config te bewerken, zoals in dit voorbeeld wordt weergegeven.
Gecorreleerde telemetrie voor werkrollen
Voor een uitgebreide diagnostische ervaring kunt u bekijken wat heeft geleid tot een mislukte of hoge latentieaanvraag. Met webrollen stelt de SDK automatisch een correlatie in tussen gerelateerde telemetrie.
Als u deze weergave voor werkrollen wilt bereiken, kunt u een aangepaste telemetrie-initialisatiefunctie gebruiken om een gemeenschappelijk Operation.Id contextkenmerk in te stellen voor alle telemetriegegevens. Hiermee kunt u in één oogopslag bekijken of het latentie- of foutprobleem is veroorzaakt door een afhankelijkheid of uw code.
U doet dit als volgt:
- Stel de correlationId in een CallContext in, zoals in dit voorbeeld wordt weergegeven. In dit geval gebruiken we de aanvraag-id als de correlationId.
- Voeg een aangepaste Implementatie van TelemetryInitializer toe om de Operation.Id in te stellen op de correlationId die eerder is ingesteld. Zie ItemCorrelationTelemetryInitializer voor een voorbeeld.
- Voeg de aangepaste telemetrie-initializer toe. U kunt dit doen in het ApplicationInsights.config-bestand of in code , zoals in dit voorbeeld wordt weergegeven.
Telemetrie op de client
Beschikbaarheidstests
Om ervoor te zorgen dat uw app live en responsief blijft, stelt u webtests in.
Een totaaloverzicht weergeven
Voor een algemeen beeld van uw systeem kunt u de belangrijkste bewakingsgrafieken samen op één dashboard weergeven. U kunt bijvoorbeeld het aantal aanvragen en het aantal fouten voor elke rol aan het dashboard vastmaken.
Als uw systeem andere Azure-services gebruikt, zoals Stream Analytics, neemt u ook de bewakingsgrafieken op.
Als u een mobiele client-app hebt, gebruikt u App Center. Maak query’s in Analytics om de aantallen gebeurtenissen weer te geven en aan het dashboard vast te maken.
Opmerking
In het voorbeeld wordt een service gecontroleerd die een webrol en twee werkrollen heeft.
Uitzondering 'methode niet gevonden' bij uitvoering in Azure-cloudservices
Hebt u gebouwd voor .NET LTS? Eerdere versies worden niet automatisch ondersteund in Azure-cloudservicesrollen. Installeer .NET LTS voor elke rol voordat u uw app uitvoert.