Docs Menu
Docs Home
/

Monitoreo de una implementación de MongoDB autogestionada

La monitorización es un componente fundamental de la administración de bases de datos. Un buen conocimiento de los informes de MongoDB le permitirá evaluar el estado de su base de datos y mantener su implementación sin crisis. Además, comprender los parámetros operativos normales de MongoDB le permitirá diagnosticar problemas antes de que se conviertan en fallos.

Este documento presenta una visión general de las herramientas de supervisión disponibles y las estadísticas de reporte disponibles en MongoDB. También introduce estrategias de diagnóstico y sugerencias para la supervisión de sets de réplicas y clústeres fragmentados.

MongoDB proporciona varios métodos para recopilar datos sobre el estado de una instancia de MongoDB en ejecución:

  • MongoDB distribuye un conjunto de utilidades que proporcionan informes en tiempo real de las actividades de la base de datos.

  • MongoDB ofrece varias comandos de base de datos que devuelven estadísticas sobre el estado actual de la base de datos con mayor fidelidad.

  • MongoDB Atlas es una base de datos como servicio alojada en la nube para ejecutar, supervisar y mantener implementaciones de MongoDB.

  • MongoDB Cloud Manager es un servicio alojado que monitorea las implementaciones de MongoDB en ejecución para recopilar datos y proporcionar visualización y alertas basadas en esos datos.

  • MongoDB Ops Manager es una solución local disponible en MongoDB Enterprise Advanced que monitorea las implementaciones de MongoDB en ejecución para recopilar datos y proporcionar visualización y alertas basadas en esos datos.

Cada estrategia puede ayudar a responder diferentes preguntas y es útil en distintos contextos. Estos métodos son complementarios.

Esta sección ofrece una descripción general de los métodos de generación de informes distribuidos con MongoDB. También ofrece ejemplos de los tipos de preguntas que cada método puede abordar mejor.

La distribución de MongoDB incluye varias utilidades que devuelven rápidamente estadísticas sobre el rendimiento y la actividad de las instancias. Normalmente, son muy útiles para diagnosticar problemas y evaluar el funcionamiento normal.

mongostat Captura y devuelve el recuento de operaciones de base de datos por tipo (p. ej., inserción, consulta, actualización, eliminación, etc.). Estos recuentos informan sobre la distribución de la carga en el servidor.

Utilice mongostat para comprender la distribución de los tipos de operaciones y para fundamentar la planificación de la capacidad. Consulte la página de referencia para obtener más información.mongostat

mongotop Realiza un seguimiento e informa la actividad actual de lectura y escritura de una instancia de MongoDB, e informa estas estadísticas por colección.

Utilice para comprobar si la actividad y el uso de mongotop mongotop la base de datos coinciden con sus expectativas. Consulte la página de referencia para obtener más información.

MongoDB incluye una serie de comandos que informan sobre el estado de la base de datos.

Estos datos pueden proporcionar un nivel de granularidad mayor que las utilidades descritas anteriormente. Considere usar su salida en scripts y programas para desarrollar alertas personalizadas o para modificar el comportamiento de su aplicación en respuesta a la actividad de su instancia. El db.currentOp() método es otra herramienta útil para identificar las operaciones en curso de la instancia de base de datos.

El serverStatus comando, o desde el shell, devuelve una visión general del estado de la base de datos, detallando el uso del disco, el uso de la memoria, la conexión, el registro en diario y el acceso al índice. El comando regresa rápidamente y no afecta el rendimiento de db.serverStatus() MongoDB.

serverStatus genera un informe del estado de una instancia de MongoDB. Este comando rara vez se ejecuta directamente. En la mayoría de los casos, los datos son más significativos cuando se agregan, como se observa con herramientas de monitorización como MongoDB Cloud Manager y Ops Manager. Sin embargo, todos los administradores deben estar familiarizados con los datos proporcionados serverStatus por.

El dbStats comando, o desde el shell, devuelve db.stats() dbStats un documento que describe el uso del almacenamiento y el volumen de datos. El refleja la cantidad de almacenamiento utilizada, la cantidad de datos en la base de datos y los contadores de objetos, colecciones e índices.

Utilice estos datos para supervisar el estado y la capacidad de almacenamiento de una base de datos específica. Esta salida también le permite comparar el uso entre bases de datos y determinar el tamaño promedio de los documentos en una base de datos.

El collStats o del shell que db.collection.stats() dbStats proporciona estadísticas similares a en el nivel de colección, incluido un recuento de los objetos en la colección, el tamaño de la colección, la cantidad de espacio en disco utilizado por la colección e información sobre sus índices.

