sql >> Database >  >> NoSQL >> MongoDB

Proactieve MongoDB Monitoring (Developer Studio/Advisors-hoek)

ClusterControl heeft veel meetwaarden met betrekking tot de database, replicatie en ook het besturingssysteem. U kunt het proces dat in de database wordt uitgevoerd ook volgen via de opscounter in het Overzicht.

Als u Agent Based Monitoring in ClusterControl inschakelt, wordt automatisch een prometheus-database voor tijdreeksdatabases en ook exporter (zowel mongo als node-exporteur) op het bewaakte knooppunt geïnstalleerd. Nadat alles is ingesteld, is het Dashboard voor u beschikbaar met Clusteroverzicht, Systeemoverzicht en ook MongoDB-statistieken (MongoDB Server en Replicatie) die u kunt gebruiken om de MongoDB-database te bewaken.

Er is ook een Ops Monitor in ClusterControl die kan worden gebruikt om sessies in de database te volgen.

Afgezien van het bovengenoemde, heeft ClusterControl de mogelijkheid om aangepaste adviseurs te maken via Developer Studio. In deze blog bespreken we Developer Studio en Advisors met betrekking tot MongoDB.

Gebruik Developer Studio

ClusterControl biedt Developer Studio, zodat u aangepaste adviseurs kunt maken met betrekking tot het onderwerp in MongoDB waarover u advies wilt hebben op basis van de best practices van databaseprestaties. Voor het maken van een script voor aangepaste adviseurs in MongoDB moet u kennis hebben van de programmeertaal javascript, omdat alle adviseurs in javascript zijn geschreven. U kunt de Developer Studio openen via Beheren -> Developer Studio en u kunt de pagina zien zoals hieronder weergegeven:

We kunnen een nieuw adviseurscript maken door daarna op de knop Nieuw te klikken het zal een dialoog tonen om de bestandsnaam in te vullen zoals hieronder getoond:

We zullen een eenvoudig lock.js-script maken dat wordt opgeslagen in de pad s9s/mongodb/connections. Het script verzamelt informatie met betrekking tot de globale vergrendeling in de MongoDB. Het aantal hoge globale sloten zal een probleem zijn in MongoDB, omdat het slot nog in de wacht staat / nog niet is vrijgegeven. Hieronder ziet u een voorbeeld van een globale vergrendeling 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;
}

Je kunt het script opslaan, compileren en uitvoeren. U kunt het script in Developer Studio plannen op basis van het uur dat het script elke minuut wordt uitgevoerd.

Adviseurs

De adviseurs geven ons inzicht in de status van het script dat we in de Developer Studio hebben gemaakt, het script wordt uitgevoerd en controleert regelmatig de huidige of globale vergrendeling. Als de status lager is dan de drempel die we definiëren, wordt de uitvoer OK, maar er verschijnt een waarschuwing als de huidige globale vergrendeling boven de drempel ligt. We kunnen op de onderstaande schermafbeelding zien dat het gebruikte algemene slot wordt weergegeven in de adviseurs en dat de status momenteel in orde is.

Conclusie

Ontwikkelaarsstudio en -adviseurs kunnen u voordeel bieden om aangepaste adviseurs te maken op basis van uw vereisten en weergegeven in het ClusterControl-dashboard, en natuurlijk ook de waarschuwing.

Dat was alles voor vandaag!


  1. Node.js - wacht op meerdere asynchrone oproepen

  2. maxmemory-parameter in redis.conf

  3. Kan redis mysql volledig vervangen?

  4. MongoDB geneste groep?