2

我能够在 MongoDB 中看到查询,但我试图查看在 MongoDB 数据库上执行的写入操作没有成功。

我的应用程序代码中没有任何写入命令。然而,当我加载测试我的应用程序时,我在 mongostat 中看到一大堆写入。我不确定他们来自哪里。

除了记录写入(我无法做到)之外,还有其他方法可以用来确定这些写入的来源吗?

4

3 回答 3

4

你有几个我知道的选择:

a) 如果您怀疑写入将发送到特定数据库,您可以将分析级别设置为 2 以记录所有查询

use [database name]
db.setProfilingLevel(2)
...
// disable when done
db.setProfilingLevel(0) 

b) 您可以使用 -v 以不同级别的 versbosity 启动数据库

  -v [ --verbose ]            be more verbose (include multiple times for more
                              verbosity e.g. -vvvvv)

c) 你可以使用mongosniff来嗅探端口

d) 如果您使用复制,您还可以检查 local.oplog.rs 集合

于 2013-09-06T17:58:23.247 回答
2

我已经尝试了 jeffl 的所有建议,其中一个能够向我展示写入内容:mongosniff。谢谢杰弗尔!

以下是我用来在我的 Ubuntu 10 机器上安装 mongosniff 的命令,以防其他人发现这很有用:

git clone git://github.com/mongodb/mongo.git
cd mongo
git checkout r2.4.6
apt-get install scons libpcap-dev g++
scons mongosniff
build/linux2/normal/mongo/mongosniff --source NET lo 27017
于 2013-09-07T04:45:02.287 回答
1

我制作了一个命令行工具来查看日志,并且在不需要其他客户端工具的情况下首先激活探查器活动:“mongotail”

要将日志分析激活到级别 2:

mongotail databasename -l 2

然后显示最新的 10 个查询:

mongotail databasename

您也可以使用带有选项的工具,以“实时”-f查看更改。

mongotail databasename -f

最后,过滤结果egrep以查找特定操作,例如仅显示写入操作:

mongotail databasename -f | egrep "(INSERT|UPDATE|REMOVE)"

请参阅以下文档和安装说明:https ://github.com/mrsarm/mongotail

于 2015-02-27T15:26:18.453 回答