LoginSignup
21
21

More than 5 years have passed since last update.

MMS で MongoDB の監視とバックアップを簡単におこなう

Last updated at Posted at 2013-12-23

MongoDB, Inc. (ちょっと前まで 10gen だった) が提供するサービスとして MongoDB Management Services こと MMS がある。これは無償または有償で MongoDB サービスの監視、アラート、そしてバックアップをとってくれるというもの。

何ができるのか

  • 監視 (無料)
    • 接続数、ロック率、ネットワーク帯域、メモリ使用状況、Oplog の流速
    • munin を接続している場合は、CPU 時間、ディスク使用量などのハードウェア項目
    • ping (疎通) ログ
    • プロファイリング
  • アラート (無料)
    • 監視が途絶えたとき
    • ホストが落ちた時
  • バックアップ (有料)
    • 24 時間以内の任意時刻の状態を復元
    • 6 時間おきのスナップショット (最長 2 日)
    • 1 週間おきのスナップショット (最長 1 ヶ月)
    • 1 ヶ月おきのスナップショット (最長 1 年)

現時点では、バックアップ以外の機能は無償で提供されている。またバックアップについては Oplog 1 GB あたり USD 1.00, スナップショット保持 1 GB あたり USD 0.08 となっているが、最初の 12 ヶ月間は USD 5.00 未満の利用であれば課金されない。

アカウントの準備

アカウントの取得は MMS のサイトから行う。

  • First Name / Last Name: なまえ
  • Email Address: メールアドレス (ログインおよび、他のユーザから招待されるときに用いる)
  • Password
  • Company : 個人で使う場合は Individual などとする
  • Country : 国
  • Job Responsibility : 役職。とりあえず Developer とかでよい
  • MMS Group : すでに運用しているグループに参加する場合は “I’m joining an existing MMS group ..” を選ぶ。はじめての場合は “I’m the first person” とする。

ここで入力する MMS Group でグループが作成され、以後そのグループに対してサーバおよび他の管理者を追加することになる。あとで他のグループを作成し、1つのアカウントで複数のグループに所属することが可能なので、まず個人環境で試したい場合は MMS Group に “Taro’s Awesome Application” などぶつからなさそうな名前を適当に入れておけばよい。

ログインが終わったらダッシュボードが表示されるので、右上の Settings から以下の作業を済ませる。

  • General Settings -> Group Time Zone: 日本時間またはサービスで標準的に採用しているタイムゾーン
  • API Key, Secret Key : それぞれ控える

MMS Monitoring の構成

エージェントの設定

エージェントは、 MongoDB の状態を収集する小さなプログラムである。

あまり README では触れられてないが、エージェントは、監視対象の全 MongoDB インスタンスに接続が可能な クライアントホスト 1 つか 2 つに導入する だけでよい。(ここでいう “全 MongoDB インスタンス” は MMS Group に登録している全インスタンスである)

導入に適したホストの例を以下にあげる

  • 全 MongoDB インスタンスにアクセスできるようにファイアウォールで構成された踏み台 (ゲートウェイ) サーバー
  • すべての MongoDB インスタンスと VPN で接続をしている遠隔地の管理サーバー

複数のエージェントを登録した場合、 MMS ではうち 1 つがアクティブになり、そのアクティブになったホストから到達可能なサーバーしか監視対象にならない。運用が異なるなどの理由で、1 台のエージェントからすべての MongoDB インスタンスへの到達が不可能な構成になっている場合は、複数の MMS Group を作成し、グループごとに API Key を変えてエージェントを起動する必要がある。

cd /tmp/
wget https://mms.mongodb.com/settings/mms-monitoring-agent.tar.gz
tar zxvf mms-monitoring-agent.tar.gz && rm mms-monitoring-agent.tar.gz
sudo mv mms-agent /opt/

sudo aptitude install python python-dev python-setuptools
sudo easy_install pymongo hashlib hmac

sudo mkdir -p /var/log/mms-agent/
sudo touch /var/log/mms-agent/agent.log
sudo chown nobody:nogroup /var/log/mms-agent/agent.log

先ほど設定画面から確認した API Key を埋め込む

export MMS_API_KEY=deadbeaf…
export MMS_SECRET_KEY=deadbeaf…
sed -i "s/@API_KEY@/${MMS_API_KEY}/" /opt/mms-agent/settings.py
sed -i "s/@SECRET_KEY@/${MMS_SECRET_KEY}/" /opt/mms-agent/settings.py

Gist に貼り付けた upstart の起動スクリプト を用いる (Ubuntu 13.10 で確認)

wget -q "https://gist.github.com/shao1555/8098541/raw/c40c38afddfa5da5a234f969da3f366a0b692153/mms-agent.conf" -O - | sudo tee /etc/init/mms-agent.conf

サービスの開始 / 終了はこちら

sudo service mms-agent start
sudo service mms-agent stop
sudo service mms-agent status

