MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Proaktive MongoDB-Überwachung (Winkel Developer Studio/Advisors)

ClusterControl hat viele Metriken in Bezug auf die Datenbank, die Replikation und auch das Betriebssystem. Sie können den Prozess, der in der Datenbank läuft, auch über den Opscounter in der Übersicht überwachen.

Wenn Sie die agentenbasierte Überwachung in ClusterControl aktivieren, wird automatisch eine Prometheus-Datenbank für die Zeitreihendatenbank und auch ein Exporter (sowohl Mongo als auch Node Exporter) auf dem überwachten Knoten installiert. Nachdem alles eingerichtet wurde, steht Ihnen das Dashboard mit Cluster-Übersicht, Systemübersicht und auch MongoDB-Metriken (MongoDB-Server und -Replikation) zur Verfügung, mit denen Sie die MongoDB-Datenbank überwachen können.

Es gibt auch einen Ops-Monitor in ClusterControl, der verwendet werden kann, um Sitzungen innerhalb der Datenbank zu überwachen.

Abgesehen von dem oben Erwähnten verfügt ClusterControl über Fähigkeiten zum Erstellen benutzerdefinierter Advisors durch Developer Studio. In diesem Blog werden wir Developer Studio und Advisors im Zusammenhang mit MongoDB überprüfen.

Entwicklerstudio verwenden

ClusterControl stellt Developer Studio bereit, sodass Sie benutzerdefinierte Advisors in Bezug auf das Thema in MongoDB erstellen können, die Sie basierend auf den Best Practices der Datenbankleistung beraten möchten. Das Erstellen eines Skripts für benutzerdefinierte Advisors in MongoDB erfordert Kenntnisse in der Programmiersprache Javascript, da alle Advisors in Javascript geschrieben sind. Sie können auf das Developer Studio über Manage -> Developer Studio zugreifen und die Seite sehen wie unten gezeigt:

Wir können ein neues Advisor-Skript erstellen, indem wir danach auf die Schaltfläche Neu klicken Es wird ein Dialogfeld angezeigt, um den Dateinamen wie unten gezeigt einzugeben:

Wir erstellen ein einfaches lock.js-Skript, das in der gespeichert wird Pfad s9s/mongodb/connections. Das Skript sammelt Informationen zur globalen Sperre in der MongoDB. Die Anzahl der hohen globalen Sperren wird in MongoDB ein Problem darstellen, da die Sperre noch gehalten / noch nicht freigegeben wird. Unten ist das Beispiel einer globalen Sperre 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;
}

Sie können das Skript speichern, kompilieren und ausführen. Sie können das Skript in Developer Studio basierend auf der minütlichen, stündlichen Ausführung des Skripts planen.

Berater

Die Advisors geben uns Einblick in den Status des Skripts, das wir im Developer Studio erstellt haben, das Skript wird ausgeführt und überprüft regelmäßig die aktuelle globale Sperre. Wenn der Status unter dem von uns definierten Schwellenwert liegt, wird die Ausgabe OK, aber es wird eine Warnung angezeigt, wenn die aktuelle globale Sperre über dem Schwellenwert liegt. Wir können auf dem folgenden Screenshot sehen, dass die verwendete globale Sperre in den Advisors angezeigt wird und der Status derzeit OK ist.

Fazit

Developer Studio und Advisors können Ihnen den Vorteil bieten, benutzerdefinierte Advisors zu erstellen, die auf Ihren Anforderungen basieren und im ClusterControl-Dashboard angezeigt werden, und natürlich auch in der Benachrichtigung.

Das war's für heute!