LoginSignup
52
55

More than 5 years have passed since last update.

MongoDBの便利ツール「mtools」紹介

Last updated at Posted at 2014-10-28

MongoDBには、MongoDB開発者御用達の便利ツール「mtools」というものがあるのですが、まだあまり知られていないようですので、紹介していきます。

mtoolsの概要

mtoolsはgithubで公開されており、
以下のコンポーネントが含まれます

mlogfilter
MongoDBのログファイルをマージして、スロークエリを探したり、フルスキャンを探したりできるツール。さらにログを属性でフィルタして、JSONにすることもできる。

mloginfo
MongoDBのログファイルを食わせると、ログの開始時間、終了時間、バージョン、出してるバイナリ、各種イベント(リスタート、レプリカ関連)、クエリの種類などを集計してくれる。

mplotqueries
MongoDBのログファイルを食わせると、グラフを作ってくれる

mlogvis
MongoDBのログファイルを食わせるとhtmlをはいてくれる

mlaunch
テスト環境を簡単に作れるスクリプト。レプリカセットやシャーディング環境をコマンド一発で作れる。

mgenerate
テンプレートに基づいてテスト用データを作ってくれる

mtoolsのインストール

pythonまわりのインストール

まずpython 2.6.xか2.7.xが必要なので、それをインストールします(この手順はRHEL6/Cent6前提です)

# yum install python python-devel

次にpythonのライブラリ管理ツールであるpipを入れます。

# curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python

mtoolsのインストール

pipでさくっと入れます。

# pip install mtools

詳しくは https://github.com/rueckstiess/mtools/blob/master/INSTALL.md

各種ツールの使い方

mlogfilterの使い方

後日書きます m(_ _)m

mloginfoの使い方

一番簡単な使い方は、mloginfoコマンドにログファイルを引数に渡します。すると以下のようにログファイルの情報が出ます

# mloginfo mongod.log

     source: mongod.log
       host: db0.example.com:27017
      start: 2014 Aug 28 15:37:35.589
        end: 2014 Oct 29 00:04:35.567
date format: iso8601-local
     length: 74369
     binary: mongod
    version: 2.6.4

以下のように複数のログファイルを渡すと、ずらずらっと情報が出るため、目的のログを探すのに便利です。

# mloginfo *.log*

他にもオプションで以下のようなことがわかります

  • --queries:クエリのパターンとクエリの対象
  • --restarts:再起動タイミング
  • --distinct:行の種類と出現回数
  • --connections:コネクション状態
  • --rsstate:レプリカセットの状態

詳しくは https://github.com/rueckstiess/mtools/wiki/mloginfo

mplotqueriesの使い方

後日書きます m(_ _)m

mlogvisの使い方

後日書きます m(_ _)m

mlaunchの使い方

mlaunchはMongoDBの実行ファイルにPATHが通ってないないとダメなのでまず最初にPATHを通しておいて下さい。

単一のMognoDB

単一ノードのMongoDBを上げる場合は、以下のコマンドです

# mlaunch --single
launching: mongod on port 27017

このままでもよいですが、これだとジャーナルが有効で、ディスク食いますし、起動も遅いので、さらに手軽に実施する場合は--nojournalオプションを付けましょう。

# mlaunch --single --nojournal
launching: mongod on port 27017

レプリカセット

レプリカセットは以下のコマンドでできます。

# mlaunch --replicaset
launching: mongod on port 27017
launching: mongod on port 27018
launching: mongod on port 27019

5ノードでプリカセットであれば以下のコマンドです。

# mlaunch --replicaset --nodes 5

シャーディング

単一ノードからなるシャーディングは以下のコマンドで上げられます。3つのシャードと、ひとつのconfigサーバ、ひとつのmognosが上がります。

# mlaunch --single --sharded 3
launching: mongod on port 27018
launching: mongod on port 27019
launching: mongod on port 27020
launching: config server on port 27021
launching: mongos on port 27017

レプリカからなるシャーディングは以下のコマンドです。
ついでにconfigは3台構成、mongosも3台構成にします。

# mlaunch --replicaset --sharded 3 --config 3 --mongos 3
launching: mongod on port 27020
launching: mongod on port 27021
launching: mongod on port 27022
launching: mongod on port 27023
launching: mongod on port 27024
launching: mongod on port 27025
launching: mongod on port 27026
launching: mongod on port 27027
launching: mongod on port 27028
launching: config server on port 27029
launching: config server on port 27030
launching: config server on port 27031
replica set 'shard01' initialized.
replica set 'shard02' initialized.
replica set 'shard03' initialized.
launching: mongos on port 27017
launching: mongos on port 27018
launching: mongos on port 27019
adding shards. can take up to 30 seconds...

その他

もろもろの環境を止める場合は以下コマンドです。

#  mlaunch stop

環境を消す場合は、mlaunchのディレクトリを消せばOKです。デフォルトは(コマンド実行ディレクトリ)/dataです。

# rm -rf data

好きなオプションを渡したい場合は、最後につければmongodなりに渡されます

# mlaunch --single --nojournal --rest --notablescan --noscripting 
launching: mongod on port 27017
# ps -ef | grep mongod
root       788     1  0 00:35 ?        00:00:00 mongod --dbpath /tmp/data/db --logpath /tmp/data/mongod.log --port 27017 --logappend --fork --nojournal --rest --notablescan --noscripting

他にもレプリカでアービタを指定したり、認証を有効にしたりもできます。詳しくは https://github.com/rueckstiess/mtools/wiki/mlaunch

mgenerateの使い方

後日書きます m(_ _)m

52
55
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
52
55