代码之家  ›  专栏  ›  技术社区  ›  Homer6

如何查看所有写入MongoDB的日志

  •  2
  • Homer6  · 技术社区  · 12 年前

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

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

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

    3 回复  |  直到 12 年前
        1
  •  4
  •   jeffl    12 年前

    我知道你有几个选择:

    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集合

        2
  •  2
  •   Homer6    12 年前

    我试过了jeffl的所有建议,其中一个建议能给我看:mongosniff。谢谢jeffl!

    以下是我用来在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
    
        3
  •  1
  •   Mariano Ruiz    11 年前

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

    要将日志分析激活到级别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