sql >> Base de Datos >  >> NoSQL >> MongoDB

Descodificación de los registros de errores de MongoDB

A veces, decodificar los registros de errores de MongoDB puede ser complicado y puede consumir una gran parte de su valioso tiempo. En este artículo, aprenderemos a examinar los registros de errores de MongoDB analizando cada parte de los mensajes de registro.

Formato común para líneas de registro de MongoDB

Aquí está el patrón de línea de registro para la versión 3.0 y superior...

<timestamp> <severity> <component> [<context>] <message>

Patrón de línea de registro para versiones anteriores de MongoDB solo incluido:

<timestamp> [<context>] <message>

Veamos cada etiqueta.

Marcas de tiempo

El campo de marca de tiempo del mensaje de registro almacena la hora exacta en que se insertó un mensaje de registro en el archivo de registro. Hay 4 tipos de marcas de tiempo compatibles con MongoDB. El formato predeterminado es:iso8601-local. Puede cambiarlo usando el parámetro --timeStampFormat.

Nombre del formato de marca de tiempo Ejemplo
iso8601-local 1969-12-31T19:00:00.000+0500
iso8601-utc 1970-01-01T00:00:00.000Z
ctime miércoles 31 de diciembre 19:00:00.000
ctime-no-ms miércoles 31 de diciembre 19:00:00

Gravedad

La siguiente tabla describe el significado de todos los posibles niveles de gravedad.

Nivel de gravedad Descripción
F Fatal:el error de la base de datos ha provocado que ya no se pueda acceder a la base de datos
E Error:errores de la base de datos que detendrán la ejecución de la base de datos.
W Advertencia:mensajes de la base de datos que explican el comportamiento potencialmente dañino de la base de datos.
Yo Informativo:mensajes solo con fines informativos, como "Se ha aceptado una nueva conexión".
D Depuración:principalmente útil para depurar los errores de la base de datos

Componente

Después de la versión 3.0, los mensajes de registro ahora incluyen "componentes" para proporcionar una categorización funcional de los mensajes. Esto le permite restringir fácilmente su búsqueda mirando los componentes específicos.

Componente Descripción del error
Acceso Relacionado con el control de acceso
Comando Relacionado con los comandos de la base de datos
Control Relacionado con actividades de control
FTDC Relacionado con las actividades de recopilación de datos de diagnóstico
Geo Relacionado con el análisis de formas geoespaciales
Índice Relacionado con las operaciones de indexación
Red Relacionado con las actividades de la red
Consulta Relacionado con consultas
REPL Relacionado con conjuntos de réplicas
REPL_HB Relacionado con los latidos de conjuntos de réplicas
Restaurar Relacionado con las operaciones de reversión de db
Fragmentación Relacionado con la fragmentación
Almacenamiento Relacionado con las actividades de almacenamiento
Diario Relacionado con las actividades de la revista
Escribir Relacionado con las operaciones de escritura de db

Contexto

La parte de contexto del mensaje de error generalmente contiene el hilo o la identificación de la conexión. Otros valores pueden ser initandlisten. Esta parte está rodeada por corchetes. Los mensajes de registro de cualquier conexión nueva a MongoDB tendrán un valor de contexto como initandlisten, para todos los demás mensajes de registro, será la identificación del hilo o la identificación de la conexión. Por ejemplo

2018-05-29T19:06:29.731+0000 [initandlisten] connection accepted from 127.0.0.1:27017 #1000 (13 connections now open)
2018-05-29T19:06:35.770+0000 [conn1000] end connection 127.0.0.1:27017 (12 connections now open)

Mensaje

Contiene el mensaje de registro real.

Ubicación del archivo de registro

La ubicación predeterminada en el servidor es:/var/log/mongodb/mongodb.log

Si el archivo de registro no está presente en esta ubicación, puede verificar el archivo de configuración de MongoDB. Puede encontrar el archivo de configuración de MongoDB en cualquiera de estas dos ubicaciones.

/etc/mongod.conf or /yourMongoDBpath/mongod.conf

Una vez que abra el archivo de configuración, busque la opción logpath en él. La opción logpath le dice a MongoDB dónde registrar todos los mensajes.

Análisis de un mensaje de registro simple

Este es un ejemplo de un mensaje de error típico de MongoDB...

2014-11-03T18:28:32.450-0500 I NETWORK [initandlisten] waiting for connections on port 27017

Marca de tiempo:2014-11-03T18:28:32.450-0500
Severidad:I
Componente:RED
Contexto:[initandlisten]
Mensaje:esperando conexiones en el puerto 27017

La parte más importante de este error es la parte del mensaje. En la mayoría de los casos, puede averiguar el error mirando este campo. A veces, si el mensaje no es claro para usted, entonces puede optar por la parte del componente. Para este mensaje, el valor del Componente es Red, lo que significa que el mensaje de registro está relacionado con un problema de red.

Si no puede resolver su error, puede verificar la gravedad del mensaje de registro que dice que este mensaje tiene fines informativos. Además, también puede consultar otras partes del mensaje de registro, como la marca de tiempo o el contexto, para encontrar la causa raíz completa.

Decodificación de mensajes de registro de errores comunes

  1. Mensaje:

    2018-05-10T21:19:46.942 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.

    Resolución: Crear usuario administrador en la base de datos de autenticación

  2. Mensaje:

    2018-05-10T21:19:46.942 E COMMAND  [initandlisten] ** ERROR: getMore command failed. Cursor not found

    Resolución: Elimine el tiempo de espera del cursor o aumente el tamaño del lote del cursor.

  3. Mensaje:

    2018-05-10T21:19:46.942 E INDEX  [initandlisten] ** ERROR:E11000 duplicate key error index: test.collection.$a.b_1 dup key: { : null }

    Resolución: Violación de la restricción de clave única. Intente insertar el documento con una clave diferente.

  4. Mensaje:

    2018-05-10T21:19:46.942 E NETWORK  [initandlisten] ** ERROR:Timed out connecting to localhost:27017.

    Resolución: La latencia entre el controlador y el servidor es demasiado grande, el controlador puede fallar. Puede cambiar la configuración agregando la opción connectionTimeout en la cadena de conexión.

  5. Mensaje:

    2018-05-10T21:19:46.942 E WRITE  [initandlisten] ** ERROR: A write operation resulted in an error. E11000 duplicate key error index: test.people.$_id_ dup key: { : 0 }

    Resolución: Elimina la duplicación del valor del campo _id de los documentos en conflicto.

  6. Mensaje:

    2018-05-10T21:19:46.942 E NETWORK  [initandlisten] ** ERROR: No connection could be made because the target machine actively refused it 127.0.0.1:27017 at System.Net.Sockets.Socket.EndConnect

    Resolución: El servidor no se está ejecutando en el puerto 27017 o intente reiniciar el servidor con el host y el puerto correctos.

Herramientas de administración de registros

MongoDB 3.0 actualizó sus funciones de registro para brindar una mejor perspectiva de todas las actividades de la base de datos. Hay muchas herramientas de administración de registros disponibles en el mercado, como MongoDB Ops Manager, entradas de registro, mtools, etc.

Conclusión

El registro es tan importante como la replicación o la fragmentación para una buena y adecuada gestión de la base de datos. Para una mejor gestión de la base de datos, uno debería poder decodificar los registros fácilmente para rectificar las excepciones/errores rápidamente. Espero que después de leer este tutorial, se sienta más cómodo al analizar registros complejos de MongoDB.