2012-09-10 67 views
0

我有设置一个分片集群中使用的分片服务器的大小,因为我的数据无缝地成长,我需要保持监测数据的大小,并添加新的碎片到集群。如何获得这是目前在MongoDB的分片集群

有没有我可以用它来知道多少大小被用在每个分片服务器,在任何时间点的命令。

例如,可以说我有一个数据库,和我的节目DBS命令从mongos控制台这样表示

mongos> show dbs 
company 0.375GB 
config 0.046875GB 
test 0.0625GB 

我想知道有多少数据是在每个碎片服务器使用。为公司数据库。

我实现架构如下

我有一个单一的数据库分片,其中每个集合是分片。运行的mongod实例 1服务器上运行mongos 1台服务器上运行的配置实例 3碎片服务器

我的整个应用层说话直接mongos。

我需要知道这一点,因为,我计划建立一个cron,检查碎片服务器的可用大小,如果超过一定数额,将通知发送到管理员,表现出一定的关注。

预先感谢回应这篇文章

+0

在蒙戈documentat挖掘后离子,我可以得到一个命令,我可以从mongos控制台运行,以了解碎片的大小分布。它是db.collection_name.stats(),但同样我想在我的cron中运行并从php中获取,请让我知道如果任何人已经从php做到了这一点,我在cron中使用zend shanty库 –

回答

1

MongoDB的用户组中张贴后,我得到了我们需要如何做到这一点的解决方案,可用于

命令

了解每一个特定数据库的空间利用率什么命令分片服务器,我们必须使用

db.stats() 

了解一下我们必须使用

每个分片服务器特定集合的空间利用率

我们使用它在PHP后台程序/ cron的,我可以使用PHP蒙戈驱动程序调用这些命令

$con= new Mongo() 

$stats=$con->dbName->command(array('dbStats' => 1)); // for db.stats() 

$stats=$con->dbName->command(array('collStats' => 'collection_name'));

不过我找不到执行从Zend的棚户这些命令的任何方法蒙戈,但我可以使用默认的PHP PECL蒙戈DB驱动程序来实现这一

感谢大家响应这个帖子

+0

还有一个概述:'sh.status()' – joeytwiddle

0

有对于一般的监控解决方案(Nagios的,ZABBIX等)。他们监视机器的许多参数,并可以设置为在某些情况下发送警报。你不需要重新发明轮子。

这种通用的解决方案也可以提醒你,如果你的应用程序服务器上运行的空间(因为其日志把所有的空间)。您的专业mongodb cron作业将无法做到这一点。

+0

感谢分享意见塞尔吉奥,但我的问题是,如果我去这样的解决方案,我不得不在每个亚马逊实例中运行的分片服务器中使用nagios或zabbix。所以我打算通过与mongos交谈来充分利用分片的优势,我需要一个能够与mongos交谈并且获得共享集群中每个参与者使用的正确数据空间(而非剩下的)的应用程序,记住它是一个集群,每个成员都在一个单独的亚马逊实例中运行。 –

+0

好吧,不要紧,然后:)也许我会在后来想出其他的东西。 –

+0

挖掘出mongo文档后,我可以得到一个命令,我可以从mongos控制台运行以了解碎片的大小分布。它是“db.collection_name.stats()”,但同样我想在我的cron中运行并从php中获取。请让我知道,如果任何人已经做到了这一点,我使用zend shanty库中的cron –