LoginSignup
99
105

More than 5 years have passed since last update.

[徹底解説] MongoDBの監視やバックアップができるMMS(MongoDB Management Service)の使い方

Last updated at Posted at 2014-05-03

MMSの概要

MMSの機能

MMS(MongoDB管理サービス)はMongoDBの自動運用管理をしてくれるサービスであり、主に以下の機能があります。

  • 監視
    • MongoDBの各種統計情報収集、グラフ化、監視
    • 閾値を指定して超えたらアラートメール送付
  • バックアップ
    • スナップショット取得・リカバリ
    • 差分バックアップ
    • ポイントインタイムリカバリ(時間指定リカバリ)
  • オートメーション(2014/5現在、公開予定)
    • 無停止バージョンアップ
    • ワンクリック環境構築

MMSとMMSエージェントの役割分担

MongoDB単体ではMMSを利用できません。MMSエージェントを導入して、MMSと接続する必要があります。
MMSエージェントには監視を行う監視エージェントとバックアップを行うバックアップエージェントの二つがあります。それぞれの役割分担は以下の通です。

  • MMS監視エージェント
    • MongoDBから情報を取得し、暗号化してMMSに情報を送る
    • 手元の環境にインストールする必要あり。ただし、MongoDBと同じサーバにインストールする必要はなくMongoDBに接続できる場所であればどこでもOK
    • 一台のMMSエージェントで、複数台のMongoDBと接続することができる
  • MMSバックアップエージェント
    • MongoDBから定期的にスナップショットや更新ログ(oplog)を取得する。
    • MMS指示のもと、MongoDBのリストアやポイントインタイムリカバリを行う
  • MMS
    • MMS監視エージェントから情報を収集して、ユーザに対して監視のダッシュボード(Web)を提供する
    • 監視が閾値を超えたらアラートメールをブラウザに送る
    • ユーザからのバックアップ・リスト指示を受け付けつける

mms.png

クラウド版とオンプレ版

MMSはクラウド版とオンプレ版があります。MMSエージェントはその区別はありません。

  • クラウド版
    • インターネットにあり、アカウントを作るとだれでも利用可能。
    • モニタリングは無料
    • バックアップは有料だが、$5/月以下の利用は無料
  • オンプレ版
    • 自前の環境にMMSサーバをインストールできる
    • 情報を外に出せない企業向け

クラウド版MMSを使ってみる

監視機能、バックアップ機能、どちらを利用するにしても、まずはじめにMMSアカウントの登録が必要です

MMSアカウントの登録

MMS公式ホームページ にアクセス

スクリーンショット 2014-05-03 09.01.03.png

クラウド版は「Fully-Managed MMS」をクリック。

スクリーンショット 2014-05-03 09.08.06.png

MMSのアカウントを新規に作るので「Sign Up」をクリック。

スクリーンショット 2014-05-03 09.17.42.png

適宜埋めてアカウントを作成。
おそらくメールアドレスは何でもOK。「確認メールが来てURLをクリック」などの手順は必要ありません。

(2014/7/1追記)
現時点で、パスワードの他に、二要素認証が必要になっています。電話のSMSメッセージか音声案内、またはgoogle authenticatorによるワンタイムパスワードの取得が必要です。

手っ取り早いのは電話のSMSメッセージです。日本の国際番号である81を付与して +81-90-1234-5678 といった感じで電話番号を登録しておけば、ログインの度にSMSメッセージでワンタイムパスワードが届きます。

アカウントができるとWellcome画面が表示される

スクリーンショット 2014-05-03 09.17.21.png

監視機能を使ってみる

今回試した環境は以下の通り

  • CentOS 6.2
  • MongoDB 2.6.0
  • MMS Monitoring Agent 2.1.2.43

MMS監視エージェントのインストール

Wellcome画面で、Monitoringエージェントの「Get Started」→「Begin Setup」→「Next」と画面遷移してくとMMS監視エージェントの導入手順の画面になる。
利用しているOSを選択(私の場合はCentOSです)。

スクリーンショット 2014-05-03 09.23.14.png