El comando replSetGetStatus (rs.status() desde el shell) devuelve una visión general del estado de tu set de réplicas. El documento replSetGetStatus detalla el estado y la configuración del set de réplicas y estadísticas sobre sus miembros.

Utilice estos datos para garantizar que la replicación esté configurada correctamente y para comprobar las conexiones entre el host actual y los demás miembros del conjunto de réplicas.

Se trata de herramientas de monitorización proporcionadas como un servicio alojado, normalmente a través de una suscripción paga.

Nombre
notas

MongoDB Cloud Manager es un conjunto de servicios en la nube para gestionar implementaciones de MongoDB. MongoDB Cloud Manager ofrece funciones de monitorización, copias de seguridad y automatización. Para una solución local, consulte también Ops Manager, disponible en MongoDB Enterprise Advanced.

VividCortex proporciona información detallada sobre la carga de trabajo de la base de datos de producción de MongoDB y el rendimiento de las consultas, con una precisión de un segundo. Monitoree la latencia, el rendimiento, los errores y más para garantizar la escalabilidad y el rendimiento excepcional de su aplicación en MongoDB.

Panel de control para MongoDB, alertas específicas de MongoDB, cronograma de conmutación por error de replicación y aplicaciones móviles para iPhone, iPad y Android.

IBM tiene una oferta SaaS de gestión del rendimiento de aplicaciones que incluye monitorización para MongoDB y otras aplicaciones y middleware.

New Relic ofrece soporte completo para la gestión del rendimiento de las aplicaciones. Además, los complementos e información de New Relic permiten consultar las métricas de monitorización de Cloud Manager en New Relic.

Supervisión de infraestructura para visualizar el rendimiento de sus implementaciones de MongoDB.

Monitoreo, detección de anomalías y alertas. SPM monitoriza todas las métricas clave de MongoDB, junto con la infraestructura, incluyendo Docker y otras métricas de aplicaciones, como Node.js, Java, NGINX, Apache, HAProxy o Elasticsearch. SPM proporciona correlación de métricas y registros.

Pandora FMS proporciona el complemento PandoraFMS-mongodb-monitoring para monitorear MongoDB.

Durante el funcionamiento normal, mongod las instancias mongos y reportan un registro en tiempo real de toda la actividad y operaciones del servidor, ya sea a la salida estándar o a un archivo de registro. Las siguientes configuraciones de tiempo de ejecución controlan estas opciones.

  • quietLimita la cantidad de información escrita en el registro o la salida.

  • verbosity. Aumenta la cantidad de información que se escribe en el registro o la salida. También puede modificar el nivel de detalle del registro durante la ejecución con el parámetro logLevel db.setLogLevel() o el método del shell.

  • pathPermite el registro en un archivo, en lugar de la salida estándar. Debe especificar la ruta completa del archivo de registro al configurar esta configuración.

  • logAppend. Agrega información a un archivo de registro en lugar de sobrescribir el archivo.

Nota

Puede especificar estas operaciones de configuración como argumentos de la línea de comandos para mongod mongoso.

Por ejemplo:

mongod -v --logpath /var/log/mongodb/server1.log --logappend

Inicia una mongod instancia en modo y agrega datos al archivo de verbose registro /var/log/mongodb/server1.log/ en.

Los siguientes comandos de base de datos también afectan el registro:

Disponible solo en MongoDB Atlas y MongoDB Enterprise

Un mongod o mongos que se ejecuta con redactClientLogData restringe cualquier mensaje que acompañe a un evento de registro determinado antes de registrarlo, y deja solo los metadatos, los archivos fuente o los números de línea relacionados con el evento. redactClientLogData evita que información potencialmente sensible ingrese al registro del sistema, a costa de perder detalle diagnóstico.

Por ejemplo, la siguiente operación inserta un documento en un mongod que se ejecuta sin censura de registro. El tiene mongod el nivel de detalle de registro establecido 1 en:

db.clients.insertOne( { "name" : "Joe", "PII" : "Sensitive Information" } )

Esta operación produce el siguiente evento de registro:

{
"t": { "$date": "2024-07-19T15:36:55.024-07:00" },
"s": "I",
"c": "COMMAND",
...
"attr": {
"type": "command",
...
"appName": "mongosh 2.2.10",
"command": {
"insert": "clients",
"documents": [
{
"name": "Joe",
"PII": "Sensitive Information",
"_id": { "$oid": "669aea8792c7fd822d3e1d8c" }
}
],
"ordered": true,
...
}
...
}
}

