Application Insights voor Azure-cloudservices

Application Insights kan Azure-cloudservice-apps controleren op beschikbaarheid, prestaties, fouten en gebruik door gegevens uit Application Insights SDK's te combineren met Azure Diagnostics gegevens van 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.

Overzichtsdashboard

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 verbindingsreeksen 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 Tools 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.

Pagina Voorbeeld van diagnostische instellingen

Met deze optie wordt uw app tijdens runtime in gebruik genomen, zodat u alle telemetrie krijgt die u nodig hebt om aanvragen, uitzonderingen en afhankelijkheden in uw webrol te bewaken. Het bewaakt ook de prestatiemeteritems van uw werkrollen. Eventuele 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 van uw app en het uitvoeren van query's op uw gegevens met Analytics.

Als u de prestaties in de browser wilt bewaken, kunt u ook beschikbaarheidstests instellen en code toevoegen aan uw webpagina's.

In de volgende secties worden de volgende aanvullende opties besproken:

  • Verzend gegevens uit verschillende onderdelen en bouw configuraties 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 aan 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 dimensie-eigenschap toe te voegen aan elk telemetrie-item waarmee de bronrol wordt geïdentificeerd. Bij deze benadering geven grafieken met metrische gegevens, zoals uitzonderingen, normaal gesproken een aggregatie weer van de aantallen van de verschillende rollen, maar u kunt de grafiek zo nodig segmenteren op basis van de rol-id. U kunt zoekopdrachten ook filteren op dezelfde dimensie. Dit alternatief maakt het een beetje gemakkelijker om alles tegelijkertijd te bekijken, 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 deze een andere instrumentatiesleutel ophaalt, 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, is het het eenvoudigst om deze allemaal te maken in de Application Insights-portal. Als u veel resources maakt, kunt u het proces automatiseren.

  1. Selecteer in de Azure PortalNew>Developer Services>Application Insights.

    Deelvenster Application Insights

  2. Selecteer in de vervolgkeuzelijst Toepassingstype de optie ASP.NET webtoepassing.

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.

  1. Open in Visual Studio Solution Explorer onder <YourCloudService-rollen>> de eigenschappen van elke rol.

  2. 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.

Application Insights configureren

Dit heeft als gevolg dat uw Application Insights-instrumentatiesleutels worden ingevoegd in de bestanden met de naam ServiceConfiguration.*.cscfg. Dit is de voorbeeldcode.

Als u het niveau van diagnostische gegevens die naar Application Insights worden verzonden, wilt variëren, 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 gedetailleerde analyse van hoe uw app wordt gebruikt en presteert.

Gebruik Visual Studio om de Application Insights-SDK voor elk cloudtoepassingsproject te configureren.

  1. Als u webrollen wilt configureren, klikt u met de rechtermuisknop op het project en selecteert u Application Insights configureren of Application Insights-telemetrie toevoegen>.

  2. Werkrollen configureren:

    a. Klik met de rechtermuisknop op het project en selecteer Vervolgens NuGet-pakketten beheren.

    b. Voeg Application Insights voor Windows Servers toe.

  3. 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:

  4. 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 op .NET Framework wilt vastleggen.

  1. In \*.csdef bestand Opstarttaak toevoegen voor elke rol vergelijkbaar 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>
    
  2. Download InstallAgent.bat en InstallAgent.ps1, plaats ze in de AppInsightsAgent map van elk rolproject. Zorg ervoor dat u deze naar de uitvoermap kopieert via Visual Studio-bestandseigenschappen of buildscripts.

  3. 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

  1. Voer uw app uit en meld u aan bij Azure.

  2. Open de Application Insights-resources die u hebt gemaakt.

    Afzonderlijke gegevenspunten worden weergegeven in Zoeken en geaggregeerde gegevens worden weergegeven in Metric Explorer.

  3. Voeg meer telemetrie toe (zie de volgende secties) en publiceer vervolgens uw app om live diagnostische gegevens en feedback over gebruik te krijgen.

