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

Supervisión proactiva de MongoDB (ángulo de Developer Studio/Advisors)

ClusterControl tiene muchas métricas relacionadas con la base de datos, la replicación y también el sistema operativo. También puede monitorear el proceso que se ejecuta dentro de la base de datos a través del contador de operaciones en la Descripción general.

Si habilita la supervisión basada en agentes en ClusterControl, instalará automáticamente una base de datos Prometheus para la base de datos de series temporales y también un exportador (mongo y exportador de nodos) en el nodo supervisado. Una vez que se haya configurado todo, el panel estará disponible para usted con la descripción general del clúster, la descripción general del sistema y también las métricas de MongoDB (MongoDB Server and Replication) que puede usar para monitorear la base de datos de MongoDB.

También hay un Ops Monitor en ClusterControl que se puede usar para monitorear sesiones dentro de la base de datos.

Además de lo mencionado anteriormente, ClusterControl tiene capacidades para crear asesores personalizados a través de Developer Studio. En este blog, revisaremos Developer Studio y Advisors relacionados con MongoDB.

Usar Developer Studio

ClusterControl proporciona Developer Studio, por lo que puede crear asesores personalizados relacionados con el tema en MongoDB que desea tener asesoramiento basado en las mejores prácticas de rendimiento de la base de datos. Crear un script para asesores personalizados en MongoDB requiere que tenga conocimientos en el lenguaje de programación javascript, porque todos los asesores están escritos en javascript. Puede acceder a Developer Studio a través de Manage -> Developer Studio, y podrá ver la página como se muestra a continuación:

Podemos crear un nuevo script de asesor haciendo clic en el botón Nuevo, después de eso mostrará un diálogo para completar el nombre del archivo como se muestra a continuación:

Crearemos un script lock.js simple que se almacenará en el ruta s9s/mongodb/conexiones. El script recopila información relacionada con el bloqueo global en MongoDB. La cantidad de bloqueos globales altos será un problema en MongoDB, porque el bloqueo aún está en espera/aún no se ha liberado. A continuación se muestra la muestra de bloqueo global en javascript:

#include "common/helpers.js"
#include "cmon/io.h"
#include "cmon/alarms.h"

var DESCRIPTION="This advisor collects the number of global locks every minute and"
                " notifies you if the number of locks exceeds 90%."
                " This number can indicate a possible concurrency issue if it’s consistently high."
                " This can happen if a lot of requests are waiting for a lock to be released..";
var WARNING_THRESHOLD=10;
var TITLE="Global lock used";
var ADVICE_WARNINGS="In the past 5 minutes more than 90% of "
    " there could be concurrently issue in the database.";
var ADVICE_OK="The percentage of global lock is satisfactory." ;

function main(hostAndPort) {
    if (hostAndPort == #N/A)
        hostAndPort = "*";
    var hosts   = cluster::mongoNodes();
    var advisorMap = {};
    var result= [];
    var msg = "";
    var endTime   = CmonDateTime::currentDateTime();
    var startTime = endTime - 10 * 60;

    for (i = 0; i < hosts.size(); i++)
    {
        host        = hosts[i];
        if(hostAndPort != "*" && !hostMatchesFilter(host,hostAndPort))
            continue;
        if(host.hostStatus() != "CmonHostOnline")
            continue;
        var advice = new CmonAdvice();
        stats = host.mongoStats(startTime, endTime);
        total_global_lock = stats.toArray("globalLock.currentQueue.total");
       

        if (total_global_lock * 100 < WARNING_THRESHOLD)
        {
            advice.setSeverity(Warning);
            msg = ADVICE_WARNING;
        }
        if (advice.severity() <= 0) {
            advice.setSeverity(Ok);
        }
        advice.setHost(host);
        advice.setTitle(TITLE);
        advice.setAdvice(msg);
        advisorMap[i]= advice;
    }
    return advisorMap;
}

Puede guardar el script, compilarlo y ejecutarlo. Puede programar la secuencia de comandos en Developer Studio en función de cada minuto, hora en que se ejecutará la secuencia de comandos.

Asesores

Los Asesores nos dan visibilidad sobre el estado del script que habíamos creado en Developer Studio, el script se ejecutará y verificará regularmente el bloqueo global actual. Si el estado está por debajo del umbral que definimos, la salida se vuelve OK, pero aparecerá una advertencia si el bloqueo global actual está por encima del umbral. Podemos ver en la siguiente captura de pantalla que el bloqueo global utilizado aparece en los asesores y el estado es correcto actualmente.

Conclusión

Developer Studio and Advisors puede brindarle el beneficio de crear asesores personalizados según sus requisitos y que se muestren en el panel de control de ClusterControl y, por supuesto, también en la alerta.

¡Eso es todo por hoy!