2016-02-10 15 views
8

Sto eseguendo il primo esempio di ServiceFabric (versione di anteprima 1.4.87): https://azure.microsoft.com/en-us/documentation/articles/service-fabric-create-your-first-application-in-visual-studio/, per creare un servizio stateful e sebbene l'esempio sia eseguito correttamente, non vedo il Informazioni del registro di output ETW nella finestra di diagnostica.Gli esempi ServiceFabric di Azure non si collegano all'ETW

Le chiamate al registro vengono effettuate su ServiceEventSource.Current.ServiceMessage(...), ma quando viene eseguito questo metodo (implementato in ServiceEventSource.cs), la chiamata a this.IsEnabled() restituisce false, quindi non viene scritta alcuna diagnostica. Se ignoro la chiamata IsEnabled() nel debug, non viene ancora scritto nulla nella finestra di diagnostica, che contiene solo i messaggi di avvio dell'applicazione.

I provider configurati nella Diagnostica sono quelli di default:

Microsoft-ServiceFabric-Actors 
Microsoft-ServiceFabric-Services 
cbd93bc2-71e5-4566-b3a7-595d8eeca6e8:5:0x4000000000000000 

ho aggiunto Microsoft-ServiceFabric a questa lista, ma questo solo a me diventa molto più di registrazione, ma ancora non i miei messaggi di output.

Ho anche eseguito PerfView e quindi guardando i provider disponibili, i primi due non sono presenti: Microsoft-ServiceFabric-Actors e Microsoft-ServiceFabric-Services.

Qualche idea? Questo sembra essere un puro problema ETW o qualche tipo di errore ServiceFabric nella configurazione, con le specifiche del provider forse errate nella finestra di diagnostica.

Sono in esecuzione Win10, VS2015 Enterprise x64.

[Edit] La chiamata ServiceEventSource.Current.ServiceTypeRegistered(Process.GetCurrentProcess().Id, typeof(MyStatefulService).Name) in Program.cs anche non scrive nulla. Gli unici messaggi che ho sono:

Service Created: Service fabric:/MyApplication/MyStatefulService partition 9505f2b3-dee5-4ea7-96b7-c861407b5283 of ServiceType MyStatefulServiceType created in Application fabric:/MyApplication ApplicationType MyApplicationType. 

RunAsync has been invoked for a stateful service replica. Application Type Name: MyApplicationType, Application Name: fabric:/MyApplication, Service Type Name: MyStatefulServiceType, Service Name: fabric:/MyApplication/MyStatefulService, Partition Id: 9505f2b3-dee5-4ea7-96b7-c861407b5283, Replica Id: 130996049833056865", 

The Resource Balancer completed the Creation phase and consequently issued the action -- Add on Service -- fabric:/MyApplication/MyStatefulService Partition -- 9505f2b3-dee5-4ea7-96b7-c861407b5283 with (if relevant) SourceNode -- N/A and TargetNode -- Node.2. 

(ripetere per gli altri nodi)

+2

Hai mai capito come renderli visibili in PerfView? Anch'io sto avendo quel problema in quella domanda. –

risposta

14

Per vedere gli eventi della tua EventSource è necessario aggiungere il suo nome alla lista di fornitori nella finestra di diagnostica. Osserva la definizione ServiceEventSource, avrà un attributo [EventSource (Name = "xxx")] su di esso. Questo è il nome ('xxx') che devi inserire nell'elenco dei provider.

In genere Visual Studio si occuperà di rilevare automaticamente EventSources nella soluzione quando viene avviato Diagnostics Windows; non so perché non funzioni per te, ma aggiungerlo manualmente dovrebbe fare il trucco.

+0

Grazie, era così. Sospetto che si tratti di un bug relativo all'SDK 2.8.2. L'ho provato su un altro PC con 2.8.1 e il provider è stato aggiunto correttamente in Visual Studio. –

+0

Assicurarsi che i nomi delle origini degli eventi siano elencati nell'elenco dei provider come suggerito qui quando si ascoltano eventi ETW da un'applicazione fabric di servizi ospitata di Azure - [Utilizzo di Visual Studio per ascoltare eventi ETW di Azure Service Fabric] (https: // azure .microsoft.com/it/us/documentation/articles/service-fabric-diagnostics-how-to-monitor-and-diagnose-services-local/# comment-2638038977) –

+0

Oltre ad aggiungere manualmente il nostro provider ETW, chiudere la scheda Eventi di diagnostica che viene aperta dal debugger, quindi aprirne una nuova dal menu di Windows e quindi immettere il/i provider/i ETW. –

0

Ho riscontrato questo problema dopo aver riorganizzato la mia soluzione. Ho spostato i miei progetti di servizio in una cartella di soluzioni. Ed è allora che Diagnostics Events Viewer ha smesso di ricevere messaggi dai miei servizi.

Dopo aver spostato i progetti al livello radice della soluzione, Visual Studio aggiungerà automaticamente i nomi delle origini degli eventi all'elenco dei provider ETW.

Questo bug ora sembra essere risolto con VS 2017 e/o Azure Service Fabric SDK 2.5.216.0.