在处理一些无法100%复现的问题时,以下几种情况比较难以处理
- 由于尚不确定问题复现的触发条件,随机出现
- 系统管理员没有权限,只能等用户使用出现问题时报障,且出现故障概率很低
我们没有办法在问题发生时抓取数据或包,此时需要设置循环抓包的方式来确保在在问题复现时可以抓到相应数据,来帮助分析和定位问题原因,进而找到解决方法。
NetScaler上的抓包工具提供了循环抓包的功能,根据我的一些经验,建议使用时按照以下步骤来进行
Step 1
确认NetScaler当前资源消耗情况,流量吞吐、磁盘空间、CPU、内存使用率等(MPX和VPX都一样)
这些参数在NetScaler的GUI的Dashboard界面都可以看到,以最新版的12.1举例
图没了
可以看到,黄色标出部分即是我们想看到的参数,一般来说CPU和内存不会是瓶颈,但是如果是100%或者很高的话最好需要先解决这部分问题,CPU关系到filter过滤的性能,吞吐量关系到抓包文件的大小,磁盘空间关系到是否能存得下来,这两个与我们抓包的关联性比较高。
磁盘空间也可以通过命令行界面来进行检查VAR文件夹使用率
root@NSVPX12# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/md0 395M 381M 5.2M 99% /
devfs 1.0k 1.0k 0B 100% /dev
procfs 4.0k 4.0k 0B 100% /proc
/dev/da0s1a 1.6G 301M 1.1G 21% /flash
/dev/da0s1e 13G 2.4G 10G 18% /var
如果发现可用磁盘空间很少,可以检查以下几个目录下是否有很多旧的日志文件,可以根据生成时间将不需要用的备份出来然后删掉
/var/nstrace ----------------- 存抓包文件
/var/tmp/support ---------------- 存打包日志文件
/var/nslog/ ---------------- newnslog.*.tar.gz文件
Step 2
设置合适的filter过滤,通过实际在生产环境的5分钟抓包,来测试会产生多大的封包文件,通过这个数据来估算循环抓包的滚动时间。
命令行方式
> start nstrace -size 0 -filter "CONNECTION.IP.EQ(1.1.1.1)"
Done
> stop nstrace
Done
例如,如果抓包文件比较小,那么可以设置成3小时的循环,即每半个小时的抓包生成一个封包文件,正常抓到6个封包文件,再抓第7个的时候覆盖掉第1个封包文件,一般用户报障的延时是囊括住的
Tips
需要注意的是,由于抓包是nstrace进程在接口buffer中来抓取,如果背景流量较大,有可能应用filter的时候来不及过滤出目标封包,直观的结果就是封包没抓到。此时需要将filter取消了来抓,同样按照上面步骤来进行评估。
Step 3
此时可以开始配置循环抓包的参数了,每个参数的具体作用如下图
上面的参数的意思是,每个封包最大1个G,每个封包文件最长时间抓3600秒(1小时),一共最多抓24个封包(1天)
封包文件大小和封包文件抓取时长这两个限制条件,谁先达到就生效,即如果没到3600秒,但抓包文件达到1G的时候,此时就会抓下一个包了,总共只抓24个包。
如果想抓6个包,每个包抓30分钟,则应该这样设置
命令行方式
start nstrace -nf 6 -time 1800 -size 0
Step 4
结束抓包,看到6个封包文件,将其全部下载出来并进行下一步分析
其他一些抓包参数
link
Includes filtered connection's peer traffic.
Possible values: ENABLED, DISABLED
Default value: DISABLED
traceBuffers
Number of 16KB trace buffers
Default value: 5000
Minimum value: 1000
capsslkeys
Capture SSL Master keys. Master keys will not be captured on FIPS machine.
Warning: The captured keys can be used to decrypt information that may be confidential. The captured key files have to be stored in a secure environment
Possible values: ENABLED, DISABLED
Default value: DISABLED
参考文档
How to Record Network Packet Trace on NetScaler Appliance
How to Export and Use SSL Session Keys to Decrypt SSL Traces Without Sharing the SSL Private Key