MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Proaktywne monitorowanie MongoDB (kąt programisty/doradców)

ClusterControl posiada wiele metryk związanych z bazą danych, replikacją, a także systemem operacyjnym. Możesz również monitorować proces przebiegający w bazie danych za pomocą licznika operacji w Przeglądzie.

Jeśli włączysz monitorowanie oparte na agentach w ClusterControl, automatycznie zainstaluje on bazę danych prometheus dla bazy danych szeregów czasowych, a także eksportera (zarówno eksportera mongo, jak i eksportera węzłów) na monitorowanym węźle. Po zakończeniu konfiguracji pulpit nawigacyjny będzie dostępny z przeglądem klastra, przeglądem systemu, a także metrykami MongoDB (serwer i replikacja MongoDB), których można użyć do monitorowania bazy danych MongoDB.

W ClusterControl znajduje się również Ops Monitor, który może być używany do monitorowania sesji w bazie danych.

Oprócz powyższego, ClusterControl ma możliwość tworzenia niestandardowych Doradców za pośrednictwem Developer Studio. W tym blogu omówimy Developer Studio i doradców związanych z MongoDB.

Wykorzystaj Studio programistyczne

ClusterControl udostępnia Developer Studio, dzięki czemu możesz tworzyć niestandardowe doradcy związane z tematem w MongoDB, do których chcesz uzyskać porady oparte na najlepszych praktykach dotyczących wydajności bazy danych. Stworzenie skryptu dla niestandardowych doradców w MongoDB wymaga znajomości języka programowania javascript, ponieważ wszyscy doradcy są napisane w javascript. Dostęp do Developer Studio możesz uzyskać poprzez Zarządzaj -> Developer Studio i będziesz mógł zobaczyć stronę jak pokazano poniżej:

Możemy następnie utworzyć nowy skrypt doradcy, klikając przycisk Nowy wyświetli okno dialogowe do wypełnienia nazwy pliku, jak pokazano poniżej:

Utworzymy prosty skrypt lock.js, który będzie przechowywany w ścieżka s9s/mongodb/połączenia. Skrypt zbiera informacje związane z globalną blokadą w MongoDB. Liczba wysokich globalnych blokad będzie problemem w MongoDB, ponieważ blokada jest nadal wstrzymana/jeszcze nie zwolniona. Poniżej znajduje się próbka globalnej blokady w 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;
}

Możesz zapisać skrypt, skompilować i uruchomić. Możesz zaplanować skrypt w Developer Studio na podstawie każdej minuty i godziny działania skryptu.

Doradcy

Doradcy dają nam wgląd w stan skryptu, który stworzyliśmy w Developer Studio, skrypt będzie się uruchamiał i regularnie sprawdzał aktualny stan globalnej blokady. Jeśli stan jest poniżej zdefiniowanego przez nas progu, wyjście staje się OK, ale pojawi się ostrzeżenie, jeśli aktualna globalna blokada jest powyżej progu. Na poniższym zrzucie ekranu widzimy, że użyta blokada globalna pojawia się w doradcach, a stan jest obecnie OK.

Wnioski

Studio programistów i doradcy mogą zapewnić Ci możliwość tworzenia niestandardowych doradców na podstawie Twoich wymagań i wyświetlanych na pulpicie nawigacyjnym ClusterControl, a także oczywiście alertu.

To wszystko na dziś!


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Usuń duplikaty podczas używania $unionWith w MongoDB

  2. kopia mongo z jednej kolekcji do drugiej (na tej samej bazie danych)

  3. Jak działa parametr arrayFilters w MongoDB

  4. MongoDB $binarySize

  5. 2 sposoby na usunięcie bazy danych w MongoDB