Cuando mongod se ejecuta con redactClientLogData y realiza la misma operación de inserción, produce el siguiente evento de registro:

{
"t": { "$date": "2024-07-19T15:36:55.024-07:00" },
"s": "I",
"c": "COMMAND",
...
"attr": {
"type": "command",
...
"appName": "mongosh 2.2.10",
"command": {
"insert": "###",
"documents": [
{
"name": "###",
"PII": "###",
"_id": "###"
}
],
"ordered": "###",
...
}
...
}
}

Utiliza redactClientLogData en conjunto con Cifrado en Reposo y TLS/SSL (Cifrado de Transporte) para ayudar al cumplimiento de los requisitos regulatorios.

Al desarrollar y operar aplicaciones con MongoDB, es posible que desee analizar el rendimiento de la base de datos como aplicación. EnMongoDB Performance, se describen algunos de los factores operativos que pueden influir en el rendimiento.

Además de los requisitos básicos de monitorización para cualquier instancia de MongoDB, en el caso de los conjuntos de réplicas, los administradores deben monitorizar el retardo de replicación. El "retardo de replicación" se refiere al tiempo que se tarda en copiar (es decir, replicar) una operación de escritura del servidor principal al secundario. Un pequeño retraso puede ser aceptable, pero surgen problemas importantes a medida que aumenta el retardo de replicación, como:

  • Creciente presión de caché en el servidor principal.

  • Las operaciones realizadas durante el periodo de retardo no se replican en uno o más servidores secundarios. Si utiliza la replicación para garantizar la persistencia de los datos, los retrasos excepcionalmente largos pueden afectar la integridad de su conjunto de datos.

  • Si el atraso de la replicación supera la longitud del operation log (oplog), entonces MongoDB tendrá que realizar una sincronización inicial en el secundario, copiando todos los datos del primario y reconstruyendo todos los índices. [1] Esto es poco común en circunstancias normales, pero si se configura el oplog para que sea más pequeño que el valor por defecto, puede surgir este problema.

    Nota

    El tamaño del registro de operaciones solo se puede configurar durante la primera ejecución mediante el argumento--oplogSizedel comandomongodo, preferiblemente, la opciónoplogSizeMBdel archivo de configuración de MongoDB. Si no se especifica esto en la línea de comandos antes de ejecutar con la opción--replSet, mongodcreará un registro de operaciones de tamaño predeterminado.

    De forma predeterminada, el registro 5 de operaciones representa el por ciento del espacio de disco disponible en 64sistemas de bits. Para obtener más información sobre cómo cambiar el tamaño del registro de operaciones, consulte Cambiar el tamaño del registro de operaciones de los miembros del conjunto de réplicas autoadministradas.

Los administradores pueden limitar la tasa a la que el primario aplica sus guardados con el objetivo de mantener el retraso de majority committed por debajo de un valor máximo configurable flowControlTargetLagSeconds.

Por defecto, el control de flujo es enabled.

Ver también: Comprobar el retraso de replicación.

Los problemas de replicación suelen deberse a problemas de conectividad de red entre miembros o a que un servidor principal no cuenta con los recursos necesarios para soportar el tráfico de aplicaciones y replicación. Para comprobar el estado de una réplica, utilice replSetGetStatus o el siguiente asistente en el shell:

rs.status()

La referencia proporciona una visión general más detallada replSetGetStatus de esta salida. En general, observe el valor de y preste especial atención a optimeDate la diferencia de tiempo entre los miembros primario y secundario.

[1] El oplog puede crecer más allá de su límite de tamaño configurado para evitar borrar el majority commit point.

Los miembros secundarios de un set de réplicas ahora registran entradas de oplog que tardan más que el umbral de una operación lenta en aplicarse. Estos mensajes lentos del oplog:

  • Se registran para los secundarios en el diagnostic log.

  • Se documentan en el registro bajo el componente REPL con el texto applied op: <oplog entry> took <num>ms.

  • No depende de los niveles de registro (ya sea a nivel del sistema o del componente)

  • No depende del nivel de perfil.

  • Se ven afectados por slowOpSampleRate.

El perfilador no captura entradas lentas del oplog.

En la mayoría de los casos, los componentes de los clústeres fragmentados se benefician de la misma monitorización y análisis que las demás instancias de MongoDB. Además, los clústeres requieren una monitorización adicional para garantizar que los datos se distribuyan eficazmente entre los nodos y que las operaciones de fragmentación funcionen correctamente.

Tip

Consulte la documentación de fragmentación para obtener más información.

