Вопрос настолько же простой, насколько и простой ... Как вы регистрируете все запросы в "хвостовом" файле журнала в mongodb?
Я пытался:
- настройка уровня профилирования
- установка медленного запуска мс параметра
- mongod с опцией -vv
/Var/log/mongodb/mongodb.log показывает только текущее количество активных соединений ...
mongod -vv
работал для меняОтветы:
Вы можете войти все запросы:
Источник: http://docs.mongodb.org/manual/reference/method/db.setProfilingLevel/
db.setProfilingLevel(2)
означает «регистрировать все операции».источник
db.setProfilingLevel(2,-1)
system.profile
коллекцию.db.system.profile.find().pretty()
ничего не дает для меняВ итоге я решил эту проблему, запустив mongod следующим образом (забито и уродливо, да ... но работает для среды разработки):
Это включает профилирование и устанавливает порог для «медленных запросов» равным 1 мс, в результате чего все запросы записываются в файл как «медленные запросы»:
Теперь я получаю непрерывный вывод журнала с помощью команды:
Пример журнала:
источник
profile=1
иslowms=1
строкам/etc/mongodb.conf
?--profile=2
в/etc/mongodb.conf
соответствии с официальными документами Mongo, любые все операции будут зарегистрированы.db.setProfilingLevel(level,slowms)
. Например:db.setProfilingLevel(2,1)
установит уровень равным 2, а медленный порог запроса - 1 мс.Потому что его Google первый ответ ...
Для версии 3
http://docs.mongodb.org/manual/reference/method/db.setLogLevel/
источник
MongoDB
имеет сложную функцию профилирования. Регистрация происходит вsystem.profile
коллекции. Журналы можно увидеть из:Есть 3 уровня ведения журнала ( источник ):
Чтобы увидеть, на каком уровне профилирования работает база данных, используйте
и видеть статус
Чтобы изменить статус профилирования, используйте команду
Где
level
относится к уровню профилирования иmilliseconds
представляет собой мс, длительности которых запросы должны быть зарегистрированы. Чтобы отключить ведение журнала, используйтеЗапрос для поиска в коллекции системных профилей для всех запросов, которые заняли более одной секунды, упорядочены по убыванию отметки времени:
источник
Я создал инструмент командной строки, чтобы активировать активность профилировщика и просматривать журналы «хвостовым» способом: «mongotail» .
Но более интересная особенность (также похожая
tail
) состоит в том, чтобы видеть изменения в «реальном времени» с-f
опцией, и иногда фильтровать результат,grep
чтобы найти конкретную операцию.См. Документацию и инструкции по установке по адресу : https://github.com/mrsarm/mongotail.
источник
После того, как уровень профилирования установлен с помощью
db.setProfilingLevel(2)
.Команда ниже напечатает последний выполненный запрос.
Вы также можете изменить лимит (5), чтобы видеть меньше / больше запросов.
$ nin - отфильтровывает профили и индексирует запросы.
Также используйте проекцию запроса {'query': 1} только для просмотра поля запроса.
Журналы только с проекцией запроса
источник
если вы хотите, чтобы запросы регистрировались в файле журнала mongodb, вы должны установить уровень журнала и профилирование, например:
(см. https://docs.mongodb.com/manual/reference/method/db.setLogLevel )
Установка только профилирования не приведет к тому, что запросы будут записаны в файл, поэтому вы можете получить его только из
источник
Данные профилировщика записываются в коллекцию в вашей БД, а не в файл. См. Http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/
Я бы порекомендовал воспользоваться услугой MMS 10gen и направить туда данные профилировщика разработки, где вы можете фильтровать и сортировать их в пользовательском интерфейсе.
источник
Я думаю, что, хотя это и не элегантно, оплог может быть частично использован для этой цели: он записывает все записи - но не чтения ...
Вы должны включить репликацию, если я прав. Информация взята из этого ответа на этот вопрос: Как прослушать изменения в коллекции MongoDB?
источник
Установка profilinglevel в 2 - это еще одна опция для регистрации всех запросов.
источник
Я рекомендую проверить Mongosniff. Этот инструмент может делать все, что вы хотите, и даже больше. Особенно это может помочь в диагностике проблем с более крупными системами монго и того, как маршрутизируются запросы и откуда они поступают, поскольку он работает, прослушивая сетевой интерфейс для всех коммуникаций, связанных с монго.
http://docs.mongodb.org/v2.2/reference/mongosniff/
источник
Я написал сценарий, который будет распечатывать журнал system.profile в режиме реального времени при поступлении запросов. Сначала необходимо включить ведение журнала, как указано в других ответах. Мне это нужно, потому что я использую подсистему Windows для Linux, для которой хвост еще не работает.
https://github.com/dtruel/mongo-live-logger
источник
затем
источник
Это было задано давно, но это может кому-то помочь:
Профилировщик MongoDB регистрирует все запросы в ограниченном сборнике system.profile . Смотрите это: база данных профилировщик
--profile=2
параметром, который позволяет регистрировать все запросы ИЛИ, если экземпляры mongod уже запущены, из mongoshell запуститьdb.setProfilingLevel(2)
после выбора базы данных. (это может быть подтвержденоdb.getProfilingLevel()
, который должен вернуться2
)tail -f ../logs/mongologs.txt
. Этот скрипт может быть запущен в фоновом режиме, и он будет регистрировать все операции над БД в файле.Мой код для настраиваемого курсора для коллекции system.profile находится в nodejs; он регистрирует все операции вместе с запросами, происходящими в каждой коллекции MyDb:
Для настраиваемого курсора в python с использованием pymongo, обратитесь к следующему коду, который фильтрует MyCollection и выполняет только операцию вставки:
Примечание. Настраиваемый курсор работает только с ограниченными коллекциями. Его нельзя использовать для непосредственного ведения журнала операций в коллекции, вместо этого используйте фильтр:
'ns': 'MyDb.MyCollection'
Примечание: я понимаю, что вышеупомянутые nodejs и код Python могут не сильно помочь некоторым. Я только что предоставил коды для справки.
Используйте эту ссылку, чтобы найти документацию для настраиваемого курсора в вашем языке / драйвере MongoDB Drivers
Еще одна функция, которую я добавил после этого logrotate .
источник
Попробуйте этот пакет, чтобы выполнить все запросы (без операций с оплогами): https://www.npmjs.com/package/mongo-tail-queries
(Отказ от ответственности: я написал этот пакет именно для этой необходимости)
источник