コマンド
pt-mongodb-query-digest [ オプション ]
【主なオプション】
- ・ -a : ユーザー認証されたデータベースを指定する(デフォルトはadminデータベースが選択されます)
- ・ -c : MongoDBのバージョンチェックをしない場合に記述する
- ・ -l : ログのレベルを指定する
- ・ -n : 表示させるクエリの数を制限する
※ pt-mongodb-query-digestを実行する際の指定条件として、少なくとも”host:port/database”を指定する必要があります。
目的
MongoDB query profilerからのクエリを集約することによって、クエリ使用状況の統計情報をレポートします。
シナリオ
以下のコマンドを実行し、発行した全クエリを記録する
> db.setProfilingLevel(2);
※ 上記のコマンドを実行するためには、”dbAdmin”権限が必要となります
以下のコマンドをMongoDB内にて実行し簡易データを格納する
> use test
switched to db test
> db.hoge.insert({"name":"Reon", "age":"20", "birthplace":"Tokyo", "hobby":["Reading", "drive"]})
WriteResult({ "nInserted" : 1 })
> db.hoge.insert({"name":"Santa", "age":"18", "birthplace":"Kanagawa"})
WriteResult({ "nInserted" : 1 })
結果
以下のような結果が標準出力されます
[root@localhost mongodb]# pt-mongodb-query-digest localhost:27017/test
pt-mongodb-query-digest - Tue, 18 Apr 2017 10:40:07 +0900
Host: localhost:27017/test
Skipping profiled queries on these collections: [system.profile]
# Totals
# Ratio 1.00 (docs scanned/returned)
# Attribute pct total min max avg 95% stddev median
# =============== === ======== ======== ======== ======== ======== ======= ========
# Count (docs) 5
# Exec Time ms 100 29 0 29 6 29 12 0
# Docs Scanned 100 7.00 0.00 4.00 1.40 4.00 1.50 1.00
# Docs Returned 100 7.00 0.00 4.00 1.40 4.00 1.50 1.00
# Bytes recv 1 797.00 29.00 274.00 159.40 274.00 109.99 196.00
#
(省略)
# Query 0: 0.00 QPS, ID 13f6ec11e1dace64a788a89679b12a42
# Ratio 0.00 (docs scanned/returned)
# Time range: 2017-04-18 11:40:15.688 +0900 JST to 2017-04-18 11:40:21.489 +0900 JST
# Attribute pct total min max avg 95% stddev median
# =============== === ======== ======== ======== ======== ======== ======= ========
# Count (docs) 2
# Exec Time ms 0 0 0 0 0 0 0 0
# Docs Scanned 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
# Docs Returned 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
# Bytes recv 1 58.00 29.00 29.00 29.00 29.00 0.00 29.00
# String:
# Namespaces test.hoge
# Operation insert
# Fingerprint documents,insert,ordered
# Query {"documents":[{"_id":"58f57c952855c441be073753","age":"18","birthplace":"Kanagawa","name":"Santa"}],"insert":"hoge","ordered":true}
[root@localhost mongodb]#
良い点
MySQLのスロークエリログをと同等のMongoDB Profilingに記録されたクエリを分析するのに最適です