StreamInsight手札(五)——使用EventFlowDebugger调试事件流

StreamInsight提供了EventFlowDebugger以方便用户进行事件流调试。这一工具拥有直观的图形化界面,支持即时调试和日志调试,支持跟踪和回溯。

本文将介绍EventFlowDebugger基本使用方法。

EventFlowDebugger分为在线模式和离线模式两种使用方法。在线模式下,用户连接到StreamInsight服务器,在线进行调试,或者录制某一段时间的事件流供离线模式使用。离线模式下,用户通过加载Trace文件对事件流进行调试。

下面对其主要功能进行介绍。

连接到服务器(在线)

在线模式需要用户连接到一个正在运行的StreamInsight服务器。

StreamInsight服务器有两种,嵌入服务器和远程服务器:

  • 嵌入服务器(Embedded Server):var cepServerEmbedded = Server.Create();
  • 远程服务器(Remote Server):var cepServerRemote = Server.Connect("https://servername/StreamInsight");

如果使用远程服务器,则用户可以直接连接远程服务器的地址。如果程序使用嵌入服务器,则需要在程序中添加如下代码: 

ServiceHost _dvHost = null;
IManagementService _service = null;
IManagementService proxy = server.CreateManagementService();
_service = proxy;
_dvHost = new ServiceHost(proxy);

WSHttpBinding binding = new WSHttpBinding(SecurityMode.Message);
binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
binding.MaxReceivedMessageSize = 4655360;
_dvHost.AddServiceEndpoint(typeof(IManagementService), binding, "https://localhost:8080");
_dvHost.Open();

同时需要添加引用Microsoft.ComplexEventProcessing.ManagementService.dll,输入加亮部分地址就可以连接嵌入服务器了。

连接到服务器的几种常见错误

错误1

HTTP could not register URL https://+:8001/. Your process does not have access rights to this namespace (see https://go.microsoft.com/fwlink/?LinkId=70353 for details).

这个错误是由于用户对访问的URL没有权限。解决方法如下:

  1. netsh http add urlacl url=https://localhost:8090/MyStreamInsightServer user=<domain\userid>
  2. net localgroup StreamInsightUsers$Default /ADD SOMEDOMAIN\someuser

错误2

一般是URL地址不正确或者StreamInsight程序没有运行。

错误3

 一般是由于StreamInsight程序没有运行。

错误4


 
一般是由于用户没有添加到正确的组。注意检查如下几个用户组:StreamInsightUsers$***, Performance Log Users

错误5

这个错误一般是由于用户程序中有断点。

显示查询(在线和离线)

在通过在线模式连接服务器或者离线模式打开trace文件后,用户可以查看查询的图形化界面:

在线模式下,用户可以通过菜单上的“开始录制”和“停止录制”录制一段时间的事件流。也可以采用Trace.cmd start <文件名>.etl和Trace.cmd stop <文件名>.etl来录制。

事件流分析(在线和离线)

用户可以通过如下菜单来实现对事件流的调试:


  
重播菜单可以通过但不模式从头开始一步一步调试事件流的变化,也可以直接跳转到用户设置的断点。寻根分析(Root Cause Analysis)可以找出指定事件的事件源。演化分析(Event Propagation Analysis)可以更重指定事件之后的所有演变。通过多个菜单的综合运用,用户就可以找出事件流中的异常事件数据,并进行更进一步的分析。

更多信息,请参见:

https://technet.microsoft.com/zh-cn/library/ff518532.aspx

软件测试工程师 金晶