BI 4.x里如何生成E2E的trace日志进行查错分析(针对不含Solution Manager的系统)
作者:Toby Johnston 现就职于SAP
如果您曾经提交过SAP Support Incident的话,您应该都曾有过需要去抓取BusinessObjects产品的trace日志的烦恼。在这个过程中您可能经常遇到下面的困难:
- 您必须登陆中央管理控制台,并且手动去激活trace日志生成的功能
- 您必须十分了解您trace的过程中所包含的服务器组件,从而才能确保抓取到正确的日志
- 日志文件非常肥大而且它包含了过多实际上并不需要的内容
- 不同服务器,组件产生的trace日志,如果将它按照比如时间顺序进行结合合并,需要花费大量的时间
- 分析日志的时候,如果要按照线程ID,用户ID登信息进行过滤从而得到一个更为精细的流程分析,也是一个很困难的过程
如果我们能仅仅得到一个日志文件,却包含了整个流程中所有的内容,会不会更好呢?如果这个日志,可以按照时间顺序,将所有经过的服务器,组件的日志自动整合,会不会更好呢?甚至,如果不需要用户去服务器端手动激活日志功能,会不会更好呢?这些听起来很酷炫的想法,其实在SAP BusinessObjects BI 4.x平台上都是可以实现的。基于BI 4.x引入的新功能SAP Passport 使得以上的需求都成为了可能。
SAP Passport是一个由工具SAP Client Plug-in产生的唯一标示符。通过使用SAP Client Plug-in这个工具,在这个工具中启动IE浏览器,在与服务器交互的事物处理中,生成的SAP Passport就会被嵌入到每一个HTTP请求的HTTP Header中。Web服务器接收到这样的HTTP Header,会将其中SAP Passport的内容转发到这个流程中所用到的各种底层服务器中。在SAP Client Plug-in里您可以指定日志的级别,这个级别会在事务处理中自动覆盖服务器的默认设定,因此您就免去了手动去服务器端激活并指定日志级别的工作。由于SAP Passport记录了您在SAP Client Plug-in里您指定的日志级别并会自动使用到整个事务处理流程中所涉及的服务器,因此这个过程中所用到的服务器会按照这里所指定的日志级别生成相应的日志。同时,在这个事物处理的过程中所生成的日志,会在每一行中记录下SAP Passport的ID信息,从而确保了整个端到端(End to End)的日志生成过程。
使用SAP Client Plug-in是整个E2E日志取得的其中一步,接下来我们需要做的事情是将取得的所有日志文件,基于SAP Passport ID信息进行整合,从而生成一个包含所有服务器按时间排序的全新日志文件。可以实现这个功能的工具有很多,这里我们介绍其中一个工具。它叫做GLF Viewer,是专门为处理BI 4.x GLF类型的日志读取而设计。它基于Java,可以同时处理复数的GLF日志文件。通过导入生成的所有日志文件,使用SAP Passport ID进行过滤,从而得到最终我们需要仅仅包含待分析的过程的内容。
接下来就让我们来看一看具体是怎么操作的吧。
注意:您也可以在下面的SAP Knowledge Base Article中确认最新的关于生成E2E日志的信息。
1861180 – Customer instructions and best practice for collecting a BI Platform 4.x end to end trace
生成E2E的日志
- 访问SAP Note 1435190,下载SAP Client Plug-in 71 SP05 Patch 3。这个版本的SAP Client Plug-in支持IE8,IE9(仅支持32位IE)
- 将SAP Client Plug-in复制到您的客户端并将其解压缩。
- 执行其中的plugin-starter-gui.exe。
- 将Application设定为IE,点击Launch 按钮。
- 这时您系统的32位IE就会被启动。现在在执行您的操作器,您还需要做一些事情。在Business Transaction Name这里您需要设定相应的名称标示您接下来要做的流程,然后将Next Step TraceLevel指定为High。这里指定的Next Step TraceLevel将会在接下来的流程中覆盖掉过程中所使用的服务器组件的默认日志级别。
- 在您开始抓取E2E日志前,您需要确保使用IE浏览器能够正常观测到您所遇到的需要去做日志分析的问题。在下面的例子中,我们将试着分析抓取一段有关即时查看一个基于SQL Server数据源(UNX)的Web Intelligence报表的日志。
- 准备好的话,点击Start Transaction按钮。
- 当您完成了整个流程的操作,点击Stop Transaction按钮。您可以忽略如果弹出了提示信息Settings are not valid 因为它是跟Solution Manager里的SMD
Agent设定相关,而我们这里是不用到Solution Manager的。点击OK从而结束整个SAP Client Plug-in。
处理生成的E2E日志
- 在您执行SAP Client Plug-in的相同文件夹内,进入log文件夹,在这里您会发现一个日志文件夹里面包含了您所指定的Business Transaction Name名字。进入该文件夹,您会找到相关的日志进程信息。
- 使用IE打开里面的BusinessTransaction.xml文件,检索关键字“BusinessTransaction id=”。在这里您可以找到这个过程中的ID,它是收集E2E日志过程中的唯一标示ID。
- 由于一些Web应用模块的默认日志目录与服务器模块的默认日志不同,您需要手动将其统一复制到同样的目录中。在您的Web服务器中,访问C:\根目录(或Unix、Linux下的$HOME 目录),基于最终更新日期进行排序,找到最新的文件夹,名字是类似的格式:SBOPWebapp_BIlaunchpad_*。进入这个文件夹然后将其中所有的GLF文件复制粘贴到服务器的默认日志文件夹。(例如:C:\Program Files (x86)\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\logging)
如果您是集群环境,包含多个节点,您需要手动将所有不同节点的GLF文件复制粘贴到同一个目录。(您有可能需要事先将服务器的日志级别设为None或停止服务器,从而保证复制粘贴的正常进行)
- 下载GLF Viewer。下载需要您用您的S-ID事先进行登录。当前的GLF Viewer是基于BI 4.1的版本因此对于一些老BI 4.0版本下产生的GLF文件可能无法进行正常的动作。
- 执行runGLFViewer.bat来启动GLF Viewer。
- 在GLF Viewer中,点击File,Open。选择Add Files (点选Add Folder可能导致GLF Viewer闪退),加入上面提到的保存在同一目录的本日所有生成的GLF文件。
- 下一步,确保Should merge all into a single tab是点选的状态,这是必须的如果要基于整个流程生成E2E的视图。
- 点选Filter and only read matching entries,在Column里选择DSRRootContextID,设定Operator为contains,然后在文字框中输入第二步我们得到的BusinessTransaction ID,然后点击OK。
- 现在您将能够看到一个完整的视图,包含了过程中所有涉及到的组件。您现在看到的日志内容已经是被用户的流程事物所过滤后的结果。而且,它是按照发生的时间顺序有序的进行排列。按照DeviceName列进行分析可以判断该行日志是由哪一个组件所生成出来的。
- 现在,您可通过点击File,Export current (filtered)view,将当前的结果集整合到一个日志文件中。这就实现了我们上述的E2E单一日志的采取功能。
Up! Up! Up!
Cool 😎
Very useful, thank you.
英文原文的地址好像不好用了
多谢查错。这是因为SCN一部分migrate导致的。
目前链接,图片都已经修好了。