MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Monitoraggio proattivo di MongoDB (angolo di Developer Studio/Advisors)

ClusterControl ha molte metriche relative al database, alla replica e anche al sistema operativo. Puoi anche monitorare il processo che viene eseguito all'interno del database tramite l'opscounter nella Panoramica.

Se si abilita il monitoraggio basato sull'agente in ClusterControl, verrà installato automaticamente un database prometheus per il database delle serie temporali e anche l'esportatore (mongo ed esportatore di nodi) sul nodo monitorato. Dopo che tutto è stato configurato, il dashboard sarà disponibile per te con Panoramica del cluster, Panoramica del sistema e anche metriche MongoDB (MongoDB Server and Replication) che puoi utilizzare per monitorare il database MongoDB.

C'è anche un Ops Monitor in ClusterControl che può essere utilizzato per monitorare le sessioni all'interno del database.

Oltre a quanto sopra menzionato, ClusterControl ha la capacità di creare Advisor personalizzati tramite Developer Studio. In questo blog esamineremo Developer Studio e consulenti relativi a MongoDB.

Utilizza Developer Studio

ClusterControl fornisce Developer Studio, quindi puoi creare advisor personalizzati relativi all'argomento in MongoDB per i quali desideri avere un advisory basato sulle migliori pratiche di prestazioni del database. La creazione di uno script per i consulenti personalizzati in MongoDB richiede la conoscenza del linguaggio di programmazione javascript, perché tutti i consulenti sono scritti in javascript. Puoi accedere a Developer Studio tramite Gestisci -> Developer Studio e potrai vedere la pagina come mostrato di seguito:

Possiamo creare un nuovo script advisor facendo clic sul pulsante Nuovo, dopodiché visualizzerà una finestra di dialogo per riempire il nome del file come mostrato di seguito:

Creeremo un semplice script lock.js che verrà archiviato nel percorso s9s/mongodb/connections. Lo script raccoglie informazioni relative al blocco globale in MongoDB. Il numero di blocchi globali elevati sarà un problema in MongoDB, perché il blocco è ancora in attesa/non ancora rilasciato. Di seguito è riportato un esempio di blocco globale in 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;
}

Puoi salvare lo script, compilarlo ed eseguirlo. Puoi pianificare lo script in Developer Studio in base a ogni minuto, ora in cui lo script verrà eseguito.

Consiglieri

Gli Advisor ci danno visibilità sullo stato dello script che abbiamo creato in Developer Studio, lo script verrà eseguito e controllerà regolarmente la corrente del blocco globale. Se lo stato è al di sotto della soglia che definiamo, l'uscita diventa OK, ma apparirà un avviso se il blocco globale corrente è al di sopra della soglia. Possiamo vedere nello screenshot qui sotto che il blocco globale utilizzato è visualizzato negli Advisor e lo stato è OK al momento.

Conclusione

Developer Studio e Advisor possono darti il ​​vantaggio di creare Advisor personalizzati in base alle tue esigenze e visualizzati nella dashboard di ClusterControl, e ovviamente anche l'avviso.

Per oggi è tutto!