2012-09-10 101 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 –