画面にエージェントインストール手順が出ますので、その通り実行します。

スクリーンショット 2014-05-03 09.23.24.png

RPMを落とす

curl -OL https://mms.mongodb.com/download/agent/monitoring/mongodb-mms-monitoring-agent-2.1.2.43-1.x86_64.rpm

RPMをインストールする

sudo rpm -U mongodb-mms-monitoring-agent-2.1.2.43-1.x86_64.rpm

APIキーを/etc/mongodb-mms/monitoring-agent.configに設定する

mmsApiKey=4ace5fc505305aeXXXXXXX  ←MMSアカウントごとに違う値です

エージェントを起動する

sudo service mongodb-mms-monitoring-agent start

エラーが出なければ成功です!

ログは/var/log/mongodb-mms/monitoring-agent.logに出てるので、エラーが出る場合はここら辺を手掛かりにしてください。

MongoDBとMMS監視エージェントの接続

※この手順では、すでにMongoDBがMMSエージェントインストールノードの27017ポートで起動していることを前提としています。

先ほどの画面でそのままNextを押すとホスト追加の画面が表示されます!

スクリーンショット 2014-05-03 09.30.15.png

以下の通り入力します。

  • Internal HostnameにMMSエージェントから見えるホスト名を入れます。localhostはやめて、ユニークなホスト名を入れる事が推奨です。
  • PortにMongoDBの待ち受けポートを入れます。
  • (オプション)SSLで通信を暗号化する場合は「Use SSL」を入力。
  • (オプション)DBにユーザ・パスワード認証をかけている場合は「Auth Mechanism」でUsername/Passwordを選んで「DB Username」と「DB Password」を入力。
  • (オプション)DBをケルベロス認証している人は「Auth Mechanism」でKerberosを選択

全てが入ったら、「Verify Host」をクリック

スクリーンショット 2014-05-03 09.35.30.png

「One or more hosts have been detected.」と出たらMonogDBを見つけられたことになり、成功です。

スクリーンショット 2014-05-03 09.35.49.png

「Start Monitoring」をクリックしてモニタリング開始です!

うまくいくと、以下のようにHostsに表示されます

スクリーンショット 2014-05-03 09.46.03.png

ノードをクリックすると、以下のように勝手に表示されます

スクリーンショット 2014-05-03 09.47.51.png

これで監視エージェントの利用方法の説明は終わりです

バックアップ機能を使ってみる

はじめに、重要な注意点です。
バックアップ機能は単体のMongoDBには適用できません。
その理由はバックアップの方法はMongoDBの更新ログ(oplog)をコピーすることで実現していますが、単体のMongoDBではoplogが有効になっていないためです。単体のMongoDBをバックアップするためには、1ノード構成のレプリカセットにする必要があります。

また、バックアップ機能を作る前に、先にバックアップ対象のMongoDBに対して監視機能を有効にしておくのがスムーズです。

今回はレプリカセットのバックアップを紹介にしますので、監視機能で以下のようにレプリカセットが見えている状態からスタートすることを前提としています。

スクリーンショット 2014-05-03 13.56.32.png

バックアップエージェントのインストール

画面の左のタブからBackupを選びます

スクリーンショット 2014-05-03 10.12.18.png

「Begin Setup」をクリックします

スクリーンショット 2014-05-03 10.13.40.png

2要素認証を求められます。電話による認証とgoogle Authenticatorの2つの方法がありますが、電話に日本の電話番号+81***を入れてもうまくいかなかったため、まだ日本の電話番号ではできないようです。なのでgoogle Authenticatorで認証します。

認証が終わりnextを押すと請求の画面になりますので、適宜入力してください。

スクリーンショット 2014-05-03 12.54.11.png

料金は現時点では以下の通りです

  • 差分バックアップに用いるoplog(DBに対する変更のログ)のサイズが 1Gあたり$1
  • スナップショットが1GBあたり$0.08

