notebook

都内でWEB系エンジニアやってます。

mongoDBでクエリログを流す

mongoDB起動時

下記をつけて起動させればOK

/urr/bin/mongod --profile=2 --slowms=1

--profile

プロファイルのレベル

  • 1: 閾値以上の時間のかかったクエリを残す
  • 2: 全てのクエリを残す

--slowms

閾値(ms)

コンソールから

$ mongo
db.setProfilingLevel(2,1)
{ "was" : 0, "slowms" : 20, "ok" : 1 }
> db.system.profile.find()
.....
.....

第一引数がプロファイルのレベル

第二引数が閾値

どちらで行っても出力先はmongoDBのsystem.profileコレクションに出力される模様

Database Profiler Output — MongoDB Manual 3.2

docs.mongodb.com

一生懸命ファイルを探しても見つからないわけですね

mongotail

いちいちシェルに入ってコマンドたたくのも面倒ですね

mongoDBでslowlogをとるようにしておけばmongotailというコマンドを使ってクエリログを閲覧や垂れ流しすることが出来ます

mrsarm/mongotail

github.com

  • install
pip install mongotail

pipでインストール可能

  • tailしてみる

こちらもDBのアドレスとデータベース名を入れてコマンドを実行するだけです

-ftail -f と同様な感じに、-vでverboseモードで全てのログを出力してくれるようです

mongotail 192.168.30.93:27017/database -v -f

簡単!