Servidores Tecnología Tutorial

Cómo monitorizar Mongo DB

diciembre 28, 2015

Cómo monitorizar Mongo DB

Como comentamos en el artículo de tipos de bases de datos, la correcta monitorización de las bases de datos es imprescindible en cualquier organización. En esta ocasión os vamos a contar todo lo que debéis saber para monitorizar un Mongo BD. No sólo os contamos los comandos de Mongo DB y qué debéis saber sobre esta base de datos, sino que además os damos los plugins necesarios para tener completamente monitorizadas vuestras instancias Mongo DB.

Tenemos que asegurarnos que nuestra base de datos funciona correctamente. Si MongoDB va mal, todas las aplicaciones que se nutren de tu mongo db fallarán. Así que monitorizar las principales variables y configurar los parámetros de tu base de datos es la mejor opción para asegurarse de que tus bases de datos mongo db funcionan.

banner full pandora fms free demo
banner tablet pandora fms free demo
banner mobile pandora fms free demo

¿Qué es Mongo db?

MongoDB es una base de datos orientada a documentos de código abierto diseñada para facilitar el desarrollo de aplicaciones de Internet y la escalabilidad de tu infraestructura. MongoDB almacena datos estructurados con esquemas dinámicos, haciendo la integración de datos en más fácil y rápida. Sus principales características se mencionan a continuación:

  • Documentado orientado
  • Alto rendimiento
  • Alta disponibilidad
  • Fácil escalabilidad
  • Rico lenguaje de consulta

Si queréis más información sobre bases de datos no relacionales y su comparación con las relacionales, no os perdáis este artículo de nosql vs sql, diferencia y cuando elegir cada una.


¿Quieres saber más acerca de la monitorización de aplicaciones?

Pandora FMS Enterprise es capaz de monitorizar las aplicaciones y bases de datos más populares. Entra aquí y verás…

 ¿Cómo recoger datos?

La distribución de MongoDB incluye utilidades que devuelven estadísticas sobre rendimientos y actividades rápidamente. Estas se utilizan normalmente para el diagnóstico de problemas y la evaluación de operaciones normales: Mongotop y MongoStat.

Mongostop  recoge e informa sobre la actividad de lectura y escritura actual de una instancia de MongoDB proporcionando visibilidad de su uso. Mongostop verifica que la actividad y el uso del mongo db cumple las expectativas asignadas.

Mongostat captura y devuelve los contadores de las operaciones de base de datos. Informa de operaciones en función de cada tipo (por ejemplo, insertar, consultar, actualizar, eliminar, etc.). Su formato hace que sea fácil entender la distribución de carga en el servidor.

Mongostat ofrece más métricas para recoger datos. Es por esto que Mongo DB recomienda utilizar este comando para recopilar los datos. A continuación, enumeramos una lista de métricas donde podemos obtener información de:

  • _MongoDB_OpenConns_: conexiones de base de datos abiertas para esta instancia.
  • _MongoDB_ActiveClientsReading_: Lecturas activas en base de datos abiertas para esta instancia.
  • _MongoDB_ActiveClientsWriting_: Escrituras de BD abiertas para esta instancia.
  • _MongoDB_Inserts_: Insercciones en BD por segundo para esta instancia.
  • _MongoDB_Queries_: Consultas en BD por segundo para esta instancia.
  • _MongoDB_Updates_: Actualizaciones en BD por segundo para esta instancia.
  • _MongoDB_Deletes_: Borrados en BD por segundo para esta instancia.
  • _MongoDB_IdxMiss_: Porcentaje de páginas bttree perdidas en esta instancia.

Lo más interesante se menciona anteriormente. Aunque hay más métricas interesantes disponibles.

  • _MongoDB_Getmores_: DB Getmores por segundo para esta instancia.
  • _MongoDB_Commands_: BD comandos por segundo para esta instancia.
  • _MongoDB_Flushes_: DB Borrados de Fsync por segundo para esta instancia.
  • _MongoDB_PageFaults_: faltas de páginas por segundos para esta instancia.
  • _MongoDB_ClientReadQueueLenght_: clientes de lectura en cola para esta instancia.
  • _MongoDB_ClientWriteQueueLength_:  clientes de escritura en cola para esta instancia.
  • _MongoDB_NetworkTrafficInBits_: tráfico de red de entrada en bits para esta instancia.
  • _MongoDB_NetworkTrafficOutBits_: tráfico de red de salida en bits para esta instancia.

La mayoría de estas métricas son útiles para descubrir problemas de rendimiento como instancias de servidor con una carga que no pueden gestionar, problemas de tiempos de espera, tendencias preocupantes o problemas en la planificación de la capacidad.

Comandos MongoDB