月に$5まで無料ということは、スナップショットは取らず、一か月のデータ変更のログ容量(oplog容量)が5G以下であれば、無料ということになります。
勘違いしてはいけないのは、ドキュメントのサイズがそのままoplogのサイズにはならないということです。
ほとんど更新しない読み込み専用システムであれば、ほとんどお金はかかりません。
ただし、ほとんど更新しないということは、自動バックアップを取る意味もあまりなく、mongodumpで十分かもしれません。。。

請求情報を入れると以下のページになります

スクリーンショット 2014-05-03 13.15.41.png

Nextです

スクリーンショット 2014-05-03 13.15.55.png

MMSのバックアップエージェントを入れるOSを選択します。私の場合はCentOSです。

スクリーンショット 2014-05-03 13.22.03.png

ダウンロードします

curl -OL https://mms.mongodb.com/download/agent/backup/mongodb-mms-backup-agent-1.4.6.43-1.x86_64.rpm

RPMをインストールします

sudo rpm -U mongodb-mms-backup-agent-1.4.6.43-1.x86_64.rpm

/etc/mongodb-mms/backup-agent.configにAPIキーを設定します

apiKey=2824d4bxxxxxxxx

起動します

sudo service mongodb-mms-backup-agent start

ポップアップの手順書をクローズします。

スクリーンショット 2014-05-03 13.28.05.png

「Verify Agent」をクリックします。
Agent Verifiedと表示されたら接続成功です!Nextをクリックします。

MMSバックアップエージェントにMongoDBのノードを追加する

監視機能で正しくレプリカセットが認識され、かつAgent Verifiedな状態であれば、
Nextをクリックすると、レプリカセットを選択する画面になるはずです。

スクリーンショット 2014-05-03 13.59.43.png

バックアップを取るレプリカセットを選択します

スクリーンショット 2014-05-03 14.00.41.png

  • Sync Sourceで、バックアップのための更新ログ(oplog)を取得する先を選べます。 プライマリのロードを高めないようにしたければ、「any seconday」でセカンダリから取得するのがよいでしょう。
  • (オプション)SSLで通信を暗号化する場合は「Use SSL」を入力。
  • (オプション)DBにユーザ・パスワード認証をかけている場合は「Auth Mechanism」でUsername/Passwordを選んで「DB Username」と「DB Password」を入力。
  • (オプション)DBをケルベロス認証している人は「Auth Mechanism」でKerberosを選択

これらを入力したらNextです

スクリーンショット 2014-05-03 14.05.34.png

成功すると、このようにReplica Set Statusのメニューで見えるようになります。

定期的なスナップショット取得

メニューの右側の設定アイコンから「Edit Snapshot Schedule」を押すと以下の画面になり設定できます

スクリーンショット 2014-05-03 14.17.59.png

リストアする

リストア対象のレプリカセットを選択して、右上のRestoreをクリックすると以下の画面になります

スクリーンショット 2014-05-03 14.16.07.png

すると、スナップショットを選ぶか、どの時刻まで戻るか、を入力できます。

私の環境ではまだスナップショットがないため、表示されていないです。

オンプレ版MMSを使ってみる(玄人向け)

監視機能

手順概要

基本的には本家の解説どおりです。

  1. ハードウェア要件を確認する
  2. MMSデータ格納用にMongoDBを用意する
  3. SMTPサーバを用意する
  4. MMSをインストールする
  5. MMSを設定する
  6. MMSを起動する

1.ハードウェア要件を確認する

注意点
* マニュアルには書いてありませんが、「sudo」が必須です。
* ulimitを増やさないと、途中でスレッドを作れなくなりエラーが出ます。

私は以下の環境でやりました

  • CentOS 6.2
  • MongoDB 2.6.0
  • mongodb-mms-1.4.1.62-1.x86_64.rpm

2. MMSデータ格納用にMongoDBを用意する

MMSのデータ自体も、MongoDBに格納します。

耐障害性を考慮して、レプリカセットが推奨されいますが、スタンドアロンでも動きます。
実運用を想定すると、スタンドアロン構成は考えにくいため、レプリカセットで作ってみます。

