使用 MMS 轻松监控和备份 MongoDB

MongoDB, Inc.(以前称为10gen)提供了一个名为MongoDB管理服务(MMS)的服务。它可以免费或者付费地监控、提醒和备份MongoDB服务。

我能做什么?

    • 監視 (無料)

接続数、ロック率、ネットワーク帯域、メモリ使用状況、Oplog の流速
munin を接続している場合は、CPU 時間、ディスク使用量などのハードウェア項目
ping (疎通) ログ
プロファイリング

アラート (無料)

監視が途絶えたとき
ホストが落ちた時

バックアップ (有料)

24 時間以内の任意時刻の状態を復元
6 時間おきのスナップショット (最長 2 日)
1 週間おきのスナップショット (最長 1 ヶ月)
1 ヶ月おきのスナップショット (最長 1 年)

目前,除了备份功能外,其他功能都提供免费服务。而备份方面,Oplog每1 GB收费1.00美元,快照保留每1 GB收费0.08美元,但在最初的12个月中,如果使用费用低于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,将创建一个群组,并且以后将向该群组添加服务器和其他管理员。您还可以创建其他群组,并在一个帐户中加入多个群组,所以如果您想先在个人环境中尝试,可以随意为 MMS Group 输入一个看起来不重复的名称,如“太郎的超棒应用程序”。

完成登录后,将显示仪表板,然后从右上角的“设置”中完成以下操作。

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

 

    API Key, Secret Key : それぞれ控える

MMS监控的配置

代理人的设置代理是一个用于收集MongoDB状态的小程序。

虽然 README 没有提到很多,但是我们只需要在一个或两个客户端主机上安装代理即可连接到所有监视对象的 MongoDB 实例。(这里的“所有 MongoDB 实例”指的是在 MMS 群组中注册的所有实例)

以下是一些適合導入的主機示例。

    • 全 MongoDB インスタンスにアクセスできるようにファイアウォールで構成された踏み台 (ゲートウェイ) サーバー

 

    すべての MongoDB インスタンスと VPN で接続をしている遠隔地の管理サーバー

如果注册了多个代理,MMS只会激活其中一个,并且只会监视可以从该激活代理主机访问到的服务器。如果由于不同的运营原因,一个代理主机无法访问到所有的MongoDB实例,那么需要创建多个MMS组,并且每个组都需要使用不同的API密钥来启动代理。

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密钥嵌入

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上的启动脚本 (在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”的消息,那就没问题。

在下一步(添加主机)中,输入主机的完全限定域名(FQDN),监视将开始。

    • Sharding / Replica Set の場合は 1 台だけ追加すればいい。 Sharding と Replica Set 両方を構成している場合は、適当な mongos を追加すればすべて検知してくれるはず。

 

    • エージェント, 監視対象ともに 1 台の同一マシンで行っている場合は、 Internal Hostname を “localhost” とすればよい。

 

    ポートはデフォルトで 27017

安装 munin-node(可选)
使用上述的步骤,MongoDB相关参数会被监控,但如果要获取CPU使用率等硬件信息,需要在要监控的每个MongoDB实例上安装munin-node,并进行一些设置,如防火墙等,以便可以从安装有代理的主机连接到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备份的配置接下来尝试一下MMS备份功能。

如果MMS备份不工作,需要使用副本集配置。但是,如果目的不是为了保证可用性,那么也可以使用单个实例+ MMS备份的配置。

修改 MongoDB 的设置

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

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

只要按下几次回车键,即使prompt变为SECONDARY,也应该变为PRIMARY,就像上面所述的一样。

启用 MMS备份帐户接下来,我们可以通过MMS的管理界面来进行注册操作。不过,有一个麻烦的地方就是需要提供信用卡信息。(不过因为有免费额度,所以不会立即被收费)

需要输入手上的手机号码,然后输入信用卡号码等完成注册,电话号码格式为+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密钥与之前的相同。

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

如果在完成之后,主页的第二步出现了“收到了备份代理的ping”这句话,那就没问题。

在“开始备份”的下一个步骤中,输入复制集名称即可开始备份。

    • Sharding / Replica Set の場合は 1 台だけ追加すればいい。 Sharding と Replica Set 両方を構成している場合は、適当な mongos を追加すればすべて検知してくれるはず。

 

    • エージェント, 監視対象ともに 1 台の同一マシンで行っている場合は、 Internal Hostname を “localhost” とすればよい。

 

    ポートはデフォルトで 27017

从快照中恢复尽管我还没有尝试过,但根据说明,似乎可以通过使用HTTPS下载快照的数据库目录,或者通过SCP上传快照的数据库目录来接收。

有关游戏内购的注意事项如果不采取任何措施,将超出免费额度(以每月约500MB的oplog为例,使用2GB的数据库),或者经过一年后会被收费。通过在“备份”副本集状态页面上停止所有副本集,然后依次“终止”它们,可以取消所有需要付费的资源合约。

在激活备份之前,您也可以从副本集状态中确认每月估计的备份费用。

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

bannerAds