En MongoDB las consultas se realizan a colecciones de documentos y no a datos que se encuentran insertados en tablas. A continuación, describiremos algunos comandos de mongoDB. Son básicos pero muy útiles para entender como el concepto de Base de Datos es muy diferente al concepto relacional.

  • Aggregate: realiza tareas de agregación como un grupo usando el marco de agregación.
  • Distinct: muestra los distintos valores encontradados para una clave específica en una colección.
  • Show databases: lista todas las bases de datos.
  • Group: grupo de documentos en una colección para una clave específica.
  • Insert: inserta uno o más documentos.
  • Delete: elimina uno o más documentos.
  • Logout: finalzia la conexión de la sesión actual.
  • Getnonce: es un comando interno para generar una contraseña de un solo uso para la autenticación.

Estadísticas DB
La consola de MongoDB proporciona un número de comandos que devuelven las estadísticas sobre el estado de la instancia de MongoDB. Estos datos pueden proporcionar una granularidad más fina que las anteriores herramientas respecto al estado de la instancia de MongoDB.

Considera el uso de las salidas de los scripts y programas para desarrollar alertas personalizadas, o modificar el comportamiento de su aplicación en respuesta a la actividad de su instancia.

No olvides que con Pandora FMS podrás introducir estos scripts en los plugins y llevarte la información a tu consola.

dbSats

El comando dbSats devuelve un documento con estadísticas que incluye el uso de almacenamiento y el volumen de datos de una sola base de datos. Este comando refleja la cantidad de almacenamiento que ha sido o está siendo utilizado, la cantidad de datos contenidos en la base de datos, y objetos, colecciones y contadores de índice. DbSats se utiliza para monitorear la capacidad de una base de datos específica y su almacenamiento.

Logfile

El Logfile de MongoDB es absolutamente necesario cuando se tiene un verdadero problema: el logfile no está siempre presente en la monitorización del rendimiento, pero se puede necesitar cuando se lucha contra un problema desconocido. ¡Tenlo en mente! Está en /var/log/mongodb/mongodb.log

MongoDB es un proceso que ejecuta el servidor MongoDB. Si este proceso no funciona correctamente, estás muerto. Así que, mejor que seas cariñoso y estés atento a el cuando implementes tu monitorización.

¿Cómo monitorizar Mongo DB?

Para explicar cómo monitorizar MongoDB vamos a usar Pandora FMS Open Source. Es una herramienta de monitorización de código abierto que sirve para monitorizar servidores, aplicaciones y comunicaciones, y luego notifica a los usuarios de los problemas y los fallos antes de que ocurran. Esta herramienta es muy útil en el monitoreo de red.

También incluye un sistema de informes configurables que evalúa y notifica a los usuarios sobre el nivel de realización y cumplimiento de sus sistemas. Puedes descargarte este software haciendo clic aquí.

Si necesitas ayuda para instalar el software, hay algunos tutoriales disponibles en la página web. También hay un vídeo en youtube que explica cómo monitorizar MongoDB (incrustado al final de este artículo). Después de instalar Pandora FMS, puedes descargarte el plugin de MongoDB así como Pandora FMS.

No olvides que los plugins de Pandora FMS son totalmente flexibles y abiertos a nuevas modificaciones. Ah! y no te olvides de avisarnos si consigues hacer una versión de plugin insuperable!

Este plugin recurre a mongostat internamente con el fin de reunir información de estadística básica. La mayor parte de los valores devueltos por esta herramienta son una necesidad en cualquier sistema de monitoreo de las estadísticas de rendimiento para MongoDB. Tiene un archivo de configuración, el cual puede configurar comandos de Mongostat para recoger ciertos datos. Simplemente ejecuta Mongostat para cada entrada de la instancia en el .conf. También analiza todos los valores importantes en módulos de los agentes del software, con formato XML, listos para ser enviados a Pandora FMS Data Server.

Por lo tanto, podemos descargar estos controles predefinidos en cualquier momento, sin tener que desarrollarlos  nosotros mismos. Para eso, consulta la biblioteca de Pandora FMS:

Como monitorizar mongo db plugin

Suponemos que tienes el servidor de Pandora FMS instalado (si no, intenta preconfigurar la máquina virtual con Pandora FMS para hacer un rápido despliegue/prueba rápida). Necesitas instalar un agente de Pandora FMS en el servidor de MongoDB, y también necesitas instalar (descargar) el plugin mongoDB de Pandora FMS.

Después de descargar y descomprimir el plugin (fichero rar), obtendrá un script de perl (.pl), un fichero de configuración (.conf) y la documentación para usar el plugin (libreoffice.odt). Cuidado, el manual es enorme.

Edita el fichero de configuración de MongoDB. El fichero de configuración tiene varias líneas, sólo necesitas una. Usa la siguiente línea que te mostramos como ejemplo:

mongodb_stats mongostat;check_dbstats;;localhost;27019

 

Si el plugin, agente Pandora FMS y mongoDB están siendo ejecutados en el mismo servidor, la línea anterior debería ser suficiente. De lo contrario, es probable que tengas que necesitar cambiar el nombre del host/puerto al punto donde el servidor de mongoDB se está ejecutando. Recuerda que mongostat debe estar instalado en el mismo servidor donde el agente de Pandora FMS está ejecutando el plugin.

