MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Surveillance proactive de MongoDB (angle Developer Studio/Advisors)

ClusterControl dispose de nombreuses métriques liées à la base de données, à la réplication et également au système d'exploitation. Vous pouvez également surveiller le processus qui s'exécute dans la base de données via le compteur d'opérations dans la vue d'ensemble.

Si vous activez la surveillance basée sur l'agent dans ClusterControl, il installera automatiquement une base de données prometheus pour la base de données de séries chronologiques et également un exportateur (mongo et exportateur de nœud) sur le nœud surveillé. Une fois que tout a été configuré, le tableau de bord sera disponible pour vous avec la vue d'ensemble du cluster, la vue d'ensemble du système et également les métriques MongoDB (serveur MongoDB et réplication) que vous pouvez utiliser pour surveiller la base de données MongoDB.

Il existe également un moniteur Ops dans ClusterControl qui peut être utilisé pour surveiller les sessions à l'intérieur de la base de données.

Outre ce qui précède, ClusterControl a la capacité de créer des conseillers personnalisés via Developer Studio. Dans ce blog, nous passerons en revue Developer Studio et les conseillers liés à MongoDB.

Utiliser Developer Studio

ClusterControl fournit Developer Studio, afin que vous puissiez créer des conseillers personnalisés liés au sujet dans MongoDB pour lesquels vous souhaitez avoir des conseils basés sur les meilleures pratiques de performance de la base de données. La création d'un script pour les conseillers personnalisés dans MongoDB nécessite que vous ayez des connaissances dans le langage de programmation javascript, car tous les conseillers sont écrits en javascript.Vous pouvez accéder au Developer Studio via Gérer -> Developer Studio, et vous pourrez voir la page comme indiqué ci-dessous :

Nous pouvons créer un nouveau script de conseiller en cliquant sur le bouton Nouveau, après cela il affichera une boîte de dialogue pour remplir le nom du fichier comme indiqué ci-dessous :

Nous allons créer un simple script lock.js qui sera stocké dans le chemin s9s/mongodb/connexions. Le script collecte des informations relatives au verrou global dans MongoDB. Le nombre élevé de verrous globaux sera un problème dans MongoDB, car le verrou est toujours en attente / pas encore libéré. Ci-dessous l'exemple de verrouillage 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;
}

Vous pouvez enregistrer le script, le compiler et l'exécuter. Vous pouvez programmer le script dans Developer Studio en fonction de chaque minute, heure d'exécution du script.

Conseillers

Les conseillers nous donnent une visibilité sur l'état du script que nous avions créé dans le Developer Studio, le script s'exécutera et vérifiera régulièrement l'état actuel du verrouillage global. Si l'état est inférieur au seuil que nous définissons, la sortie devient OK, mais il apparaîtra un avertissement si le verrou global actuel est supérieur au seuil. Nous pouvons voir sur la capture d'écran ci-dessous que le verrou global utilisé apparaît dans les conseillers et que l'état est OK pour le moment.

Conclusion

Developer Studio et les conseillers peuvent vous donner l'avantage de créer des conseillers personnalisés en fonction de vos besoins et affichés dans le tableau de bord de ClusterControl, et bien sûr l'alerte aussi.

C'est tout pour aujourd'hui !