MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Monitoramento proativo do MongoDB (ângulo do Developer Studio/Advisors)

O ClusterControl possui muitas métricas relacionadas ao banco de dados, replicação e também ao sistema operacional. Você também pode monitorar o processo que é executado dentro do banco de dados por meio do opscounter na Visão geral.

Se você habilitar o monitoramento baseado em agente no ClusterControl, ele instalará automaticamente um banco de dados prometheus para banco de dados de série temporal e também exportador (mongo e exportador de nó) no nó monitorado. Depois de tudo configurado, o Dashboard estará disponível para você com Cluster Overview, System Overview e também métricas MongoDB (MongoDB Server and Replication) que você pode usar para monitorar o banco de dados MongoDB.

Há também um Ops Monitor no ClusterControl que pode ser usado para monitorar sessões dentro do banco de dados.

Além do mencionado acima, o ClusterControl possui recursos para criar Advisors personalizados por meio do Developer Studio. Neste blog, revisaremos o Developer Studio e os Advisors relacionados ao MongoDB.

Utilize o Developer Studio

O ClusterControl fornece o Developer Studio, para que você possa criar Advisors personalizados relacionados ao tópico no MongoDB que deseja ter como aconselhamento com base nas melhores práticas de desempenho do banco de dados. Criar um script para custom advisors no MongoDB requer que você tenha conhecimento na linguagem de programação javascript, pois todos os advisors são escritos em javascript. como mostrado abaixo:

Podemos criar um novo script advisor clicando no botão New, depois disso ele exibirá uma caixa de diálogo para preencher o nome do arquivo conforme mostrado abaixo:

Criaremos um script lock.js simples que será armazenado no caminho s9s/mongodb/connections. O script coleta informações relacionadas ao bloqueio global no MongoDB. O número de bloqueios globais altos será um problema no MongoDB, porque o bloqueio ainda está em espera / ainda não liberado. Abaixo está o exemplo de bloqueio global em 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;
}

Você pode salvar o script, compilar e executar. Você pode agendar o script no Developer Studio com base em cada minuto, hora em que o script será executado.

Consultores

Os Advisors nos dão visibilidade sobre o estado do script que criamos no Developer Studio, o script será executado e verificará regularmente a corrente do bloqueio global. Se o estado estiver abaixo do limite que definimos, a saída fica OK, mas aparecerá avisando se o bloqueio global atual estiver acima do limite. Podemos ver na captura de tela abaixo que o bloqueio global usado aparece nos Advisors e o estado está OK atualmente.

Conclusão

Developer Studio e Advisors podem dar a você o benefício de fazer Advisors personalizados com base em seus requisitos e exibidos no painel ClusterControl e, claro, o alerta também.

Por hoje é só!