2. 如何对nova服务抓包?
install
wget http://gitlab.qima-inc.com/chuxiaofeng/zan-dev-doc/raw/master/novadump.php
php novadump.php install
usage
Usage:
全部参数可选, 建议 --app= 与 --path= 否则不予解开thrift包, -s -m 过滤函数为fnmatch
1. 读取tcpdump pcap流, 实时处理
2. --file 解析pcap文件
novadump --app=<应用名称> --path=<项目根路径> -s=<servicePattern> -m=<methodPattern> --filter=<tcpdump过滤表达式>
novadump --app=<应用名称> --path=<项目根路径> -s=<servicePattern> -m=<methodPattern> --file=<pcap文件>
example:
novadump
novadump --app=pf-api --path=/home/www/pf-api
novadump --filter='tcp and host 127.0.0.1 and port 8000'
novadump --app=pf-api --path=/home/www/pf-api --filter='tcp and host 127.0.0.1 and port 8000'
novadump --app=pf-api --path=/home/www/pf-api --filter='tcp and host 127.0.0.1 and port 8000'
-s=com.youzan.service.* -m=getBy*
tcpdump -w /path/to/dump.pcap
novadump --app=pf-api --path=/home/www/pf-api --file=/path/to/dump.pcap
example
- 抓取scrm-open某实例卡门泛化调用nova包
sudo php novadump.php --app=scrm-open --path=/home/www/scrm-open/ -s=com.youzan.nova.framework.generic.service.genericService -m=invoke
- 抓取所有scrm-api某实例所有nova包
sudo php novadump.php --app=scrm-api --path=/home/www/scrm-api/
说明
旧版本libpcap与tcpdump限制 -s 0默认最包大小为65535, 超过该体积nova包会因为tcpdump实际抓取与包长不符,导致解包失败