Una vez el plugin del archivo de configuración de mongo es configurado, copia el plugin y configura el archivo en el directorio del plugin del agente. Cambia el nombre de los dos a nombres más fáciles, como “mongo.pl” y “mongo.conf”, y cópialos en /etc/pandora/plugins.

Ahora, edita el archivo de configuración por defecto del agente de Pandora FMS.

Usa esta línea:

module_plugin /etc/pandora/plugins/mongo.pl /etc/pandora/plugins/mongo.conf

Reinicia el agente de Pandora:

/etc/init.d/pandora_agent_daemon restart

Espera unos 5-10 segundos antes de buscar la información sobre mongoDB en el agente que acaba de instalar. Debería verse como esto:

como monitorizar mongo db consola

Todos los controles se están ejecutando ahora y todos sus resultados son almacenados en el historial de datos de cada módulo.  Hay muchas cosas que podemos hacer con toda esta información. Una de ellas es mostrar los gráficos para cada uno de los módulos mediante el uso de su historial de datos.

Si haces clic en el botón de gráfico (al lado derecho de cada módulo) podrás ver los gráficos por defecto para un módulo en ventanas individuales.

como monitorizar mongo db grafico

Sistema de monitorización de MongoDB

Todas las métricas de monitoreo que hemos visto hasta ahora son sobre el rendimiento. ¿Qué ocurre con las métricas más “básicas” e importantes como “¿está mi servidor vivo?”?, ¿Cuánta memoria está utilizando mi servidor? O “¿qué paso con el uso de CPU?”.  Para ello, vamos a utilizar algunos módulos “hechos a mano” en Pandora.

Edita tu archivo /etc/pandora/pandora_agent.conf y añade la información de abajo.

module_begin

module_name MongoDB_Status
module_type generic_proc
module_exec ps aux | grep mongod | grep -v grep | wc -l
module_end

module_begin
module_name MongoDB_Opened_Files
module_type generic_data
module_exec lsof -l | grep mongod | wc -l
module_end

module_begin
module_name MongoDB_Memory%
module_type generic_data
module_exec ps aux | grep mongod | grep -v grep | awk ‘{ print $4 }’
module_end

module_begin
module_name MongoDB_CPU%
module_type generic_data
module_exec ps aux | grep mongod | grep -v grep | awk ‘{ print $3 }’
module_end

module_plugin grep_log /var/log/mongodb/mongodb.log MongoDB_logfile

Reinicia el agente de Pandora FMS para obtener la configuración cargada en el agente.

En este punto, no necesitarás más explicaciones, ¡pero aquí vamos!:

  • _MongoDB_Status_: se informa de “1” si se está ejecutnado y “0” si no lo es. Se levantará un evento si el servidor está caído. En ese caso, un hermoso cuadro rojo aparecerá en su pantalla.
  • _MongoDB_Opened_Files_: Cuenta los archivos totales abiertos por MongoDB. Es útil para identificar los cuellos de botella y la sobrecarga del sistema.
  • _MongoDB_Memory and CPU %_: Se muestra la perspectiva del Sistema del % total de CPU/Memoria usada por MongoDB en el Sistema. Son muy útiles para controlar el impacto del Sistema de MongoDB in su servidor
  • _MongoDB_logfile_: Envía toda la informacón del fichero de registro de Pandora FMS. Si algo sucede, puedes estar seguro de que va a tener toda la información disponible.

Después de implementar todos estos pasos, te aseguramos que tu mongoDB está totalmente monitorizado.

como monitorizar mongo db consola 2

Con esto podrás recibir sms y emails con tola la información actualizada de tus Mongo DB. Ah! y todo esto en tiempo real!

Paso a paso para monitorizar tu Mongo DB

Te mostramos un video con el paso a paso a seguir.

¿Qué te ha parecido este artículo? ¿Necesitas más información para monitorizar tu mongo db? Hay algo que nos hayamos dejado?

Antes de despedirnos, recuerda que Pandora FMS es un software de monitorización flexible, capaz de monitorizar dispositivos, infraestructuras, aplicaciones, servicios y procesos de negocio.

¿Quieres conocer mejor qué es lo que Pandora FMS puede ofrecerte? Descúbrelo entrando aquí: https://pandorafms.com/es

Si cuentas con más de 100 dispositivos para monitorizar puedes contactar con nosotros a través del siguiente formulario: https://pandorafms.com/es/contactar/

Además, recuerda que si tus necesidades de monitorización son más limitadas tienes a tu disposición la versión OpenSource de Pandora FMS. Encuentra más información aquí: https://pandorafms.org/es/

No dudes en enviar tus consultas. ¡El equipazo de Pandora FMS estará encantado de atenderte!


Written by:



Leave a comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.