首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查看/收集服务结构ETW事件OnPrem

查看/收集服务结构ETW事件OnPrem
EN

Stack Overflow用户
提问于 2017-01-25 17:21:43
回答 2查看 1.5K关注 0票数 2

我们试图在OnPrem集群中查看Service事件。长远的计划是安装一个ElasticSearch集群来将事件发送到。这个星期我没有时间去构建它,相反,我需要理解为什么我的应用程序会爆炸。

我们已经在一个节点服务器上安装了,我可以连接一个活动会话来查看集群Events系统提供程序。

我希望能够查看应用程序ETW事件。我遵循了这篇文章中的说明:

https://learn.microsoft.com/en-us/azure/service-fabric/service-fabric-diagnostic-collect-logs-without-an-agent

本文的重点似乎是3个文件,eventFlowConfig.json、Program.cs和ServiceEventSource.cs。

EventFlowConfig.Json有:

代码语言:javascript
复制
    "inputs": [
    {
      "type": "EventSource",
      "sources": [
        { "providerName": "Microsoft-ServiceFabric-Services" },
        { "providerName": "Microsoft-ServiceFabric-Actors" },
        { "providerName": "TMHP-CacheApp-CacheAPI"  }
      ]
    }
  ],
  "filters": [
    {
      "type": "drop",
      "include": "Level == Verbose"
    }
   ],
   "outputs": [
    {
      "type": "StdOutput"
    }

在program.cs中,我有:

代码语言:javascript
复制
  using (var diagnosticsPipeline = ServiceFabricDiagnosticPipelineFactory.CreatePipeline("CacheApp-CacheAPI-DiagnosticsPipeline"))
                {

                    ServiceRuntime.RegisterServiceAsync("EndpointType",
                    context => new Endpoint(context)).GetAwaiter().GetResult();

                    ServiceEventSource.Current.ServiceTypeRegistered(Process.GetCurrentProcess().Id, typeof(Endpoint).Name);
                    // Prevents this host process from terminating so services keeps running. 
                    Thread.Sleep(Timeout.Infinite);
                }

ServiceEventSource.cs有:

代码语言:javascript
复制
 [EventSource(Name = "TMHP-CacheApp-CacheAPI")]

我打包和部署很好,但是使用MSMA我不知道如何附加到应用程序提供者?我想我会添加一个“自定义提供者”,但它要求一个GUID。有什么办法找到这个盖德吗?我假设我想为我的特定ServiceFabric应用程序添加客户提供者,类型为:

TMHP-CacheApp-CacheAPI

谢谢你,格雷格

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-25 20:11:29

我建议您使用PerFView,Vance有一篇关于如何在PerfView https://blogs.msdn.microsoft.com/vancem/2012/07/09/introduction-tutorial-logging-etw-events-in-c-system-diagnostics-tracing-eventsource/中查看基于EventSource的事件的文章-- EventSource名称前面的“*”非常重要。

以下是关于如何查看参与者事件的一些说明,您的自定义EventSource应该是相同的模式。

Actor和ReliableServices是基于EventSource的,因此要在PerfView中查看它们,您必须遵循万斯博客上的说明。别忘了“*”!

  1. 使用如下命令行启动PerfView : perfview
  2. 您可以使用“收集”、“开始收集”进行收集。请确保Advanced +附加提供者字段包含=*Microsoft-ServiceFabric-Actors
  3. 当您完成收集时,它们在事件下是可查看的。

票数 4
EN

Stack Overflow用户

发布于 2017-01-25 19:50:14

基于.NET EventSource的事件提供程序的Guid实际上基于提供程序的名称,它是使用哈希算法生成的。这篇博客文章有一个简短的描述:https://blogs.msdn.microsoft.com/dcook/2015/09/08/etw-provider-names-and-guids/。您可以使用提供的ETWGuid.exe为您的提供程序生成Guid:

代码语言:javascript
复制
C:\code> .\EtwGuid.exe TMHP-CacheApp-CacheAPI

TRACELOGGING_DEFINE_PROVIDER(
    g_hMyProvider,
    "TMHP-CacheApp-CacheAPI",
    // {9deef099-8d1a-568a-1618-08ffbb7146b3}
    (0x9deef099,0x8d1a,0x568a,0x16,0x18,0x08,0xff,0xbb,0x71,0x46,0xb3));

所以TMHP-CacheApp-CacheAPI的Guid应该是9deef099-8d1a-568a-1618-08ffbb7146b3。这只适用于.NET EventSources btw,其他事件提供程序可能有其他方式为提供程序设置guid。

然后,您可以在、PerfView或任何其他工具中查找该提供程序,以便进行ETW查看。

至于Microsoft提供的事件提供程序,您应该查看三个内置的服务结构:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41857775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档