MongoDB ведение журнала всех запросов



вопрос так же прост, как и прост... Как вы регистрируете все запросы в "хвостовом" файле журнала в mongodb?



Я пробовал:




  • установка уровня профилирования

  • установка медленного запуска параметра ms

  • mongod с опцией-vv


the /var/log/mongodb / mongodb.журнал продолжает показывать только текущее количество активных соединений...

712   11  

11 ответов:

Вы можете регистрировать все запросы:

$ 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) означает "регистрировать все операции".

Я решил это, начав 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

потому что его первый ответ google ...
Для версии 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".

но более интересная функция (также как tail), чтобы увидеть изменения в "в реальном времени" С -f опция, и иногда фильтровать результат с grep чтобы найти конкретную операцию.

см. документацию и инструкции по установке в: https://github.com/mrsarm/mongotail

MongoDB имеет сложную функцию профилирования. Регистрация происходит в system.profile коллекция. Журналы можно увидеть из:

db.system.profile.find()

есть 3 уровня ведения журнала (источник):

данные профилировщика записываются в коллекцию в вашей БД, а не в файл. См.http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/

Я бы рекомендовал использовать 10gen MMS сервис и данные профилировщика разработки каналов там, где вы можете фильтровать и сортировать их в пользовательском интерфейсе.

после того, как уровень профилирования установлен с помощью 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()

Я думаю, что в то время как не элегантный,oplogможет частично используется для этой цели: он регистрирует все записи - но не читает...

вы должны включить replicatoon, если я прав. Информация от ответ отсюда вопрос: как прослушивать изменения в коллекции MongoDB?

установка profilinglevel в 2-это еще один вариант для регистрации всех запросов.

Я рекомендую проверить mongosniff. Это может инструмент может делать все, что вы хотите и многое другое. Особенно это может помочь диагностировать проблемы с более крупномасштабными системами mongo и как маршрутизируются запросы и откуда они поступают, поскольку он работает, прослушивая ваш сетевой интерфейс для всех связанных с mongo коммуникаций.

http://docs.mongodb.org/v2.2/reference/mongosniff/

Я написал скрипт, который будет выводить из системы.профиль войти в режиме реального времени, как запросы приходят. Сначала необходимо включить ведение журнала, как указано в других ответах. Мне это было нужно, потому что я использую подсистему Windows для Linux, для которой хвост все еще не работает.

https://github.com/dtruel/mongo-live-logger

Comments

    Ничего не найдено.