MongoDB ведение журнала всех запросов
вопрос так же прост, как и прост... Как вы регистрируете все запросы в "хвостовом" файле журнала в mongodb?
Я пробовал:
- установка уровня профилирования
- установка медленного запуска параметра ms
- mongod с опцией-vv
the /var/log/mongodb / mongodb.журнал продолжает показывать только текущее количество активных соединений...
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?
Я рекомендую проверить mongosniff. Это может инструмент может делать все, что вы хотите и многое другое. Особенно это может помочь диагностировать проблемы с более крупномасштабными системами mongo и как маршрутизируются запросы и откуда они поступают, поскольку он работает, прослушивая ваш сетевой интерфейс для всех связанных с mongo коммуникаций.
Я написал скрипт, который будет выводить из системы.профиль войти в режиме реального времени, как запросы приходят. Сначала необходимо включить ведение журнала, как указано в других ответах. Мне это было нужно, потому что я использую подсистему Windows для Linux, для которой хвост все еще не работает.
Comments