本文主要介绍StoreFront的各种日志以及开启方法。
在StoreFront的问题拍错(Troubleshooting)过程中,主要涉及到下面的一些日志:
- 安装日志(Installation Logs)
- 控制台/PoSH日志(MMC Console / PoSH Logs)
- 详细的Service日志(Services Verbose Tracing)
- 系统事件日志(Windows Event Logs)
- 网络包(Network tracing)
Installation Logs
整个安装过程主要涉及到两个步骤:
- MSI解包部分,主要涉及到各feature packages解包安装1C:\Windows\Temp\StoreFront\
- feature deployment主要涉及控制台以及PoSH部分脚本日志
MMC Console / PoSH Logs
每个命令以及脚本执行都会生成对应的日志,而管理控制台的操作基本都会触发对应的PoSH脚本命令,相关日志保存在如下路径中:
1 | C:\Program Files\Citrix\Receiver StoreFront\Admin\logs\ |
大部分的操作都会涉及到脚本的执行以及相关实际服务的处理,所以这部分日志也建议同时收集和检查。在大部分时候可能会被忽略。
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命令来方便的开启所有服务的日志:
1 2 | Add-PSSnapin Citrix.DeliveryServices.Framework.Commands Set-DSTraceLevel -All -TraceLevel Off -FileSizeKb 10240 |
[alert type=”info”]由于默认情况下每个Trace Log文件的大小最大为1MB,最多保留3个,在大多数情况下都是无法完整覆盖测试和排错场景的。所以,建议增加-FileSizeKb 10240来调整每个日志文件大小到10MB[/alert]
[alert type=”info”]执行上述命令会自动重启服务,并立即生效,不需要手动重启服务或者服务器。[/alert]
[alert type=”warning”]注意:相关日志会自动回滚,所以在非特大型环境或者可见性能影响情况下,可以考虑常开来更好的排错。[/alert]
相关日志保存路径如下:
1 | C:\Program Files\Citrix\Receiver StoreFront\Admin\trace\ |
另外,由于抓取到的日志格式为.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下。
Network tracing
由于涉及到网络通信, 所以网络包也是比较常见的排错手段。一般采用wireshark或者Fiddler来进行抓包分析。
Fiddler的好处是可以作为代理的方式直接解包https流量,相对于wireshark来说要方便很多,毕竟在某些场景让客户提供private key是不可能完成的任务。而且,可以通过Fiddler来抓取store proxy的部分流量。
这部分可以通过修改对应store的web.config来实现:
1 | <proxy enabled=“true” processName=“Fiddler” port=“8888” /> |
但是Fiddler也不是万能,对于非HTTP/HTTPS协议,DNS/LDAP等请求就无能为力了,此时wireshark是更好的选择。
[alert type=”info”]对于https部分,使用wireshark抓取的时候,建议检查使用的SSL/TLS协议的版本以及cipher suite。
由于目前较新的系统很多会优先使用更安全的ECDHE/DHE等非RSA密钥进行key change的话,即使有private key的情况下也无法解密https流量。所以
- 可以参考 https://jimshaver.net/2015/02/11/decrypting-tls-browser-traffic-with-wireshark-the-easy-way/ 保存session key,或者其他工具自带类似功能,如netscaler可以勾选保存pre-master key
- 可以尝试通过修改注册表的方式对SSL/TLS降级或者限制相关的cipher suite的使用,从而强制使用RSA cipher suite并抓包[/alert]
以上基本涵盖了常用的StoreFront troubleshooting工具以及相关日志的开启方法。