La pregunta es tan básica como simple ... ¿Cómo se registran todas las consultas en un archivo de registro capaz de "cola" en mongodb?
Yo he tratado:
- establecer el nivel de perfil
- configurar el inicio lento del parámetro ms
- mongod con la opción -vv
El /var/log/mongodb/mongodb.log sigue mostrando solo el número actual de conexiones activas ...
mongod -vv
funcionó para míRespuestas:
Puede registrar todas las consultas:
Fuente: http://docs.mongodb.org/manual/reference/method/db.setProfilingLevel/
db.setProfilingLevel(2)
significa "registrar todas las operaciones".fuente
db.setProfilingLevel(2,-1)
system.profile
colección.db.system.profile.find().pretty()
no da nada por míTerminé resolviendo esto comenzando mongod de esta manera (martillado y feo, sí ... pero funciona para el entorno de desarrollo):
Esto permite la creación de perfiles y establece el umbral para "consultas lentas" como 1 ms, lo que hace que todas las consultas se registren como "consultas lentas" en el archivo:
Ahora obtengo salidas de registro continuas usando el comando:
Un ejemplo de registro:
fuente
profile=1
yslowms=1
líneas/etc/mongodb.conf
?--profile=2
de/etc/mongodb.conf
acuerdo con los documentos oficiales de Mongo, todas las operaciones se registrarán.db.setProfilingLevel(level,slowms)
. Por ejemplo:db.setProfilingLevel(2,1)
establecerá el nivel en 2 y el umbral de consulta lenta en 1 ms.Porque es Google primera respuesta ...
Para la versión 3
http://docs.mongodb.org/manual/reference/method/db.setLogLevel/
fuente
MongoDB
tiene una característica sofisticada de perfilado. El registro ocurre en lasystem.profile
colección. Los registros se pueden ver desde:Hay 3 niveles de registro ( fuente ):
Para ver en qué nivel de perfil se está ejecutando la base de datos, use
y para ver el estado
Para cambiar el estado del perfil, use el comando
Donde se
level
refiere al nivel de creación de perfiles ymilliseconds
es el tiempo de duración de las consultas que deben registrarse. Para desactivar el registro, useLa consulta para buscar en la colección de perfiles del sistema todas las consultas que tomaron más de un segundo, ordenadas por marca de tiempo descendente, será
fuente
Hice una herramienta de línea de comandos para activar la actividad del generador de perfiles y ver los registros de una manera capaz de "cola" : "mongotail" .
Pero la característica más interesante (también me gusta
tail
) es ver los cambios en "tiempo real" con la-f
opción, y ocasionalmente filtrar el resultadogrep
para encontrar una operación en particular.Consulte la documentación y las instrucciones de instalación en: https://github.com/mrsarm/mongotail
fuente
Una vez perfilado nivel se ajusta utilizando
db.setProfilingLevel(2)
.El siguiente comando imprimirá la última consulta ejecutada.
También puede cambiar el límite (5) para ver menos / más consultas.
$ nin: filtrará las consultas de perfil e índices
Además, use la proyección de consulta {'query': 1} para ver solo el campo de consulta
Registros con solo proyección de consulta
fuente
si desea que las consultas se registren en el archivo de registro mongodb, debe establecer tanto el nivel de registro como el perfil, como por ejemplo:
(ver https://docs.mongodb.com/manual/reference/method/db.setLogLevel )
Establecer solo el perfil no tendría las consultas registradas en el archivo, por lo que solo puede obtenerlo de
fuente
Los datos del generador de perfiles se escriben en una colección en su base de datos, no en un archivo. Ver http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/
Recomendaría usar el servicio MMS de 10gen y alimentar los datos del generador de perfiles de desarrollo allí, donde puede filtrarlos y ordenarlos en la interfaz de usuario.
fuente
Creo que aunque no es elegante, el blog podría usarse parcialmente para este propósito: registra todas las escrituras, pero no las lecturas ...
Tienes que habilitar replicatoon, si tengo razón. La información proviene de esta respuesta de esta pregunta: ¿Cómo escuchar los cambios en una colección MongoDB?
fuente
Establecer profilinglevel en 2 es otra opción para registrar todas las consultas.
fuente
Recomiendo visitar mongosniff. Esta herramienta puede hacer todo lo que quieras y más. Especialmente puede ayudar a diagnosticar problemas con sistemas mongo de mayor escala y cómo se enrutan las consultas y de dónde provienen, ya que funciona al escuchar su interfaz de red para todas las comunicaciones relacionadas con mongo.
http://docs.mongodb.org/v2.2/reference/mongosniff/
fuente
Escribí un script que imprimirá el registro del perfil del sistema en tiempo real a medida que entren las consultas. Primero debe habilitar el registro como se indica en otras respuestas. Necesitaba esto porque estoy usando el Subsistema de Windows para Linux, para el cual la cola todavía no funciona.
https://github.com/dtruel/mongo-live-logger
fuente
Luego
fuente
Esto se preguntó hace mucho tiempo, pero aún puede ayudar a alguien:
El generador de perfiles MongoDB registra todas las consultas en el sistema de recopilación con tope.perfil . Ver esto: perfil de base de datos
--profile=2
opción que permite registrar todas las consultas O si las instancias mongod ya se están ejecutando, desde mongoshell, ejecutedb.setProfilingLevel(2)
después de seleccionar la base de datos. (se puede verificar pordb.getProfilingLevel()
, que debería volver2
)tail -f ../logs/mongologs.txt
. Este script se puede iniciar en segundo plano y registrará todas las operaciones en la base de datos del archivo.Mi código para el cursor disponible para la colección system.profile está en nodejs; registra todas las operaciones junto con las consultas que ocurren en cada colección de MyDb:
Para el cursor disponible en python usando pymongo, consulte el siguiente código que filtra para MyCollection y solo inserta la operación:
Nota: El cursor disponible solo funciona con colecciones con límite. No se puede usar para registrar operaciones en una colección directamente, en su lugar use filter:
'ns': 'MyDb.MyCollection'
Nota: Entiendo que los nodos anteriores y el código de Python pueden no ser de mucha ayuda para algunos. Acabo de proporcionar los códigos de referencia.
Utilice este enlace para buscar documentación para el cursor disponible en su idioma / controlador . Controladores Mongodb
Otra característica que he agregado después de este logrotate .
fuente
Pruebe este paquete para seguir todas las consultas (sin operaciones de oplog): https://www.npmjs.com/package/mongo-tail-queries
(Descargo de responsabilidad: escribí este paquete exactamente para esta necesidad)
fuente