Profilare app Web ASP.NET Core Linux di Azure con Application Insights ProfilerProfile ASP.NET Core Azure Linux web apps with Application Insights Profiler

Questa funzionalità è attualmente in anteprima.This feature is currently in preview.

Determinare il tempo impiegato in ogni metodo dell'applicazione Web attiva con Application Insights.Find out how much time is spent in each method of your live web application when using Application Insights. Application Insights Profiler è ora disponibile per le app Web ASP.NET Core ospitate in Linux in Servizio app di Azure.Application Insights Profiler is now available for ASP.NET Core web apps that are hosted in Linux on Azure App Service. Questa guida fornisce istruzioni dettagliate su come raccogliere tracce del profiler per app Web ASP.NET Core Linux.This guide provides step-by-step instructions on how the Profiler traces can be collected for ASP.NET Core Linux web apps.

Dopo aver completato questa procedura dettagliata, l'app potrà raccogliere tracce del profiler, ad esempio le tracce visualizzate nell'immagine.After you complete this walkthrough, your app can collect Profiler traces like the traces that are shown in the image. In questo esempio la traccia del profiler indica che una richiesta Web specifica è lenta a causa del tempo di attesa.In this example, the Profiler trace indicates that a particular web request is slow because of time spent waiting. Il percorso critico nel codice che rallenta l'app è contrassegnato da un'icona a forma di fiamma.The hot path in the code that's slowing the app is marked by a flame icon. Il metodo About nella sezione HomeController rallenta l'app Web perché chiama la funzione Thread.Sleep.The About method in the HomeController section is slowing the web app because the method is calling the Thread.Sleep function.

Tracce del profiler

PrerequisitiPrerequisites

Le istruzioni seguenti si applicano a tutti gli ambienti di sviluppo Windows, Linux e Mac:The following instructions apply to all Windows, Linux, and Mac development environments:

Configurare il progetto in localeSet up the project locally

  1. Aprire una finestra del prompt dei comandi nel computer.Open a Command Prompt window on your machine. Le istruzioni seguenti si applicano a tutti gli ambienti di sviluppo Windows, Linux e Mac.The following instructions work for all Windows, Linux, and Mac development environments.

  2. Creare un'applicazione Web ASP.NET Core MVC:Create an ASP.NET Core MVC web application:

    dotnet new mvc -n LinuxProfilerTest
    
  3. Modificare la directory di lavoro scegliendo la cartella radice per il progetto.Change the working directory to the root folder for the project.

  4. Aggiungere il pacchetto NuGet per raccogliere le tracce del profiler:Add the NuGet package to collect the Profiler traces:

    dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore
    
  5. Abilitare Application Insights in Program.cs:Enable Application Insights in Program.cs:

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseApplicationInsights() // Add this line of code to Enable Application Insights
            .UseStartup<Startup>();
    
  6. Abilitare Profiler in Startup.cs:Enable Profiler in Startup.cs:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddServiceProfiler(); // Add this line of code to Enable Profiler
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    }
    
  7. Aggiungere una riga di codice nella sezione HomeController.cs per impostare un ritardo casuale di alcuni secondi:Add a line of code in the HomeController.cs section to randomly delay a few seconds:

        using System.Threading;
        ...
    
        public IActionResult About()
            {
                Random r = new Random();
                int delay = r.Next(5000, 10000);
                Thread.Sleep(delay);
                return View();
            }
    
  8. Salvare le modifiche ed eseguirne il commit nel repository locale:Save and commit your changes to the local repository:

        git init
        git add .
        git commit -m "first commit"
    

Creare l'app Web Linux per ospitare il progettoCreate the Linux web app to host your project

  1. Creare l'ambiente dell'app Web usando il servizio app in Linux:Create the web app environment by using App Service on Linux:

    Creare l'app Web Linux

  2. Creare le credenziali di distribuzione:Create the deployment credentials:

    Nota

    Registrare la password da usare in un secondo momento quando si distribuisce l'app Web.Record your password to use later when deploying your web app.

    Creare le credenziali di distribuzione

  3. Scegliere le opzioni di distribuzione.Choose the deployment options. Configurare un repository Git locale nell'app Web seguendo le istruzioni nel portale di Azure.Set up a local Git repository in the web app by following the instructions on the Azure portal. Verrà automaticamente creato un repository Git.A Git repository is automatically created.

    Configurare il repository Git

