0

我已经建立了一个分片集群,由于我的数据在无缝增长,我需要继续监控数据的大小并在集群中添加新的分片。

是否有一个命令可以让我知道在任何时间点每个分片服务器中使用了多少大小。

例如。假设我有一个数据库,mongos 控制台中的 show dbs 命令显示如下

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

我想知道每个分片服务器中使用了多少数据。用于公司数据库。

我实现的架构如下

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

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

我需要知道这一点,因为我计划构建一个 cron 来检查分片服务器的可用大小,如果它超过一定数量,它将向管理员发送通知以表示关注。

提前感谢您回复此帖子

4

2 回答 2

1

在 mongoDB 用户组中发布后,我得到了关于我们需要如何执行此操作以及可以使用哪些命令的解决方案

命令

要了解每个分片服务器中特定数据库的空间利用率,我们必须使用

db.stats() 

了解我们必须使用的每个分片服务器中特定集合的空间利用率

db.<collectionname>.stats()

现在要在 php daemon/cron 中使用它,我可以使用 php mongo 驱动程序调用这些命令

$con= new Mongo()

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

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

我仍然找不到从 Zend shanty mongo 执行此类命令的任何方法,但我可以使用默认的 PHP pecl mongo db 驱动程序来实现这一点

感谢大家对本帖的回复

于 2012-09-18T04:40:43.947 回答
0

有通用的监控解决方案(nagios、zabbix 等)。它们监控您机器的许多参数,并且可以设置为在某些情况下发送警报。你不需要重新发明轮子。

如果您的应用服务器空间不足(因为它的日志占用了所有空间),这种通用解决方案也可以警告您。您专门的 mongodb cron 作业将无法做到这一点。

于 2012-09-10T09:08:33.110 回答