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

Proaktiv MongoDB-overvågning (udviklerstudie/rådgivervinkel)

ClusterControl har mange metrics relateret til databasen, replikeringen og også operativsystemet. Du kan også overvåge processen, der kører inde i databasen, gennem optælleren i oversigten.

Hvis du aktiverer agentbaseret overvågning i ClusterControl, vil den automatisk installere en prometheus-database for tidsseriedatabase og også eksportør (både mongo- og nodeeksportør) på den overvågede node. Når alt er konfigureret, vil Dashboardet være tilgængeligt for dig med Cluster Overview, System Overview og også MongoDB (MongoDB Server og Replication) metrics, som du kan bruge til at overvåge MongoDB databasen.

Der er også en Ops Monitor i ClusterControl, som kan bruges til at overvåge sessioner inde i databasen.

Ud over ovennævnte har ClusterControl kapacitet til at oprette tilpassede rådgivere gennem Developer Studio. I denne blog vil vi gennemgå Developer Studio og rådgivere relateret til MongoDB.

Brug Developer Studio

ClusterControl leverer Developer Studio, så du kan oprette brugerdefinerede rådgivere relateret til det emne i MongoDB, som du ønsker at have rådgivende baseret på bedste praksis for databaseydeevne. At lave et script til brugerdefinerede rådgivere i MongoDB kræver, at du har kendskab til javascript-programmeringssproget, fordi alle rådgiverne er skrevet i javascript. Du kan få adgang til Developer Studio gennem Manage -> Developer Studio, og du vil kunne se siden som vist nedenfor:

Vi kan oprette nyt rådgiverscript ved at klikke på knappen Ny, derefter det vil vise en dialog for at udfylde filnavnet som vist nedenfor:

Vi vil oprette et simpelt lock.js-script, der vil blive gemt i sti s9s/mongodb/forbindelser. Scriptet indsamler information relateret til den globale lås i MongoDB. Antallet af høje globale låse vil være et problem i MongoDB, fordi låsen stadig er på hold / ikke frigivet endnu. Nedenfor er et eksempel på global lås i 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;
}

Du kan gemme scriptet, kompilere og køre. Du kan planlægge scriptet i Developer Studio baseret på hvert minut, time scriptet kører.

Rådgivere

Rådgiverne giver os synlighed om tilstanden af ​​scriptet, som vi havde oprettet i Developer Studio, scriptet vil køre og regelmæssigt tjekke den aktuelle globale lås. Hvis tilstanden er under den tærskel, som vi definerer, bliver outputtet OK, men det vil fremkomme med advarsel, hvis den aktuelle globale lås er over tærsklen. Vi kan se på nedenstående skærmbillede, at den anvendte globale lås vises i rådgiverne, og at tilstanden er OK i øjeblikket.

Konklusion

Udviklerstudie og rådgivere kan give dig fordel ved at lave tilpassede rådgivere baseret på dine krav og vist i ClusterControl-dashboardet, og selvfølgelig også advarslen.

Det var alt for i dag!


  1. MongoDB $sampleRate

  2. Navnekonvention og gyldige tegn til en Redis-nøgle

  3. spring data - Mongodb - findBy Method for indlejrede objekter

  4. Apache HBase I/O – HFile