Monitorare e diagnosticare servizi in una configurazione di sviluppo con computer localeMonitor and diagnose services in a local machine development setup

Le operazioni di monitoraggio, rilevamento, diagnosi e risoluzione dei problemi consentono ai servizi di continuare a funzionare con un'interruzione minima dell'esperienza utente.Monitoring, detecting, diagnosing, and troubleshooting allow for services to continue with minimal disruption to the user experience. L'efficienza delle operazioni di monitoraggio e diagnostica, essenziali in un ambiente di produzione distribuito reale, dipenderà tuttavia dall'adozione nella fase di sviluppo dei servizi di un modello analogo che ne assicuri il funzionamento anche nel mondo reale.While monitoring and diagnostics are critical in an actual deployed production environment, the efficiency will depend on adopting a similar model during development of services to ensure they work when you move to a real-world setup. Service Fabric consente agli sviluppatori di servizi di implementare facilmente un sistema di diagnostica in grado di operare senza problemi sia in ambienti di sviluppo costituiti da un unico computer locale sia in configurazioni con cluster di produzione veri e propri.Service Fabric makes it easy for service developers to implement diagnostics that can seamlessly work across both single-machine local development setups and real-world production cluster setups.

Event Tracing for WindowsEvent Tracing for Windows

Event Tracing for Windows (ETW) è la tecnologia consigliata per il tracciamento dei messaggi in Service Fabric.Event Tracing for Windows (ETW) is the recommended technology for tracing messages in Service Fabric. Alcuni dei vantaggi di ETW sono i seguenti:Some benefits of using ETW are:

  • ETW è veloce.ETW is fast. È stata sviluppata come tecnologia di tracciamento con un impatto minimo sui tempi di esecuzione del codice.It was built as a tracing technology that has minimal impact on code execution times.
  • ETW funziona perfettamente non solo in ambienti di sviluppo locali, ma anche in configurazioni cluster reali.ETW tracing works seamlessly across local development environments and also real-world cluster setups. Questo significa che non è necessario riscrivere il codice di tracciamento quando si è pronti per distribuire il codice in un vero cluster.This means you don't have to rewrite your tracing code when you are ready to deploy your code to a real cluster.
  • Anche il codice di sistema di Service Fabric usa ETW per il tracciamento interno.Service Fabric system code also uses ETW for internal tracing. In questo modo, è possibile visualizzare le tracce dell'applicazione interfoliate con le tracce di sistema di Service FabricThis allows you to view your application traces interleaved with Service Fabric system traces. ed è più semplice comprendere le sequenze e le correlazioni tra il codice dell'applicazione e gli eventi nel sistema sottostante.It also helps you to more easily understand the sequences and interrelationships between your application code and events in the underlying system.
  • Negli strumenti di Visual Studio per Service Fabric è incorporato il supporto per la visualizzazione degli eventi ETW.There is built-in support in Service Fabric Visual Studio tools to view ETW events. Gli eventi ETW possono essere visualizzati nella visualizzazione Eventi di diagnostica di Visual Studio dopo aver configurato correttamente Visual Studio con Service Fabric.ETW events appear in the Diagnostic Events view of Visual Studio once Visual Studio is correctly configured with Service Fabric.

Visualizzare gli eventi di sistema di Service Fabric in Visual StudioView Service Fabric system events in Visual Studio

Service Fabric emette eventi ETW per aiutare gli sviluppatori di applicazioni a capire cosa sta accadendo nella piattaforma.Service Fabric emits ETW events to help application developers understand what's happening in the platform. Se necessario, andare avanti e seguire la procedura descritta in Creare la prima applicazione in Visual Studio.If you haven't already done so, go ahead and follow the steps in Creating your first application in Visual Studio. per creare ed eseguire un'applicazione in cui il visualizzatore degli eventi di diagnostica mostra i messaggi di traccia.This information will help you get an application up and running with the Diagnostics Events Viewer showing the trace messages.

  1. Se la finestra degli eventi di diagnostica non viene visualizzata automaticamente, passare alla scheda Visualizza in Visual Studio, scegliere Altre finestre e quindi Visualizzatore eventi di diagnostica.If the diagnostics events window does not automatically show, Go to the View tab in Visual Studio, choose Other Windows and then Diagnostic Events Viewer.
  2. Per ogni evento sono disponibili informazioni di metadati standard che indicano il nodo, l'applicazione e il servizio da cui proviene l'evento.Each event has standard metadata information that tells you the node, application and service the event is coming from. È anche possibile filtrare l'elenco degli eventi usando la casella Filtra eventi nella parte superiore della finestra.You can also filter the list of events by using the Filter events box at the top of the events window. Ad esempio, è possibile filtrare in base al nome del nodo o al nome del servizio.For example, you can filter on Node Name or Service Name. Se si cercano informazioni dettagliate su un evento, è anche possibile sospendere la sessione tramite il pulsante Pausa nella parte superiore della finestra degli eventi e riprendere in un secondo momento senza alcuna perdita di eventi.And when you're looking at event details, you can also pause by using the Pause button at the top of the events window and resume later without any loss of events.

    Visualizzatore eventi di diagnostica di Visual Studio

