mongoreplay 常用参数详解

举报
shm 发表于 2018/04/09 10:28:21 2018/04/09
【摘要】 应用场景:作为程序员大家肯定都遇到过一种场景,现网上程序出现bug,大家登录到现网后,bug环境早已变化,想在现网上复现bug,但触发bug的环境很难出现,并且运维同事也不允许程序员在现网环境上。那么怎么复现bug环境呢?如果有一种工具能够把程序在现网上接收的所有网络包存储下来,然后在测试环境上将这个些存储的网络包进行重放,复现bug。因为可以重放多次,并且是在测试环境上,那这种工具对程序员...

应用场景:

作为程序员大家肯定都遇到过一种场景,现网上程序出现bug,大家登录到现网后,bug环境早已变化,想在现网上复现bug,但触发bug的环境很难出现,并且运维同事也不允许程序员在现网环境上。那么怎么复现bug环境呢?如果有一种工具能够把程序在现网上接收的所有网络包存储下来,然后在测试环境上将这个些存储的网络包进行重放,复现bug。

因为可以重放多次,并且是在测试环境上,那这种工具对程序员查找和定位bug将会相当方便。而mongodb就提供了这样的一种工具mongoreplay。

 

工具比较:

mongoreplay 在3.4版本才开始提供,比3.4早的版本是没有这样的工具的。更早的版本提供了一个可以存储mongodb收到的所有网络包的工具mongosniff,但mongosniff不能重放所有网络包,只是一个捕获工具。

 

mongoreplay 参数详解:

mongoreplay 有3个命令 record,play,monitor。record 记录捕获的网络包,play将record记录的网络包在目标机器上进行重放操作。

record 支持如下参数:

-f <path>:

    此参数组主是方便mongoreplay工具和其他网络抓包工具配合使用。利用主流的抓包工具( TcpDump/WinDump, Wireshark/TShark, snort等)生成pcap 格式的抓包文件,将其转换成mongoreplay对应的网络包格式。

 

   -i <interface>

       mongoreplay监听的网卡,此网卡上的任何网络包会被记录下来。-i参数和-f参数这两次参数是冲突的,只能使用其中的一个。

 

   --expr <filter expression>, -e <filter expression>

      网络包过滤条件,只有符合对应条件的包才记录下来,常用的主要是'port 27017'这个过滤条件,只记录端口27017上的网络包,我们只捕获mongodb端口上的包。

 

   --playback-file <path>, -p <path>:

      存储捕获的网络包的文件。

 

  --gzip <boolean>

      如果存储的网络包太大,可以使用这个参数将捕获的网络包文件进行压缩,减少文件的大小。

用例:

mongoreplay record -f traffic.pcap -p ~/recordings/playback

 

mongoreplay record -i eth0 -e "port 27017" -p ~/recordings/playback

 

  play 支持如下参数:

  --playback-file <path>, -p <path>:

     从这个文件里面读取记录的捕获的网络包,进行重放操作。

 

  --host <hostname><:port>, -h <hostname><:port>

     指定目标机器,即在哪个机器上将捕获的网络包进行重放

 

  --speed number

     重放的速率,默认值是1.0,即按照捕获的包的速率进行重放。可以调快或调慢重放的速率。

 

  --repeat number

     重放的次数

 

--report <path>

     指定将重放过程中的执行报告保存的路径,如果没有这个参数,执行报告就输出在终端。

 

--collect <json|format|none>

     指定执行报告输出的格式,当参数值为format时,和—format参数配合使用。

 

--format

     和collect 配合使用,让用户自己对执行报告进行格式化,方便用户阅读。

用例:

mongoreplay play -p ~/recordings/playback --report ~/reports/replay_stats.json --host mongodb://192.168.0.4:27018

 

monitor 支持如下参数:

monitor 的参数和play基本上一样,只是没有—host参数,它其实就相当于play的预演,由于没有连接目标机器,因此不会产生实际效果。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。