sql >> Databasteknik >  >> NoSQL >> MongoDB

Proaktiv MongoDB-övervakning (utvecklarstudio/rådgivares vinkel)

ClusterControl har många mätvärden relaterade till databasen, replikeringen och även operativsystemet. Du kan också övervaka processen som körs inuti databasen genom opscounter i översikten.

Om du aktiverar agentbaserad övervakning i ClusterControl kommer den automatiskt att installera en prometheus-databas för tidsseriedatabas och även exportör (både mongo- och nodexportör) på den övervakade noden. När allt har ställts in kommer instrumentpanelen att vara tillgänglig för dig med klusteröversikt, systemöversikt och även MongoDB (MongoDB Server och replikering) mätvärden som du kan använda för att övervaka MongoDB-databasen.

Det finns också en Ops Monitor i ClusterControl som kan användas för att övervaka sessioner i databasen.

Förutom ovanstående har ClusterControl möjligheter att skapa anpassade rådgivare genom Developer Studio. I den här bloggen kommer vi att granska Developer Studio och rådgivare relaterade till MongoDB.

Använd Developer Studio

ClusterControl tillhandahåller Developer Studio, så att du kan skapa anpassade rådgivare relaterade till ämnet i MongoDB som du vill ha rådgivande baserat på bästa praxis för databasprestanda. Att skapa ett script för anpassade rådgivare i MongoDB kräver att du har kunskaper i javascript-programmeringsspråket, eftersom alla rådgivare är skrivna i javascript. Du kan komma åt Developer Studio genom Manage -> Developer Studio, och du kommer att kunna se sidan som visas nedan:

Vi kan skapa ett nytt rådgivareskript genom att klicka på knappen Ny efter det det kommer att visa en dialogruta för att fylla filnamnet som visas nedan:

Vi kommer att skapa ett enkelt lock.js-skript som kommer att lagras i väg s9s/mongodb/anslutningar. Skriptet samlar in information relaterad till det globala låset i MongoDB. Antalet höga globala lås kommer att vara ett problem i MongoDB, eftersom låset fortfarande är i vänteläge / inte släppt ännu. Nedan är ett exempel på globalt 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 spara skriptet, kompilera och köra. Du kan schemalägga skriptet i Developer Studio baserat på varje minut och timme som skriptet kommer att köras.

Rådgivare

Rådgivarna ger oss synlighet om tillståndet för skriptet som vi skapade i Developer Studio, skriptet kommer att köras och regelbundet kontrollera strömmen för globalt lås. Om tillståndet är under tröskeln som vi definierar blir utgången OK, men den kommer att visas som varning om det aktuella globala låset ligger över tröskeln. Vi kan se på skärmdumpen nedan att det globala låset som används visas i Advisors och att tillståndet är OK för närvarande.

Slutsats

Utvecklarstudion och rådgivare kan ge dig fördelen att skapa anpassade rådgivare baserat på dina krav och visas i ClusterControl-instrumentpanelen, och naturligtvis även varningen.

Det var allt för idag!


  1. MongoDB $degreesToRadians

  2. Transparent databasfailover för dina applikationer

  3. Mac(os x):Finns det ett sätt att installera ENDAST redis-cli?

  4. Matcha med delsträng i mongodb-aggregation