为了账号安全,请及时绑定邮箱和手机立即绑定

MongoDB记录所有查询

/ 猿问

MongoDB记录所有查询

白衣染霜花 2019-11-05 11:18:22

问题很简单,就这么简单...如何在mongodb中的“可尾”的日志文件中记录所有查询?

我努力了:

  • 设置配置级别

  • 设置慢速ms参数启动

  • -vv选项的mongod

/var/log/mongodb/mongodb.log继续仅显示当前活动连接数...


查看完整描述

3 回答

?
当年话下

您可以记录所有查询:


$ mongo

MongoDB shell version: 2.4.9

connecting to: test

> use myDb

switched to db myDb

> db.getProfilingLevel()

0

> db.setProfilingLevel(2)

{ "was" : 0, "slowms" : 1, "ok" : 1 }

> db.getProfilingLevel()

2

> db.system.profile.find().pretty()

资料来源:http : //docs.mongodb.org/manual/reference/method/db.setProfilingLevel/


db.setProfilingLevel(2) 表示“记录所有操作”。


查看完整回答
反对 回复 2019-11-05
?
ibeautiful

我最终通过像这样启动mongod来解决了这个问题(锤子又丑陋,是的,但是适用于开发环境):


mongod --profile=1 --slowms=1 &

这将启用性能分析并将“慢速查询”的阈值设置为1ms,从而导致所有查询都作为“慢速查询”记录到文件中:


/var/log/mongodb/mongodb.log

现在,我使用以下命令获得连续的日志输出:


tail -f /var/log/mongodb/mongodb.log

日志示例:


Mon Mar  4 15:02:55 [conn1] query dendro.quads query: { graph: "u:http://example.org/people" } ntoreturn:0 ntoskip:0 nscanned:6 keyUpdates:0 locks(micros) r:73163 nreturned:6 reslen:9884 88ms


查看完整回答
反对 回复 2019-11-05
?
慕用2447696

MongoDB具有概要分析功能。日志记录发生在system.profile集合中。可以从以下位置查看日志:


db.system.profile.find()

有3个日志记录级别(源):


级别0-探查器已关闭,不收集任何数据。mongod对其日志的写操作总是长于slowOpThresholdMs阈值。这是默认的探查器级别。

级别1-收集性能分析数据仅用于慢速操作。默认情况下,慢速操作是指那些慢于100毫秒的操作。您可以使用slowOpThresholdMs运行时选项或setParameter命令修改“慢速”操作的阈值。有关更多信息,请参见指定慢速操作阈值部分。

级别2-收集所有数据库操作的分析数据。

要查看数据库正在运行的概要分析级别,请使用


db.getProfilingLevel()

并查看状态


db.getProfilingStatus()

要更改分析状态,请使用以下命令


db.setProfilingLevel(level, milliseconds)

其中level指概要分析级别,milliseconds是需要记录查询持续时间的毫秒数。要关闭日志记录,请使用


db.setProfilingLevel(0)

要在系统配置文件集合中查找所有耗时超过一秒(按时间戳降序排列)的查询,将为


db.system.profile.find( { millis : { $gt:1000 } } ).sort( { ts : -1 } )


查看完整回答
反对 回复 2019-11-05

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信