Aggiungere tracce personalizzate al codice dell'applicazioneAdd your own custom traces to the application code

I modelli di progetto di Visual Studio per Service Fabric contengono codice di esempio.The Service Fabric Visual Studio project templates contain sample code. Il codice mostra come aggiungere tracce ETW personalizzate al codice dell'applicazione, visibili nel visualizzatore ETW di Visual Studio insieme alle tracce di sistema di Service Fabric.The code shows how to add custom application code ETW traces that show up in the Visual Studio ETW viewer alongside system traces from Service Fabric. Adottando questo metodo, i metadati vengono automaticamente aggiunti alle tracce e il visualizzatore degli eventi di diagnostica di Visual Studio è già configurato per visualizzarli.The advantage of this method is that metadata is automatically added to traces, and the Visual Studio Diagnostic Events Viewer is already configured to display them.

Per i progetti creati a partire da modelli di servizio (con o senza stato), è sufficiente cercare l'implementazione RunAsync:For projects created from the service templates (stateless or stateful) just search for the RunAsync implementation:

  1. La chiamata a ServiceEventSource.Current.ServiceMessage in the RunAsync mostra un esempio di una traccia ETW personalizzata del codice dell'applicazione.The call to ServiceEventSource.Current.ServiceMessage in the RunAsync method shows an example of a custom ETW trace from the application code.
  2. Nel file ServiceEventSource.cs si noterà un overload per il metodo ServiceEventSource.ServiceMessage, che è opportuno usare per eventi ad alta frequenza dovuti a motivi di prestazioni.In the ServiceEventSource.cs file, you will find an overload for the ServiceEventSource.ServiceMessage method that should be used for high-frequency events due to performance reasons.

Per i progetti creati da modelli di attore (con o senza stato):For projects created from the actor templates (stateless or stateful):

  1. Aprire il file "NomeProgetto".cs , dove NomeProgetto è il nome scelto per il progetto di Visual Studio.Open the "ProjectName".cs file where ProjectName is the name you chose for your Visual Studio project.
  2. Trovare il codice ActorEventSource.Current.ActorMessage(this, "Doing Work"); nel metodo DoWorkAsync .Find the code ActorEventSource.Current.ActorMessage(this, "Doing Work"); in the DoWorkAsync method. Questo è un esempio di una traccia ETW personalizzata scritta dal codice dell'applicazione.This is an example of a custom ETW trace written from application code.
  3. Nel file ActorEventSource.cs si noterà un overload per il metodo ActorEventSource.ActorMessage, che è opportuno usare per eventi ad alta frequenza dovuti a motivi di prestazioni.In file ActorEventSource.cs, you will find an overload for the ActorEventSource.ActorMessage method that should be used for high-frequency events due to performance reasons.

Dopo aver aggiunto il tracciamento ETW personalizzato al codice del servizio, sarà possibile compilare, distribuire ed eseguire nuovamente l'applicazione in modo che gli eventi risultino visibili nel visualizzatore degli eventi di diagnostica.After adding custom ETW tracing to your service code, you can build, deploy, and run the application again to see your event(s) in the Diagnostic Events Viewer. Se si esegue il debug dell'applicazione con F5, il visualizzatore verrà aperto automaticamente.If you debug the application with F5, the Diagnostic Events Viewer will open automatically.

Passaggi successiviNext steps

Lo stesso codice di traccia aggiunto all'applicazione precedente per la diagnostica locale potrà essere usato con gli stessi strumenti di cui è possibile avvalersi per visualizzare gli eventi quando si esegue l'applicazione in un cluster di Azure.The same tracing code that you added to your application above for local diagnostics will work with tools that you can use to view these events when running your application on an Azure cluster. Leggere questi articoli che illustrano le diverse opzioni per gli strumenti e descrivono come configurarle.Check out these articles that discuss the different options for the tools and describe how you can set them up.