2016-08-19 3 views
0

Мне нужно выяснить, сколько пишет MongoDB за последний час против чтения.Количество записей на уровне MongDB

Есть ли простой способ найти эти статистические данные, необходимые для создания тревоги. Если решение управляется командой или основано на Java, это будет очень полезно.

+0

какая проблема вы собираетесь решить? – profesor79

+0

Посмотрите на это, некоторые команды, чтобы вернуть статистику БД: https://docs.mongodb.com/manual/administration/monitoring/ – yellowB

+0

Является ли это скорее проблемой администрирования базы данных, чем проблемой программирования? Вы можете найти ответ, который вы хотите найти в http://dba.stackexchange.com/. –

ответ

0

после выкапывания исходного кода драйвера MongoDB jdbc. я наконец смог получить то, что требуется. ниже - код для этого

public class MongoJmxStat { 

    private MongoClient mongo; 

    public MongoJmxStat(MongoClient mongo) { 
     this.mongo = mongo; 
    } 

    public CommandResult getServerStatus() { 
     CommandResult result = getDb("mongoDB").command("serverStatus"); 
     if (!result.ok()) { 

      throw new MongoException("could not query for server status. Command Result = " + result); 
     } 

     return result; 
    } 

    public DB getDb(String databaseName) { 
     return MongoDbUtils.getDB(mongo, databaseName); 
    } 

    private int getOpCounter(String key) { 
     DBObject opCounters = (DBObject) getServerStatus().get("opcounters"); 
     return (Integer) opCounters.get(key); 
    } 

    @ManagedMetric(metricType = MetricType.COUNTER, displayName = "Write operation count") 
    public int getWriteCount() { 
     return getOpCounter("insert") + getOpCounter("update") + getOpCounter("delete"); 
    } 

    @ManagedMetric(metricType = MetricType.COUNTER, displayName = "Read operation count") 
    public int getReadCount() { 
     return getOpCounter("query") + getOpCounter("getmore"); 
    } 

} 
Смежные вопросы