Per altre opzioni di distribuzione, vedere questo articolo.For more deployment options, see this article.

Distribuire il progettoDeploy your project

  1. Nella finestra del prompt dei comandi passare alla cartella radice del progetto.In your Command Prompt window, browse to the root folder for your project. Aggiungere un repository Git remoto in modo che punti al repository nel servizio app:Add a Git remote repository to point to the repository on App Service:

    git remote add azure https://<username>@<app_name>.scm.azurewebsites.net:443/<app_name>.git
    
    • Usare il nome utente usato per creare le credenziali di distribuzione.Use the username that you used to create the deployment credentials.
    • Usare il nome app usato per creare l'app Web con il servizio app in Linux.Use the app name that you used to create the web app by using App Service on Linux.
  2. Distribuire il progetto eseguendo il push delle modifiche in Azure:Deploy the project by pushing the changes to Azure:

    git push azure master
    

L'output dovrebbe essere simile all'esempio seguente:You should see output similar to the following example:

```
Counting objects: 9, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (9/9), 1.78 KiB | 911.00 KiB/s, done.
Total 9 (delta 3), reused 0 (delta 0)
remote: Updating branch 'master'.
remote: Updating submodules.
remote: Preparing deployment for commit id 'd7369a99d7'.
remote: Generating deployment script.
remote: Running deployment command...
remote: Handling ASP.NET Core Web Application deployment.
remote: ......
remote:   Restoring packages for /home/site/repository/EventPipeExampleLinux.csproj...
remote: .
remote:   Installing Newtonsoft.Json 10.0.3.
remote:   Installing Microsoft.ApplicationInsights.Profiler.Core 1.1.0-LKG
…

```

Aggiungere Application Insights per monitorare le app WebAdd Application Insights to monitor your web apps

  1. Creare una risorsa di Application Insights.Create an Application Insights resource.

  2. Copiare il valore iKey della risorsa di Application Insights e configurare le impostazioni seguenti nelle app Web:Copy the iKey value of the Application Insights resource and set the following settings in your web apps:

    APPINSIGHTS_INSTRUMENTATIONKEY: [YOUR_APPINSIGHTS_KEY]
    

    La modifica delle impostazioni delle app comporta il riavvio automatico del sito.When the app settings are changed, the site automatically restarts. Una volta applicate le nuove impostazioni, viene immediatamente avviata l'esecuzione del profiler per due minuti.After the new settings are applied, the Profiler immediately runs for two minutes. Il profiler viene quindi eseguito per due minuti ogni ora.The Profiler then runs for two minutes every hour.

  3. Generare traffico nel sito Web.Generate some traffic to your website. È possibile generare traffico aggiornando la pagina About del sito alcune volte.You can generate traffic by refreshing the site About page a few times.

  4. Attendere da due a cinque minuti in modo che gli eventi possano essere aggregati in Application Insights.Wait two to five minutes for the events to aggregate to Application Insights.

  5. Passare al riquadro Prestazioni di Application Insights nel portale di Azure.Browse to the Application Insights Performance pane in the Azure portal. È possibile visualizzare le tracce del profiler in basso a destra nel riquadro.You can view the Profiler traces at the bottom right of the pane.

    Visualizzare le tracce del profiler

Problemi notiKnown issues

Il pulsante profilo ora non funziona per il profiler LinuxProfile Now button doesn't work for Linux Profiler

La versione Linux del profiler di Application Insights non supporta ancora la profilatura su richiesta tramite il pulsante profile Now.The Linux version of the App Insights profiler does not yet support on demand profiling using the profile now button.

Passaggi successiviNext steps

Se si usano contenitori personalizzati ospitati da Servizio app di Azure, seguire le istruzioni in Enable Service Profiler for containerized ASP.NET Core application (Abilitare il profiler di servizi per l'applicazione ASP.NET Core in contenitore) per abilitare Application Insights Profiler.If you use custom containers that are hosted by Azure App Service, follow the instructions in Enable Service Profiler for a containerized ASP.NET Core application to enable Application Insights Profiler.

Segnalare eventuali problemi o suggerimenti nel repository GitHub di Application Insights: ApplicationInsights-Profiler-AspNetCore: Issues (ApplicationInsights-Profiler-AspNetCore: Problemi).Report any issues or suggestions to the Application Insights GitHub repository: ApplicationInsights-Profiler-AspNetCore: Issues.