StoreFront Troubleshooting and Logging

本文主要介绍StoreFront的各种日志以及开启方法。

在StoreFront的问题拍错(Troubleshooting)过程中,主要涉及到下面的一些日志:

  • 安装日志(Installation Logs)
  • 控制台/PoSH日志(MMC Console / PoSH Logs)
  • 详细的Service日志(Services Verbose Tracing)
  • 系统事件日志(Windows Event Logs)
  • 网络包(Network tracing)


Installation Logs

整个安装过程主要涉及到两个步骤:

  1. MSI解包部分,主要涉及到各feature packages解包安装
  2. feature deployment主要涉及控制台以及PoSH部分脚本日志

MMC Console / PoSH Logs

每个命令以及脚本执行都会生成对应的日志,而管理控制台的操作基本都会触发对应的PoSH脚本命令,相关日志保存在如下路径中:

大部分的操作都会涉及到脚本的执行以及相关实际服务的处理,所以这部分日志也建议同时收集和检查。在大部分时候可能会被忽略。

Services Verbose Tracing

由于大部分服务都是IIS integrated apps/Services,所以相关的tracing都使用微软的service tracing方式,所以,都可以通过修改web.config中system.diagnostics节的相关设置来调整。

微软也提供了图形化的配置工具Microsoft Service Configuration Editor Tools (SvcConfigEditor.exe),但是由于不单独提供,需要下载Windows SDK才能获得,所以相对比较麻烦。

提示:以下文件从.Net 4.6.1 SDK中提取,经过测试可以单独运行,并在.Net 4.5及以上版本测试通过.

  SvcConfigEditor.exe (2.3 MiB, 382 次)

针对这种情况,Citrix提供了一个Powershell命令来方便的开启所有服务的日志:

[alert type=”info”]由于默认情况下每个Trace Log文件的大小最大为1MB,最多保留3个,在大多数情况下都是无法完整覆盖测试和排错场景的。所以,建议增加-FileSizeKb 10240来调整每个日志文件大小到10MB[/alert]

[alert type=”info”]执行上述命令会自动重启服务,并立即生效,不需要手动重启服务或者服务器。[/alert]

[alert type=”warning”]注意:相关日志会自动回滚,所以在非特大型环境或者可见性能影响情况下,可以考虑常开来更好的排错。[/alert]

相关日志保存路径如下:

另外,由于抓取到的日志格式为.svclog,需要使用Microsoft Service  Trace  Viewer 才可以打开并查看,对应的工具微软也没有单独提供,同样需要通过Windows SDK安装获得。

提示:以下文件从.Net 4.6.1 SDK中提取,经过测试可以单独运行,并在.Net 4.5及以上版本测试通过.

  SvcTraceViewer.exe (665.2 KiB, 387 次)

Windows Event Logs

相关事件日志写入位置为Applications and  Services Log / Citrix Delivery Services下,并不在常规的Windows Logs / Application或者Windows Logs / System下。

storefront event log location

Network tracing

由于涉及到网络通信, 所以网络包也是比较常见的排错手段。一般采用wireshark或者Fiddler来进行抓包分析。

Fiddler的好处是可以作为代理的方式直接解包https流量,相对于wireshark来说要方便很多,毕竟在某些场景让客户提供private key是不可能完成的任务。而且,可以通过Fiddler来抓取store proxy的部分流量。

这部分可以通过修改对应store的web.config来实现:

但是Fiddler也不是万能,对于非HTTP/HTTPS协议,DNS/LDAP等请求就无能为力了,此时wireshark是更好的选择。

[alert type=”info”]对于https部分,使用wireshark抓取的时候,建议检查使用的SSL/TLS协议的版本以及cipher suite。

由于目前较新的系统很多会优先使用更安全的ECDHE/DHE等非RSA密钥进行key change的话,即使有private key的情况下也无法解密https流量。所以

  1. 可以参考 https://jimshaver.net/2015/02/11/decrypting-tls-browser-traffic-with-wireshark-the-easy-way/ 保存session key,或者其他工具自带类似功能,如netscaler可以勾选保存pre-master key
  2. 可以尝试通过修改注册表的方式对SSL/TLS降级或者限制相关的cipher suite的使用,从而强制使用RSA cipher suite并抓包[/alert]

以上基本涵盖了常用的StoreFront troubleshooting工具以及相关日志的开启方法。