对于这个问题,可能有一个显而易见的答案,但我似乎找不到它。我在我的节点应用程序中使用Mongoose连接到MongoDB集群。有没有办法监视Mongoose使用的客户端连接池的状态?比如池中的连接数、当前从池中检出的连接数、检出连接的速率,如果已经有一个完善的解决方案可以将这些指标导出为Prometheus格式,则可以获得加分。
zour9fqk1#
您可以使用联机集区事件。这些事件是由指定的集区相关事件所触发,例如联机、关闭等等。下面是一个工作示例,其中MongoDB模块取自MongoDB official docs:
const MongoClient = require('mongodb').MongoClient; const url = 'mongodb://localhost:31000,localhost:31001/?replicaSet=rs'; const client = new MongoClient(url); client.on('connectionPoolCreated', event => console.dir(event)); client.on('connectionPoolClosed', event => console.dir(event)); client.on('connectionCreated', event => console.dir(event)); client.on('connectionReady', event => console.dir(event)); client.on('connectionClosed', event => console.dir(event)); client.on('connectionCheckOutStarted', event => console.dir(event)); client.on('connectionCheckOutFailed', event => console.dir(event)); client.on('connectionCheckedOut', event => console.dir(event)); client.on('connectionCheckedIn', event => console.dir(event)); client.on('connectionPoolCleared', event => console.dir(event)); client.connect((err, client) => { if (err) throw err; });
但是,如果您想在Mongoose中执行此操作,则可以使用connection.getClient(),它将绕过mongoose驱动程序返回底层的mongodb客户端。此GitHub问题中描述的方法
connection.getClient()
1条答案
按热度按时间zour9fqk1#
您可以使用联机集区事件。这些事件是由指定的集区相关事件所触发,例如联机、关闭等等。
下面是一个工作示例,其中MongoDB模块取自MongoDB official docs:
但是,如果您想在Mongoose中执行此操作,则可以使用
connection.getClient()
,它将绕过mongoose驱动程序返回底层的mongodb客户端。此GitHub问题中描述的方法