丸の内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の導入については上記のスライドを参考にしてください
- ちなみに今回監視をすることにした環境はMongoDBでゆるふわDB体験の第5回を参考に構築したmongodbx3 mongoconfx1 mongosx1 の環境になっています。
適当に知っていることを列挙していきます。
MMSにホストの追加
Hostsの横にあるADD HOSTをクリックし、ホスト名とポート番号を入力しましょう。
私はmongosで利用しているホスト名とポート番号を利用しました。ここで登録するホスト名はhostnameコマンドで出てくるホスト名が良いかと思います。
※もしかしたら、/etc/hostsで名前解決できるようになってる必要があるかも。私の環境ではubuntuをしてします。
登録したら、数分待ちましょう。私は登録したあと風呂に入って時間潰し!
すると…
自動的に他のmongoサービスが登録される
帰ってきたらmongodbやmongoconfも自動で登録されていました。
今回はシャードだけの構成だったのでPrimaryとしか表示されていませんが、レプリカセットを作っておくとSecondary等も表示されたりします。
最初に追加されたhostからdiscoverしてたりするのかな?とおもってます。
詳細はまた調査をもって。。。
登録されているホストをクリックしグラフの表示
ちゃんとAgentがmongodbの状態を取得していることがわかります。
ulimitの値が低いと警告を発する
赤字で「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でも確認します。
反映までには時間がかかります。
みごと赤字が消えました。
このulimitいちいち変更してやるひつようがあるので、私は起動スクリプトを編集し「ulimit -n 8192」など追加しています。
もっとうまくやれれてる方居たら教えて下さいm(_ _)m
補足で先ほどulimit変更のためにサーバ落としましたが、落としている時間は以下のように真っ赤かになっています。
もう少し、ダッシュボードとかCPUの値取得とかあるのですが、疲れたので今日はこの辺りで失礼します。