丸の内MongoDB勉強会 #10に参加してきました

先日はじめてMongoDBの勉強会に参加してきました。
 勉強会はこちら:丸の内MongoDB勉強会 #10

主な内容はMongoDBの初心者向けのハンズオンとZabbixとMMSを利用したMongoDBの監視の話とプラス懇親会でした。
私は勤め先のサービスでMongoDBの構築や運用をしているのですが、少しさわれるだけで、オペレーション等を全く勉強したことがないのです…。
すると今回初心者向けと私の心に響くハンズオンがあるということで、参加しようと思いました。
また、それだけではなくちょうどMMSを利用していたところなので、いろいろとTispを聞けたらいいなと思ってもいました。

ハンズオンの内容等は上に張り出しましたAtndから巡っていただくと資料はあるのでそちらで確認して下さい。

つづいてMongoDBの監視について


資料はコチラ


まずZabbixのあたりから弊社では監視の際mongostat等を実行しその中から結果を取り出して監視のエージェントにぶち込んでいたのですが、なんと、ZabbixServerにMongoDBの監視用プラグインがあるとのこと!
どこかで一度利用してみて、使い勝手が良ければタイミングを見計らって監視の方法を変えれたらなと検討中です。

監視の方法でMMS(MongoDB Monitoring and Backup Service)というMongoDBの開発元?の10genが提供している無料で使える監視ツールというものがあります。
上の方でも記載していますが、ちょうどMMSを利用していまして、発表中に私のTips等も共有させていただきました。
会場やTwitterを見る限り皆さんMMSに興味を持たれたようで、またMMSに関する日本語のお話もあまりないのかなと思いましたので、この機会に私の知っている内容をまとめてみようかと思います。

  • MMSの導入については上記のスライドを参考にしてください

適当に知っていることを列挙していきます。

MMSにホストの追加

f:id:mominosin:20130525005306p:plain
Hostsの横にあるADD HOSTをクリックし、ホスト名とポート番号を入力しましょう。
私はmongosで利用しているホスト名とポート番号を利用しました。ここで登録するホスト名はhostnameコマンドで出てくるホスト名が良いかと思います。
※もしかしたら、/etc/hostsで名前解決できるようになってる必要があるかも。私の環境ではubuntuをしてします。
登録したら、数分待ちましょう。私は登録したあと風呂に入って時間潰し!
すると…

自動的に他のmongoサービスが登録される

f:id:mominosin:20130525005317p:plainf:id:mominosin:20130525005310p:plainf:id:mominosin:20130525005306p:plain
帰ってきたらmongodbやmongoconfも自動で登録されていました。
今回はシャードだけの構成だったのでPrimaryとしか表示されていませんが、レプリカセットを作っておくとSecondary等も表示されたりします。
最初に追加されたhostからdiscoverしてたりするのかな?とおもってます。
詳細はまた調査をもって。。。

登録されているホストをクリックしグラフの表示

f:id:mominosin:20130525005304p:plain
ちゃんとAgentがmongodbの状態を取得していることがわかります。

ulimitの値が低いと警告を発する

f:id:mominosin:20130525005303p:plain
赤字で「Ulimitの値が低すぎる!!」って警告していますね。
推奨値等はコチラ

では警告が出ないようにしましょう。

root@ubuntu:~# ps -ef |grep mongod01
root     23991     1  3 11:13 ?        00:02:58 mongod --shardsvr --port 27118 --dbpath /var/lib/mongod01 --logpath /var/lib/log/mongod01.log --fork
root     31131 30860  0 12:41 pts/0    00:00:00 grep --color=auto mongod01
root@ubuntu:~# cat /proc/23991/limits
Limit                     Soft Limit           Hard Limit           Units    
Max cpu time              unlimited            unlimited            seconds  
Max file size             unlimited            unlimited            bytes    
Max data size             unlimited            unlimited            bytes    
Max stack size            8388608              unlimited            bytes    
Max core file size        0                    unlimited            bytes    
Max resident set          unlimited            unlimited            bytes    
Max processes             7792                 7792                 processes
Max open files            1024                 4096                 files    
Max locked memory         65536                65536                bytes    
Max address space         unlimited            unlimited            bytes    
Max file locks            unlimited            unlimited            locks    
Max pending signals       7792                 7792                 signals  
Max msgqueue size         819200               819200               bytes    
Max nice priority         0                    0                   
Max realtime priority     0                    0                   
Max realtime timeout      unlimited            unlimited            us   
root@ubuntu:~# sudo kill -9 23991
root@ubuntu:~# ps -ef |grep mongod01
root     31148 30860  0 12:43 pts/0    00:00:00 grep --color=auto mongod01

先ほど警告が出ていたサービスのUlimitの値を見てみます。
確認して欲しいのはほぼ中央の「Max open files 1024 4096 files 」の部分Soft limitがOSデフォルトの1024になってます。

Ulimit変更して再度サービスを立ち上げます。

root@ubuntu:~# ulimit -n 4096
root@ubuntu:~# mongod --shardsvr --port 27118 --dbpath /var/lib/mongod01 --logpath /var/lib/log/mongod01.log --fork
root@ubuntu:~#
root@ubuntu:~# ps -ef |grep mongod01
root     31189     1  5 12:44 ?        00:00:00 mongod --shardsvr --port 27118 --dbpath /var/lib/mongod01 --logpath /var/lib/log/mongod01.log --fork
root     31203 30860  0 12:44 pts/0    00:00:00 grep --color=auto mongo
root@ubuntu:~# cat /proc/31189/limits
Limit                     Soft Limit           Hard Limit           Units    
Max cpu time              unlimited            unlimited            seconds  
Max file size             unlimited            unlimited            bytes    
Max data size             unlimited            unlimited            bytes    
Max stack size            8388608              unlimited            bytes    
Max core file size        0                    unlimited            bytes    
Max resident set          unlimited            unlimited            bytes    
Max processes             7792                 7792                 processes
Max open files            4096                 4096                 files    
Max locked memory         65536                65536                bytes    
Max address space         unlimited            unlimited            bytes    
Max file locks            unlimited            unlimited            locks    
Max pending signals       7792                 7792                 signals  
Max msgqueue size         819200               819200               bytes    
Max nice priority         0                    0                   
Max realtime priority     0                    0                   
Max realtime timeout      unlimited            unlimited            us  
root@ubuntu:~#

再起動ごUlimitの値を確認すると「Max open files 4096 4096 files 」となって値が増えました。

MMSでも確認します。
 反映までには時間がかかります。
f:id:mominosin:20130525005313p:plain
みごと赤字が消えました。
このulimitいちいち変更してやるひつようがあるので、私は起動スクリプトを編集し「ulimit -n 8192」など追加しています。
もっとうまくやれれてる方居たら教えて下さいm(_ _)m

補足で先ほどulimit変更のためにサーバ落としましたが、落としている時間は以下のように真っ赤かになっています。
f:id:mominosin:20130525005302p:plain

もう少し、ダッシュボードとかCPUの値取得とかあるのですが、疲れたので今日はこの辺りで失礼します。