256bitの殺人メニュー

インフラエンジニアだったソリューションアーキテクトなくわののブログ。こちらのBlogは個人の意見となっていて会社とは全く関係ありません。お約束です。[twitter:@kuwa_tw]めんどくさがりが重い腰を上げて何かをアウトプットすることにどれほどの意味があるのかを試してみたいブログでもある。

mongostatのdiscoverオプションはエライ台数のmongoDBクラスタでは必須ですおの巻

以外にしらないんじゃないかなっと。

MongoDBの情報取るのに、mongostatってコマンドがあります。
すごい便利なコマンドなんですが、mongoDBの台数が多くなってくるとだんだんめんどくさくなってきますよね。
mongostatはdiscoverオプションが便利すぎるので、紹介。

1台ずつ指定

まずはオーソドックスに1台ずつ指定していきます。

$ mongostat --host 192.168.0.11:27018,192.168.0.12:27018

                        insert  query update delete getmore command flushes mapped  vsize    res faults locked % idx miss %     qr|qw   ar|aw  netIn netOut  conn                       set repl       time
192.168.0.11:27018            0    540    167      0     258     671       0  36.1g  79.2g  14.5g      1      2.5          0       0|0     1|0   121k     1m  6116 RSTest1001    M   19:44:50
192.168.0.12:27018            0    469    215      0     313     639       0  30.1g  66.8g  15.5g      0      2.7          0       0|0     1|0   128k   984k  5504 RSTest1002    M   19:44:50

192.168.0.11:27018            0    531    154      0     237     561       0  36.1g  79.2g  14.6g      0      1.9          0       0|0     2|0   113k     1m  6116 RSTest1001    M   19:44:51
192.168.0.12:27018            0    471    178      0     278     536       0  30.1g  66.8g  15.5g      2      3.6          0       0|0     2|0   119k     1m  5504 RSTest1002    M   19:44:51

192.168.0.11:27018            0    580    174      0     252     654       0  36.1g  79.2g  14.5g      1      2.4          0       0|0     2|0   134k     1m  6116 RSTest1001    M   19:44:52
192.168.0.12:27018            0    524    238      0     317     665       0  30.1g  66.8g  15.5g      1      2.8          0       0|0     2|0   139k     1m  5504 RSTest1002    M   19:44:52
(snip)


でも、そのうち、

$ mongostat --host 192.168.0.11:27018,192.168.0.12:27018,192.168.0.13:27018,192.168.0.14:27018,192.168.0.15:27018,192.168.0.16:27018,192.168.0.17:27018,192.168.0.18:27018

って、これ多いわwww
ってなるタイミングがあると思います。
ウンウン辛いよね。わかるよ。

discoverオプション

これ、凄い便利です。勝手に指定したサーバが、

  • レプリカセットのメンバーなら各レプリカセットのメンバーをすべて取得する。
  • mongosにかけると、このmongosが管理しているシャードメンバーをすべて取得する

事ができます。

レプリカセットの場合
$ mongostat --discover --host 192.168.0.11:27018
connected to: 192.168.0.11:27018

                        insert  query update delete getmore command flushes mapped  vsize    res faults locked % idx miss %     qr|qw   ar|aw  netIn netOut  conn                       set repl       time
192.168.0.41:27018            0    747    228      0     325     832       0  36.1g  79.2g  14.5g      1      3.6          0       0|0     2|0   163k     1m  6117 RSTest001    M   19:50:06

192.168.0.41:27018            0    612    180      0     273     654       0  36.1g  79.2g  14.6g      2      2.9          0       0|0     2|0   137k     1m  6117 RSTest001    M   19:50:07
192.168.0.51:27018       no data
192.168.0.61:27018       no data

192.168.0.41:27018            0    677    173      0     269     669       0  36.1g  79.2g  14.5g      0      2.2          0       0|0     2|0   136k     1m  6117 RSTest001    M   19:50:08
192.168.0.51:27018           *0     *0   *170     *0       0    23|0       0  32.1g  64.9g  14.4g      0        2          0       0|0     0|0     1k    11k   237 RSTest001  SEC   19:50:08
192.168.0.61:27018           *0     *0   *165     *0       0    25|0       0  34.1g  68.9g  14.2g      1      2.2          0       0|0     0|0     1k    12k   237 RSTest001  SEC   19:50:08

192.168.0.41:27018            0    473    172      0     255     631       0  36.1g  79.2g  14.5g      2      3.2          0       0|0     2|0   115k   924k  6117 RSTest001    M   19:50:09
192.168.0.51:27018           *0     *0   *174     *0       0    37|0       0  32.1g  64.9g  14.4g      2      2.6          0       0|0     0|0     2k    17k   237 RSTest001  SEC   19:50:09
192.168.0.61:27018           *0     *0   *179     *0       0    36|0       0  34.1g  68.9g  14.2g      1      2.4          0       0|0     0|0     2k    17k   237 RSTest001  SEC   19:50:09

