这个问题既简单又基本。如何将所有查询记录在mongodb中的“尾部”日志文件中?
我试过:
设置概要级别 设置启动慢ms参数 使用-vv选项Mongod
/var/log/mongodb/mongodb.log一直显示当前活动连接的数量…
这个问题既简单又基本。如何将所有查询记录在mongodb中的“尾部”日志文件中?
我试过:
设置概要级别 设置启动慢ms参数 使用-vv选项Mongod
/var/log/mongodb/mongodb.log一直显示当前活动连接的数量…
当前回答
我认为oplog虽然不够优雅,但可以部分地用于这个目的:它记录所有的写操作——但不记录读操作……
如果我没猜错的话,你必须马上启用复制。信息来自这个问题的答案:如何监听MongoDB集合的更改?
其他回答
一旦使用db.setProfilingLevel(2)设置了分析级别。
下面的命令将打印最后执行的查询。 您也可以更改限制(5)以查看更少/更多的查询。 $nin -过滤概要文件和索引查询 此外,使用查询投影{'query':1}仅用于查看查询字段
db.system.profile.find(
{
ns: {
$nin : ['meteor.system.profile','meteor.system.indexes']
}
}
).limit(5).sort( { ts : -1 } ).pretty()
只有查询投影的日志
db.system.profile.find(
{
ns: {
$nin : ['meteor.system.profile','meteor.system.indexes']
}
},
{'query':1}
).limit(5).sort( { ts : -1 } ).pretty()
db.setProfilingLevel(2,-1)
这个工作!它在mongod日志文件中记录了所有查询信息
分析器数据被写入DB中的集合,而不是文件。参见http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/
我建议使用10gen的MMS服务,并在那里提供开发分析器数据,在那里你可以在UI中过滤和排序。
我写了一个脚本,将打印出系统。当查询进来时,配置文件实时登录。如其他回答中所述,您需要首先启用日志记录。我需要这个,因为我正在使用Linux的Windows子系统,对于它,tail仍然不起作用。
https://github.com/dtruel/mongo-live-logger
您可以记录所有查询:
$ 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)表示“记录所有操作”。