c# - 查看/收集 OnPrem Service Fabric ETW 事件

标签 c# azure-service-fabric etw

我们正在尝试查看 OnPrem 集群中的服务 ETW 事件。长期计划是安装 ElasticSearch 集群来发送事件。我本周没有时间构建它,相反,我需要了解为什么我的应用程序会崩溃。

我们已在其中一台节点服务器上安装了 Microsoft Message Analyzer,我可以连接实时 session 来查看群集 ETW 事件 Service Fabric 系统提供程序。

我希望能够查看应用程序 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 具有:

    "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中我有:

  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 具有:

 [EventSource(Name = "TMHP-CacheApp-CacheAPI")]

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

“TMHP-CacheApp-CacheAPI”

提前致谢, 格雷格

最佳答案

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

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

Actor 和 ReliableServices 是基于 EventSource 的,因此要在 PerfView 中查看它们,您必须按照 Vance 博客上的说明进行操作。不要忘记“*”!!!

  1. 使用如下命令行启动 PerfView:perfview/onlyproviders=*Microsoft-ServiceFabric-Actors
  2. 您可以使用 Collect | 进行收集收藏|开始收集。确保高级选项 |其他提供商字段包含 =*Microsoft-ServiceFabric-Actors
  3. 收集完成后,您可以在“事件”下查看它们

enter image description here

关于c# - 查看/收集 OnPrem Service Fabric ETW 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41857775/

相关文章:

c# - Windows 8 : SQLlite or Application Resources

c# - 使用 Newtonsoft 反序列化 JSON 对象 C#

c# - 在 foreach 循环中创建控件?

c# - Service Fabric 中无状态服务的服务解析器

azure - 在本地集群上运行任何有状态服务时出错

.net - Service Fabric System.BadImageFormatException

c - 查找当前的 NT 内核记录器

c++ - 访问与使用 TraceLoggingWrite 提供的事件关联的用户数据

c# - 如何将多个文件压缩到一个 ZIP 文件中?

c# - 如何使用来自 ETW Microsoft-Windows-TCPIP 提供程序的 TCB 值来获取 TCB 信息