mongodbモニタツールmongosniff


mongodbモニタツールmongosniff
 
紹介する
 
mongosniffは、データベースのリアルタイムアクティビティに対する低レベルの操作追跡および嗅覚ビューを提供します.mongosniffは、tcpdumpがTCP/IPネットワークトラフィック分析に使用されるのと同様に、MongoDB専用にカスタマイズされていると考えられる.mongosniffは駆動開発によく用いられる.
注意:mongosniffはlibpcapを必要とし、クラスUnixシステムのみで使用できます.
mongosniffに対してWiresharkは,MongoDB線プロトコルの検出と解析に利用できるポピュラーなネットワーク嗅覚ツールである.
 
使用法
 
次のコマンドは、localhostの27017および27018で実行されるmongodまたはmongosに接続されます.
mongosniff --source NET lo 27017 27018

 
次のコマンドは、localhostの27018で実行されているmongodまたはmongosの無効なBSONオブジェクトのみを記録し、開発および問題追跡を駆動します.
mongosniff --objcheck --source NET lo 27018

 
じっこう
[root@test ~]# mongosniff --help    
mongosniff: error while loading shared libraries: libpcap.so.0.9: cannot open shared object file: No such file or directory

 
[root@test ~]# which mongosniff   
/usr/bin/mongosniff

 
[root@test ~]# ldd /usr/bin/mongosniff   
        linux-vdso.so.1 =>  (0x00007fffe2d7a000)    
        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003558e00000)    
        librt.so.1 => /lib64/librt.so.1 (0x0000003559200000)    
        libpcap.so.0.9 => not found    
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003559e00000)    
        libm.so.6 => /lib64/libm.so.6 (0x0000003559600000)    
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x000000355a600000)    
        libc.so.6 => /lib64/libc.so.6 (0x0000003558a00000)    
        /lib64/ld-linux-x86-64.so.2 (0x0000003558200000)

 
libpcap.so.0.9=>not foundは見つかりませんでした.
 
[root@test ~]# cd /usr/lib64   
[root@test lib64]# ls -al | grep libpcap    
lrwxrwxrwx.  1 root root      16 Feb 26 17:28 libpcap.so.1 -> libpcap.so.1.4.0    
-rwxr-xr-x   1 root root  260880 Nov 22  2013 libpcap.so.1.4.0

 
ソフト接続を追加します.
[root@test lib64]# ln -s /usr/lib64/libpcap.so.1.4.0 /usr/lib64/libpcap.so.0.9

 
ヘルプを再度表示します.
[root@test lib64]# mongosniff --help   
Usage: mongosniff [--help] [--forward host:port] [--source (NET  | (FILE | DIAGLOG) )] [  ... ]    
--forward       Forward all parsed request messages to mongod instance at     
                specified host:port    
--source        Source of traffic to sniff, either a network interface or a    
                file containing previously captured packets in pcap format,    
                or a file containing output from mongod's --diaglog option.    
                If no source is specified, mongosniff will attempt to sniff    
                from one of the machine's network interfaces.    
--objcheck      Log hex representation of invalid BSON objects and nothing    
                else.  Spurious messages about invalid objects may result    
                when there are dropped tcp packets.    
...      These parameters are used to filter sniffing.  By default,     
                only port 27017 is sniffed.    
--help          Print this help message.

バッグをつかむ:
[root@test lib64]# /usr/bin/mongosniff --source NET bond0 > /var/log/currentOp/sniff.log

次はsnifです.ロゴの一部:
10.10.0.1:55553  -->> 10.10.0.2:27017 MyTest.Pro  1042 bytes  id:41d99     269721    
        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