【发布时间】:2019-06-05 15:57:48
【问题描述】:
我正在获取有关我的 mongo 应用程序的指标,并希望使用 Mongo Java 客户端获取复制 oplog 指标。
从终端 printReplicationInfo() 命令提供所需的信息。但是我找不到它相当于从 Mongo Java 客户端获取相同的数据。
一些旧页面声称通过 Java 客户端这是不可能的,想知道新客户端是否有任何此类选项。如有任何帮助,我们将不胜感激。
更新:感谢您的建议,这是我获取 oplog 窗口信息的尝试:
DB db = mongoClient.getDB("local");
DBCollection collection = db.getCollection("oplog.rs");
List<DBObject> dbObjects = collection.find().sort(new
BasicDBObject("ts",-1)).toArray();
DBObject startEntry = dbObjects.get(0);
DBObject lastEntry = dbObjects.get(dbObjects.size()-1);
String startTime = (String)startEntry.get("ts");
String endTime = (String)lastEntry.get("ts");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("yyyy.MM.dd");
Date startDate = simpleDateFormat.parse(startTime);
Date endDate = simpleDateFormat.parse(endTime);
long diff = endDate.getTime() - startDate.getTime();
【问题讨论】:
-
在shell中,
db.printReplicationInfo()只是调用db.getReplicationInfo(),它在github.com/mongodb/mongo/blob/v4.0/src/mongo/shell/…中定义。它基本上是一个计算所有数字的 JS 函数。由于这是一个 shell 助手,它在驱动程序中不可用。如果您需要在 Java 中执行此操作,则需要将上述 JS 源代码翻译成 Java。
标签: java mongodb mongodb-replica-set