レプリカセットの構築は、本記事ではそこまで詳しくは説明しません。
私の記事MongoDBでゆるふわDB体験などを参照してください。

本来は冗長化のために別筐体に3つのmongodを立てるべきですが、今回は同一サーバ上に3つのmongodを立ててレプリカセットを組みます。

私の環境ではIPは「192.168.1.7」なので適宜読み替えてください。
またレプリカセット名は「rsmms」にしてますが、ここも適宜変えてください。

mkdir data1 data2 data3
mongod  --dbpath data1  --logpath mongo1.log --replSet "rsmms" --port 27001 --fork &
mongod  --dbpath data2  --logpath mongo2.log --replSet "rsmms" --port 27002 --fork &
mongod  --dbpath data3  --logpath mongo3.log --replSet "rsmms" --port 27003 --fork &
./bin/mongo --port 27001
> config = {
... _id : "rsmms",
... members : [
... { _id : 0, host : "192.168.1.7:27001"},
... { _id : 1, host : "192.168.1.7:27002"},
... { _id : 2, host : "192.168.1.7:27003"}]}
> rs.initiate(config)

3.SMTPサーバを用意する

ここは省略します。
メール通知が必要ないならば、なくてもできます。

4.MMSパッケージをインストール

ここにアクセス→ https://www.mongodb.com/subscription/downloads

スクリーンショット 2014-05-03 10.22.33.![スクリーンショット 2014-05-03 14.27.45.png](https://qiita-image-store.s3.amazonaws.com/0/33447/6a1d2c67-1ee5-17c9-de49-6f4bf74fa5f0.png)<br>
png

ページ中腹の「Package: mongodb-mms-1.4.1.62-1.x86_64.rpm」からRPMをダウンロード

インストール

 rpm -ivh mongodb-mms-1.4.1.62-1.x86_64.rpm

5.MMSを設定する

基本的には本家のマニュアルどおりに行きます。

RPMで入れると、/opt/mongodb/mms/conf/conf-mms.propertiesに設定ファイルができます。

まず設定ファイルのパーミッションを落とします

chmod 600 /opt/mongodb/mms/conf/conf-mms.properties

conf-mms.propertiesの中を以下の通り編集します

ブラウザからMMSにアクセスするときのURL

mms.centralUrl=http://192.168.1.7:8080 #MMSのメイン画面URL
mms.centralUrl=http://192.168.1.7:8081 #MMSバックアップ用のURL

メールの設定。MMSをとりあえず動かすだけであれば、適当なものでOK

mms.fromEmailAddr=mmsadmin@hoge.com
mms.replyToEmailAddr=mmsadmin@hoge.com
mms.adminFromEmailAddr=mmsadmin@hoge.com
mms.adminEmailAddr=mmsadmin@hoge.com
mms.bounceEmailAddr=mmsadmin@hoge.com

MMSのデータを格納するレプリカセットの設定

mongo.mongoUri=mongodb://192.168.1.7:27001,192.168.1.7:27002,192.168.1.7:27003
mongo.replicaSet=rsmms

6.MMSを起動する

/etc/init.d/mongodb-mms start

※sudoがないと動きません。ない場合は「yum install sudo」でOK。

起動に成功後、ブラウザでhttp://192.168.1.7:8080/user/loginにアクセスし、以下のような画面が出れば成功です

スクリーンショット 2014-05-03 14.27.45.png

以上でオンプレ版の説明を終わります。

感想

以前もMMSを使っていたのですが、最近になってかなりインストールの敷居が下がりました。ご覧のとおり非常に使いやすいです。MongoDBでそこそこ重要なシステムを作るときは、とりあえずクラウド版の監視機能を入れることがお勧めです。

また、お金次第ですがバックアップも非常に便利だと思います。特に差分バックアップとポイントインタイムリカバリは、MMS抜きだとかなり難しい(というかできないと思うので、お金を払っただけの恩恵は受けられると思います。

オンプレ版は構築はそこそこ大変ですが、たとえ暗号化していたとしてもインターネットに情報を出せないシステムはありますので、そういうときの選択肢になります。

99
105
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
99
105