LoginSignup
12
18

More than 5 years have passed since last update.

MongoDB 運用中の状態確認

Last updated at Posted at 2015-08-06

Diagnostic Tools

運用中はZabbixなどでリソース監視は行っているけど
バッチ動かしたり、急な高負荷状態になる場合などに
Mongodの状態を確認するためのツールがあるのでそれを使うと便利

よく使ってるツールはこのふたつ

  • mongostat
  • mongotop

mongostat

mongod/mongosのステータスを表示してくれる

--discoverオプションをつけるとレプリカセット・シャードクラスタの
全てのインスタンスの状態を表示してくれるので
運用中はいつもこれをつけて監視してる

実行してみる

$mongostat --discover | grep -E '.*PRI.*|*$' 

                     insert query update delete getmore command flushes mapped  vsize   res faults qr|qw ar|aw netIn netOut conn set repl     time
     localhost:27017     *0     1     *0     *0       0     4|0                      0        191.0M 43.0M      0   0|0   0|0  338b    19k   41        RTR 11:23:50
set01/mongod71:27018     *0    *0     *0     *0       0    12|0     0.0    3.4       0          2.2G  1.7G    n/a   0|0   1|0  920b    95k   25 set01  PRI 11:23:50 
set02/mongod81:27018     *0    *0     *0     *0       0    12|0     0.0   12.5       0          6.0G  5.4G    n/a   0|0   1|0    1k    95k   24 set02  PRI 11:23:50 
      mongod71:27018     *0    *0     *0     *0       0     8|0     0.0    3.4       0          2.2G  1.7G    n/a   0|0   1|0  696b    94k   25 set01  PRI 11:23:50 
      mongod72:27018     *0    *0     *0     *0       0     4|0     0.0   28.0       0         12.7G 12.2G    n/a   0|0   1|0  405b    47k   10 set01  SEC 11:23:50 
      mongod81:27018     *0    *0     *0     *0       0     8|0     0.0   12.5       0          6.0G  5.4G    n/a   0|0   1|0  810b    94k   24 set02  PRI 11:23:50 
      mongod82:27018     *0    *0     *0     *0       0     5|0     0.0   65.1       0         28.2G 27.7G    n/a   0|0   1|0  459b    47k   12 set02  SEC 11:23:50 

パイプでgrepに渡してプライマリーの行を赤色にしている。
ちなみにシャード2つの各々レプリカセット組んでるクラスタです

気にするポイント

運用中に一番気にしているのは insert/query/update などの発行数はもちろんなのだが qr|qw の数値
運用中高負荷になったり、クソクエリーで、mongoをいじめた場合 に発生しうる

この数値が上がると クエリのタイムアウト、同期遅延 もう様々な障害が発生しうるので
メンテに入れる一つの指標にしてます。

mongotop

コレクション毎に操作に利用した時間が表示される
mongostatでは操作時間がかかっているかわからないので併用して使うとかなり分析に役だつ

実行してみる

$ mongotop --host mongod71 --port 27018

                     ns    total    read    write          2014-12-19T15:32:01-05:00
     admin.system.roles      0ms     0ms      0ms
   admin.system.version      0ms     0ms      0ms
               local.me      0ms     0ms      0ms
         local.oplog.rs      0ms     0ms      0ms
 local.replset.minvalid      0ms     0ms      0ms
      local.startup_log      0ms     0ms      0ms
   local.system.indexes      0ms     0ms      0ms
local.system.namespaces      0ms     0ms      0ms
   local.system.replset      0ms     0ms      0ms

気にするポイント

高負荷時にどれだけ多くread,writeされているが見れるので、
素直に上から順にアプリーションのクエリ発行を見直してあげるといい

クソクエリ発行している場合は確実にこのtopコマンドで上位に来ているのでそれは修正する
スロークエリのログに出ないけどreadの件数が多すぎるものなんかも上位に出てくるので
修正できないか確認してみる

まとめ

あくまで補助ツールなのでこれを使ったから運用が楽になるとかはないけど
パッとDBのステータスを確認するには非常に便利

日頃からクエリの本数や状態をみて知見を貯めておかないと
今日の状態の良し悪し判断ができないので
こういったステータス系は日頃から監視しておきましょう

12
18
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
12
18