ClusterControl má mnoho metrik souvisejících s databází, replikací a také operačním systémem. Proces, který běží uvnitř databáze, můžete také sledovat prostřednictvím opscounter v Přehledu.
Pokud v ClusterControl povolíte Agent Based Monitoring, automaticky se nainstaluje databáze prometheus pro databázi časových řad a také exportér (jak mongo, tak exportér uzlů) na sledovaný uzel. Po nastavení všeho vám bude k dispozici řídicí panel s přehledem clusteru, přehledem systému a také metrikami MongoDB (MongoDB Server and Replication), které můžete použít ke sledování databáze MongoDB.
V ClusterControl je také Ops Monitor, který lze použít ke sledování relací uvnitř databáze.
Kromě výše uvedeného má ClusterControl možnosti vytvářet vlastní poradce prostřednictvím Developer Studio. V tomto blogu se podíváme na Developer Studio a poradce související s MongoDB.
Využijte Developer Studio
ClusterControl poskytuje Developer Studio, takže můžete vytvářet vlastní poradce související s tématem v MongoDB, které chcete mít jako poradce založené na osvědčených postupech výkonu databáze. Vytvoření skriptu pro vlastní poradce v MongoDB vyžaduje znalost programovacího jazyka javascript, protože všichni poradci jsou napsáni v javascriptu. Do Developer Studio se můžete dostat přes Spravovat -> Developer Studio a budete moci zobrazit stránku jak je uvedeno níže:
Můžeme vytvořit nový skript poradce kliknutím na tlačítko Nový, poté zobrazí se dialog pro vyplnění názvu souboru, jak je ukázáno níže:
Vytvoříme jednoduchý skript lock.js, který bude uložen v cesta s9s/mongodb/connections. Skript shromažďuje informace související s globálním zámkem v MongoDB. Počet vysokých globálních zámků bude v MongoDB problémem, protože zámek je stále pozastaven / dosud nebyl uvolněn. Níže je ukázka globálního zámku v javascriptu:
#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;
}
Skript můžete uložit, zkompilovat a spustit. Skript můžete v Developer Studio naplánovat na základě každé minuty a hodiny, kdy se skript spustí.
Poradci
Poradci nám poskytují přehled o stavu skriptu, který jsme vytvořili v Developer Studio, skript se spustí a pravidelně kontroluje aktuální stav globálního zámku. Pokud je stav pod prahovou hodnotou, kterou definujeme, výstup bude v pořádku, ale zobrazí se varování, pokud je aktuální globální zámek nad prahovou hodnotou. Na níže uvedeném snímku obrazovky můžeme vidět, že použitý globální zámek se zobrazuje v Advisors a stav je momentálně OK.
Závěr
Developer Studio a Advisors vám mohou poskytnout výhodu při vytváření vlastních poradců na základě vašich požadavků a zobrazených na řídicím panelu ClusterControl a samozřejmě také upozornění.
To je pro dnešek vše!