192.168.0.41:27018            0    646    162      0     254     671       0  36.1g  79.2g  14.5g      0      2.1          0       0|0     2|0   138k     1m  6117 RSTest001    M   19:50:10
192.168.0.51:27018           *0     *0   *162     *0       0    23|0       0  32.1g  64.9g  14.4g      0        2          0       0|0     0|0     1k    11k   237 RSTest001  SEC   19:50:10
192.168.0.61:27018           *0     *0   *161     *0       0    24|0       0  34.1g  68.9g  14.2g      1      2.3          0       0|0     0|0     1k    12k   237 RSTest001  SEC   19:50:10
mongosの場合

こんな感じです、超大量なので一部。
これでクラスタに所属しているサーバすべての状況を見ることができます。

$ mongostat --discover --host 192.168.0.200:27017
connected to: 192.168.0.200:27017

                        insert  query update delete getmore command flushes mapped  vsize    res faults locked % idx miss %     qr|qw   ar|aw  netIn netOut  conn                       set repl       time
(snip)
 192.168.0.72:27018          *0     *0   *206     *0       0    27|0       0  18.1g  36.9g  13.1g      0      2.3          0       0|0     0|0     1k    13k   238 RSTest24  SEC   19:53:04
 192.168.0.72:27019          *0     *0    *45     *0       0    24|0       0  20.1g  40.9g  8.32g      1        2          0       0|0     0|0     1k    12k   238 RSTest24  SEC   19:53:04
 192.168.0.73:27018           0    367    186      0     263     498       0  18.1g  42.3g  13.5g      0      2.2          0       0|0     2|0    97k     1m  5538 RSTest25    M   19:53:04
 192.168.0.73:27019           0    149     69      0     112     257       0  18.1g    42g  7.61g      1      1.9          0       0|0     2|0    47k     1m  5355 RSTest25    M   19:53:04
 192.168.0.74:27018          *1     *0   *185     *0       0    25|0       0  18.1g  36.9g  13.6g      1      2.9          0       0|0     0|0     1k    12k   238 RSTest25  SEC   19:53:04
 192.168.0.74:27019          *0     *0    *69     *0       0    24|0       0  18.1g  36.9g  7.99g      1      2.8          0       0|0     0|0     1k    12k   238 RSTest25  SEC   19:53:04
 192.168.0.75:27018          *1     *0   *185     *0       0    27|0       0  18.1g    37g  12.7g      0      2.2          0       0|0     0|0     1k    13k   238 RSTest25  SEC   19:53:04
 192.168.0.75:27019          *0     *0    *69     *0       0    25|0       0  18.1g  36.9g  8.63g      0      1.4          0       0|0     0|0     1k    12k   238 RSTest25  SEC   19:53:04
 192.168.0.76:27018           0    324    221      0     298     508       0  18.1g  42.3g  13.5g      0      2.5          0       0|0     2|0   102k     1m  5485 RSTest26    M   19:53:04
 192.168.0.76:27019          *0     *0    *46     *0       0    24|0       0  18.1g  36.9g  7.85g      0      0.8          0       0|0     0|0     1k    12k   238 RSTest26  SEC   19:53:04
 192.168.0.77:27018          *0     *0   *222     *0       0    26|0       0  18.1g  36.9g  13.6g      1      2.4          0       0|0     0|0     1k    13k   238 RSTest26  SEC   19:53:04
 192.168.0.77:27019           0    120     46      0      77     195       0  18.1g  42.1g  7.74g      0      0.9          0       0|0     2|0    35k   837k  5368 RSTest26    M   19:53:04
 192.168.0.78:27018          *0     *0   *222     *0       0    26|0       0  18.1g  36.9g  13.2g      0      2.1          0       0|0     0|0     1k    13k   238 RSTest26  SEC   19:53:04
 192.168.0.78:27019          *0     *0    *46     *0       0    23|0       0  18.1g  36.9g  8.26g      0        1          0       0|0     0|0     1k    11k   238 RSTest26  SEC   19:53:04
(snip)


基本的にはマスターの動作を見たいことが多いので、grepでMなど入れてみるのが良いですね。

$ mongostat --discover --host 192.168.0.200:27017 | grep M
connected to: 192.168.0.200:27017

                        insert  query update delete getmore command flushes mapped  vsize    res faults locked % idx miss %     qr|qw   ar|aw  netIn netOut  conn                       set repl       time
(snip)
 192.168.0.73:27018           0    367    186      0     263     498       0  18.1g  42.3g  13.5g      0      2.2          0       0|0     2|0    97k     1m  5538 RSTest25    M   19:53:04
 192.168.0.73:27019           0    149     69      0     112     257       0  18.1g    42g  7.61g      1      1.9          0       0|0     2|0    47k     1m  5355 RSTest25    M   19:53:04
 192.168.0.76:27018           0    324    221      0     298     508       0  18.1g  42.3g  13.5g      0      2.5          0       0|0     2|0   102k     1m  5485 RSTest26    M   19:53:04
 192.168.0.77:27019           0    120     46      0      77     195       0  18.1g  42.1g  7.74g      0      0.9          0       0|0     2|0    35k   837k  5368 RSTest27    M   19:53:04
(snip)

以上です

小ネタでした。今度MongoDB Casualやる事になっておりますので、もうすぐに告知する予定ですので、是非参加よろしくお願いしまーす!((そろそろ準備しないと、、、(;´Д`)))
れっつらもんご!

MongoDB: The Definitive Guide

MongoDB: The Definitive Guide