La base de datos de configuración mantiene un mapa que identifica qué documentos se encuentran en cada fragmento. El clúster actualiza este mapa a medida que los fragmentos se mueven entre fragmentos. Cuando un servidor de configuración deja de ser accesible, ciertas operaciones de fragmentación dejan de estar disponibles, como mover fragmentos e iniciar mongos instancias. Sin embargo, los clústeres siguen siendo accesibles desde instancias que ya están en mongos ejecución.

Debido a que los servidores de configuración inaccesibles pueden afectar gravemente la disponibilidad de un clúster fragmentado, debe supervisar sus servidores de configuración para asegurarse de que el clúster permanezca bien equilibrado y que instancias puedan mongos reiniciarse.

MongoDB Cloud Manager y Ops Manager supervisan los servidores de configuración y pueden generar notificaciones si un servidor de configuración deja de ser accesible. Consulte la documentación de MongoDB Cloud Manager y la documentación de Ops Manager para obtener más información.

Las implementaciones más eficaces de clústeres particionados balancean equitativamente los fragmentos entre las particiones. Para facilitar esto, MongoDB cuenta con un proceso de balanceador en segundo plano que distribuye datos para asegurar que los fragmentos siempre estén distribuidos óptimamente entre las particiones.

Ejecute el db.printShardingStatus() comando o al desde. Esto devuelve una descripción general de todo el clúster,sh.status() mongos mongoshincluyendo el nombre de la base de datos y una lista de los fragmentos.

Para comprobar el estado de bloqueo de la base de datos, conéctese a una mongos instancia mediante. Ejecute la siguiente secuencia de comandos para cambiar a mongosh la config base de datos y ​​mostrar todos los bloqueos pendientes en la base de datos del fragmento:

use config
db.locks.find()

El proceso de balanceo utiliza un bloqueo especial de "balanceador" que impide que se realicen otras actividades de balanceo. En la base de datos config, utilice el siguiente comando para ver el bloqueo de "balanceador".

db.locks.find( { _id : "balancer" } )

El servidor principal de configuración de CSRS mantiene el bloqueo del balanceador mediante un ID de proceso llamado "ConfigServer". Este bloqueo nunca se libera. Para determinar si el balanceador se está ejecutando, consulte "Comprobar si el balanceador se está ejecutando".

Nota

El sistema de vigilancia del nodo de almacenamiento está disponible en las ediciones Community y MongoDB Enterprise.

El perro guardián del nodo de almacenamiento monitorea los siguientes directorios de MongoDB para detectar falta de respuesta del sistema de archivos:

Nota

A partir de MongoDB 6.1, el registro en la bitácora siempre está habilitado. Como resultado, MongoDB remueve la opción storage.journal.enabled y las opciones de línea de comandos --journal y --nojournal correspondientes.

De forma predeterminada, el sistema de vigilancia del nodo de almacenamiento está deshabilitado. Solo puede habilitarlo en unmongodal iniciar el sistema configurando el parámetrowatchdogPeriodSecondscon un entero mayor o igual a 60. Sin embargo, una vez habilitado, puede pausar el sistema de vigilancia del nodo de almacenamiento y reiniciarlo durante la ejecución. Consulte el parámetrowatchdogPeriodSecondspara obtener más información.

Si alguno de los sistemas de archivos que contienen los directorios supervisados ​​deja de responder, el sistema de vigilancia del nodo de almacenamiento finaliza el y sale con el código mongod de 61 estado. Si el es mongod el principal de un conjunto de réplicas, la finalización inicia una conmutación por error, lo que permite que otro miembro se convierta en el principal.

Una vez que un haya finalizado, es posible que mongod no sea posible reiniciarlo limpiamente en la misma máquina.

Nota

Symlinks

Si alguno de sus directorios monitoreados es un enlace simbólico a otros volúmenes, el sistema de vigilancia del nodo de almacenamiento no monitorea el destino del enlace simbólico.

Por ejemplo, si el mongod utiliza storage.directoryPerDB: true (o --directoryperdb) y crea un enlace simbólico de un directorio de base de datos a otro volumen, el Watchdog del nodo de almacenamiento no sigue el enlace simbólico para supervisar el objetivo.

El tiempo máximo que puede tardar el Storage Node Watchdog en detectar un sistema de archivos que no responde y finalizar es casi el doble del valor watchdogPeriodSeconds de.

Volver

Recuperación de una instancia autónoma después de un apagado inesperado

Obtén una insignia de habilidad

Domine “Herramientas de supervisión de MongoDB” gratis

Más información

En esta página