mongosniff - mongodb监测工具,作用类似于 tcpdump

Posted MongoDB

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongosniff - mongodb监测工具,作用类似于 tcpdump相关的知识,希望对你有一定的参考价值。

mongosniff提供了对数据库实时活动的低级别操作跟踪和嗅探视图。可以将mongosniff认为是专为MongoDB定制的,类似于tcpdump用于TCP/IP网络流量分析。mongosniff常用于驱动开发。

注意:mongosniff需要libpcap,并且只对类Unix系统可用。

相对于mongosniff,Wireshark,一个流行的网络嗅探工具,可用于侦测和解析MongoDB线协议。


用法

下面的命令连接到运行在localhost的27017和27018上的mongod或mongos:

 
   
   
 
  1. mongosniff --source NET lo 27017 27018

下面的命令只记录运行在localhost的27018上的mongod或mongos的无效的BSON对象,用于驱动开发和问题跟踪:

 
   
   
 
  1. mongosniff --objcheck --source NET lo 27018


实践

 
   
   
 
  1. [root@test ~]# mongosniff --help    

  2. mongosniff: error while loading shared libraries: libpcap.so.0.9: cannot open shared object file: No such file or directory

 
   
   
 
  1. [root@test ~]# which mongosniff  

  2. /usr/bin/mongosniff

 
   
   
 
  1. [root@test ~]# ldd /usr/bin/mongosniff  

  2.        linux-vdso.so.1 =>  (0x00007fffe2d7a000)    

  3.        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003558e00000)    

  4.        librt.so.1 => /lib64/librt.so.1 (0x0000003559200000)    

  5.        libpcap.so.0.9 => not found    

  6.        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003559e00000)    

  7.        libm.so.6 => /lib64/libm.so.6 (0x0000003559600000)    

  8.        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x000000355a600000)    

  9.        libc.so.6 => /lib64/libc.so.6 (0x0000003558a00000)    

  10.        /lib64/ld-linux-x86-64.so.2 (0x0000003558200000)

可以看出libpcap.so.0.9 => not found并没有找到。

 
   
   
 
  1. [root@test ~]# cd /usr/lib64  

  2. [root@test lib64]# ls -al | grep libpcap    

  3. lrwxrwxrwx.  1 root root      16 Feb 26 17:28 libpcap.so.1 -> libpcap.so.1.4.0    

  4. -rwxr-xr-x   1 root root  260880 Nov 22  2013 libpcap.so.1.4.0

添加软连接。

 
   
   
 
  1. [root@test lib64]# ln -s /usr/lib64/libpcap.so.1.4.0 /usr/lib64/libpcap.so.0.9

再次查看帮助。

 
   
   
 
  1. [root@test lib64]# mongosniff --help  

  2. Usage: mongosniff [--help] [--forward host:port] [--source (NET

    | ( FILE | DIAGLOG ) )] [ ... ]    
  3. -- forward       Forward all parsed request messages to mongod instance at    
  4.                specified host : port    
  5. -- source         Source of traffic to sniff , either a network interface or a    
  6.                file containing previously captured packets in pcap format ,    
  7.                 or a file containing output from mongod 's --diaglog option.    
  8.                If no source is specified, mongosniff will attempt to sniff    
  9.                from one of the machine' s network interfaces .    
  10. -- objcheck       Log hex representation of invalid BSON objects and nothing    
  11.                 else .   Spurious messages about invalid objects may result    
  12.                 when there are dropped tcp packets .    
  13. ...       These parameters are used to filter sniffing .   By default ,    
  14.                only port 27017 is sniffed .    
  15. -- help           Print this help message .

抓包:

 
   
   
 
  1. [root@test lib64]# /usr/bin/mongosniff --source NET bond0 > /var/log/currentOp/sniff.log

下面是sniff.log中的部分内容:

 
   
   
 
  1. 10.10.0.1:55553  -->> 10.10.0.2:27017 MyTest.Pro  1042 bytes  id:41d99     269721    

  2.        query: { $query: { id: { $in: [ 380, 383 ] }, Availability.Status: { $lt: 5 }, $or: [ { id: { $lt: 331 } }, { id: { $gt: 200, $lt: 400 } }, { id: { $gt: 600, $lt: 800 } } ] }, $orderby: { Availability.Status: 1 } }  ntoreturn: 0 ntoskip: 0 hasfields SlaveOk

以上是关于mongosniff - mongodb监测工具,作用类似于 tcpdump的主要内容,如果未能解决你的问题,请参考以下文章

Mongodb 监测

资产监测设备中法国配置工具介绍

JVM监测&工具[转]

WMWS在线监测管理系统的工程常用计算工具

端口开放实时监测工具支持告警 - WGCLOUD

JVM性能监测工具——VisualVM