完了後、トップページのステップ2 に “Ping received from Monitoring Agent” の一文がでていれば OK

次のステップ (Add a Host) で、ホストの FQDN を入力すれば監視がはじまる

  • Sharding / Replica Set の場合は 1 台だけ追加すればいい。 Sharding と Replica Set 両方を構成している場合は、適当な mongos を追加すればすべて検知してくれるはず。
  • エージェント, 監視対象ともに 1 台の同一マシンで行っている場合は、 Internal Hostname を “localhost” とすればよい。
  • ポートはデフォルトで 27017

munin-node のインストール (任意)

上記の手順で MongoDB 関連のパラメータは監視されるが、CPU 使用率などのハードウェア情報を取得したい場合は munin-node を 監視対象の各 MongoDB インスタンス に入れ、エージェントを入れたホストから munin-node に接続が可能なようにファイアウォール等の設定を行う (デフォルトでは 4949/tcp) 。

sudo aptitude install munin-node
sudo ln -s /usr/share/munin/plugins/iostat /etc/munin/plugins/
sudo ln -s /usr/share/munin/plugins/iostat_ios /etc/munin/plugins/
sudo vim /etc/munin/munin-node.conf 
# mms-agent が動いているホストから接続できるように、 allow 行を書き換えるか、 cidr_allow を追加する。mms-agent と munin-node が同一マシンの場合は設定不要

echo '
[iostat]
env.SHOW_NUMBERED 1' | sudo tee -a /etc/munin/plugin-conf.d/munin-node

sudo service munin-node restart

MMS Backup の構成

次に MMS Backup を試してみる。

MMS Backup は Replica Set 構成でないと動作をしないが、可用性の確保が目的でないのであれば、インスタンス 1 台 + MMS Backup という構成でも可能。

MongoDB の設定を変更

sudo vim /etc/mongodb.conf
# replSet = (任意の名前) を追記

sudo service mongodb restart
mongo
> rs.initiate()
mmsBackupTestdrive:PRIMARY> rs.status()

上記の通り、プロンプトが変われば OK (SECONDARY になっていても数回 Enter を押せば PRIMARY になるはず)

MMS Backup アカウントの有効化

次に、 MMS の管理画面から登録作業を行う。面倒なことにクレジットカード情報が必要。(とはいえ無料枠があるのでいきなり課金されることはない)

Phone Number は +819012345678 のように、手元の携帯番号を入力、続いてクレジットカード番号などを入力し登録を完了させる。

エージェントのインストール

cd /tmp/
wget https://mms.mongodb.com/settings/mms-backup-agent-linux_amd64.tar.gz
tar zxvf mms-backup-agent-linux_amd64.tar.gz && rm mms-backup-agent-linux_amd64.tar.gz
sudo mv backup-agent /opt/

sudo mkdir -p /var/log/backup-agent/
sudo touch /var/log/backup-agent/agent.log
sudo chown nobody:nogroup /var/log/backup-agent/agent.log

API Key は先ほどと同じ。

export MMS_API_KEY=deadbeaf…
sed -i "s/@API_KEY@/${MMS_API_KEY}/" /opt/backup-agent/local.config

Gist に貼り付けた upstart の起動スクリプト を用いる (Ubuntu 13.10 で確認)

wget -q "https://gist.github.com/shao1555/8098541/raw/c35e416c7c8f29ea8ff8157d36e241e6d8234534/backup-agent.conf" -O - | sudo tee /etc/init/backup-agent.conf

サービスの開始 / 終了はこちら

sudo service backup-agent start
sudo service backup-agent stop
sudo service backup-agent status

完了後、トップページのステップ2 に “Ping received from Backup Agent” の一文がでていれば OK

次のステップ (Start Backup) で、Replica Set 名を入力すればバックアップが開始される。

  • Sharding / Replica Set の場合は 1 台だけ追加すればいい。 Sharding と Replica Set 両方を構成している場合は、適当な mongos を追加すればすべて検知してくれるはず。
  • エージェント, 監視対象ともに 1 台の同一マシンで行っている場合は、 Internal Hostname を “localhost” とすればよい。
  • ポートはデフォルトで 27017

スナップショットからの復元

まだ試したことがないが、説明 によると、スナップショットの db ディレクトリを HTTPS によるダウンロードか SCP によるアップロードで受け取ることができるとのこと。

課金についての注意

このまま放置すると、無料枠を超える (2GB の DB で oplog が月に 500 MB 程度) 、あるいは 1 年経つと課金されてしまう。 “Backup” の Replica Set Status 一覧から、すべての Replica Set を ”Stop” し、続けて “Terminate” することで、課金対象のリソースをすべて解約することができる。

なお、バックアップを有効化する前に、月額の概算バックアップ費用をReplica Set Status から確認することもできる。

スクリーンショット 2013-12-24 1.27.22.png

21
21
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
21
21