这个问题既简单又基本。如何将所有查询记录在mongodb中的“尾部”日志文件中?
我试过:
设置概要级别 设置启动慢ms参数 使用-vv选项Mongod
/var/log/mongodb/mongodb.log一直显示当前活动连接的数量…
这个问题既简单又基本。如何将所有查询记录在mongodb中的“尾部”日志文件中?
我试过:
设置概要级别 设置启动慢ms参数 使用-vv选项Mongod
/var/log/mongodb/mongodb.log一直显示当前活动连接的数量…
当前回答
我做了一个命令行工具来激活分析器活动,并以“尾部”的方式查看日志——>“mongotail”:
$ mongotail MYDATABASE
2020-02-24 19:17:01.194 QUERY [Company] : {"_id": ObjectId("548b164144ae122dc430376b")}. 1 returned.
2020-02-24 19:17:01.195 QUERY [User] : {"_id": ObjectId("549048806b5d3db78cf6f654")}. 1 returned.
2020-02-24 19:17:01.196 UPDATE [Activation] : {"_id": "AB524"}, {"_id": "AB524", "code": "f2cbad0c"}. 1 updated.
2020-02-24 19:17:10.729 COUNT [User] : {"active": {"$exists": true}, "firstName": {"$regex": "mac"}}
...
但更有趣的功能(也像tail一样)是使用-f选项“实时”查看更改,偶尔使用grep过滤结果以查找特定操作。
参见文档和安装说明:https://github.com/mrsarm/mongotail
(也可以从Docker运行,特别是如果你想从Windows https://hub.docker.com/r/mrsarm/mongotail执行它)
其他回答
一旦使用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中的集合,而不是文件。参见http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/
我建议使用10gen的MMS服务,并在那里提供开发分析器数据,在那里你可以在UI中过滤和排序。
因为它的谷歌第一个答案… 对于版本3
$ mongo
MongoDB shell version: 3.0.2
connecting to: test
> use myDb
switched to db
> db.setLogLevel(1)
http://docs.mongodb.org/manual/reference/method/db.setLogLevel/
我做了一个命令行工具来激活分析器活动,并以“尾部”的方式查看日志——>“mongotail”:
$ mongotail MYDATABASE
2020-02-24 19:17:01.194 QUERY [Company] : {"_id": ObjectId("548b164144ae122dc430376b")}. 1 returned.
2020-02-24 19:17:01.195 QUERY [User] : {"_id": ObjectId("549048806b5d3db78cf6f654")}. 1 returned.
2020-02-24 19:17:01.196 UPDATE [Activation] : {"_id": "AB524"}, {"_id": "AB524", "code": "f2cbad0c"}. 1 updated.
2020-02-24 19:17:10.729 COUNT [User] : {"active": {"$exists": true}, "firstName": {"$regex": "mac"}}
...
但更有趣的功能(也像tail一样)是使用-f选项“实时”查看更改,偶尔使用grep过滤结果以查找特定操作。
参见文档和安装说明:https://github.com/mrsarm/mongotail
(也可以从Docker运行,特别是如果你想从Windows https://hub.docker.com/r/mrsarm/mongotail执行它)
我最终通过像这样开始mongod来解决这个问题(锤击和丑陋,是的……但适用于开发环境):
mongod --profile=1 --slowms=1 &
这将启用分析,并将“慢查询”的阈值设置为1毫秒,导致所有查询都被记录为文件的“慢查询”:
/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