Als er geen gegevens zijn, gaat u als volgt te werk:

  1. Als u afzonderlijke gebeurtenissen wilt weergeven, opent u de tegel Zoeken .
  2. Open in de app verschillende pagina's, zodat er telemetrie wordt gegenereerd.
  3. Wacht een paar seconden en klik vervolgens op Vernieuwen.

Azure Diagnostics-gebeurtenissen weergeven

U vindt de Azure Diagnostics informatie 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 aantallen gebeurtenissen wilt weergeven, opent u Metrics Explorer en voegt u de volgende grafiek toe:

Azure Diagnostics gegevens

Als u wilt zoeken in de verschillende traceringslogboeken die door Azure Diagnostics worden verzonden, gebruikt u Zoeken of een Analytics-query. Stel dat u een onverwerkte uitzondering hebt waardoor een rol is vastgelopen en gerecycled. Deze informatie zou worden weergegeven in het toepassingskanaal van het Windows-gebeurtenislogboek. U kunt Zoeken gebruiken om de fout in het Windows-gebeurtenislogboek weer te geven en de volledige stacktracering voor de uitzondering op te halen. Als u dit doet, kunt u de hoofdoorzaak van het probleem vinden.

Azure Diagnostics zoeken

Meer telemetrie

In de volgende secties wordt besproken hoe u aanvullende telemetrie op basis van verschillende aspecten van uw app kunt ophalen.

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 worden vastgelegd door de SDK, kunt u uw eigen code invoegen om aanvragen voor werkrollen bij te houden.

Bekijk de twee voorbeeldrolrollen die zijn geïnstrueerd voor het rapporteren van aanvragen:

Uitzonderingen

Zie Uitzonderingen bewaken 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:

Voor werkrollen kunt u uitzonderingen op twee manieren bijhouden:

  • Gebruik TrackException(ex).
  • Als u het NuGet-pakket application Insights-traceringslistener hebt toegevoegd, kunt u System.Diagnostics.Trace gebruiken om uitzonderingen vast te leggen , zoals in dit voorbeeld wordt weergegeven.

Prestatiemeteritems

Voor de volgende prestatiemeteritems worden gegevens verzameld:

  • \Process(?? APP_WIN32_PROC??) % processortijd
  • \Memory\Available Bytes
  • .NET CLR Exceptions(?? 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 aanvullende aangepaste of andere Windows-prestatiemeteritems opgeven door ApplicationInsights.configte bewerken, zoals in dit voorbeeld wordt weergegeven.

Prestatiemeteritems

Gecorreleerde telemetrie voor werkrollen

Voor een uitgebreide diagnostische ervaring kunt u zien wat heeft geleid tot een mislukte aanvraag of een aanvraag met hoge latentie. Met webrollen stelt de SDK automatisch een correlatie in tussen gerelateerde telemetriegegevens.

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. Als u dit doet, kunt u in één oogopslag zien of het latentie- of foutprobleem is veroorzaakt door een afhankelijkheid of uw code.

U doet dit als volgt:

Telemetrie op de client

Zie De JavaScript SDK toevoegen aan uw webpagina's om telemetrie op basis van een browser op te halen, zoals het aantal paginaweergaven, laadtijden van pagina's of script-uitzonderingen, en om aangepaste telemetrie te schrijven in uw paginascripts.

Beschikbaarheidstests

Stel webtests in om ervoor te zorgen dat uw app live en responsief blijft.

Een totaaloverzicht weergeven

Voor een algemeen beeld van uw systeem kunt u de belangrijkste bewakingsgrafieken samen weergeven op één dashboard. 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, moet u ook de bijbehorende bewakingsgrafieken opnemen.

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.

Voorbeeld

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 voor .NET LTS gebouwd? Eerdere versies worden niet automatisch ondersteund in Rollen voor Azure-cloudservices. Installeer .NET LTS op elke rol voordat u uw app uitvoert.

Volgende stappen