製品

Percona

pt-mongodb-query-digest

コマンド

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に記録されたクエリを分析するのに最適です