O desempenho em nosso banco de dados MariaDB é uma das áreas que queremos monitorar e observar de perto em um ambiente de produção e sua condição de execução oportuna. Pode ser extremamente exigente em termos de tempo, trabalho e dinheiro se a configuração arquitetônica usar uma nuvem híbrida. Além disso, existem certas áreas a serem observadas, especialmente o intermediário de rede que serve sua conectividade como uma nuvem local ou privada que se comunica com a nuvem pública (GCP, AWS, Azure etc.) e vice-versa .
Este blog trata do monitoramento do desempenho de seus bancos de dados MariaDB em uma infraestrutura de nuvem híbrida. Forneceremos os principais indicadores básicos e mais importantes ao monitorar o desempenho do banco de dados MariaDB em uma configuração de nuvem híbrida.
Por que você precisa do monitoramento de desempenho?
Em uma nuvem híbrida, pode ser complicado monitorar cada serviço disponível. Ao contrário de seu próprio data center ou de sua nuvem privada, você tem controle total sobre a infraestrutura de hardware e software. Com a nuvem pública, há limitações nos serviços que você ofereceu e pode incorrer em um custo adicional se você quiser serviços diferentes que forneçam métricas e logs. A segurança também é uma preocupação em relação aos seus dados confidenciais que estão sendo coletados.
O Monitoramento de Desempenho ajuda a determinar a eficiência e a rapidez com que seus bancos de dados estão sendo executados na nuvem, no local ou na nuvem privada ou pública. Na prática, um conjunto de processos e ferramentas testados e baseados em resultados que fornecerão métricas periódicas ou em tempo real.
Em uma nuvem híbrida, nem todas as ferramentas de monitoramento de software são criadas para gerenciar as principais métricas que precisam ser observadas e monitoradas. Você deve ter a ideia e o conhecimento para determinar as métricas e os requisitos necessários que a ferramenta pode fornecer. Com uma nuvem híbrida, espera-se que a natureza do funcionamento de uma nuvem híbrida possa ser complexa. Os serviços são altamente distribuídos e misturados com outros serviços que não estão vinculados apenas a um provedor.
Nesse sentido, seu software de monitoramento possui essas especialidades e também tem a capacidade de identificar e desacoplar de qual nuvem ele pertence. Um software ou ferramentas de monitoramento devem ter a capacidade de resolver gargalos, problemas de segurança, latências, fornecer escalabilidade, notificar problemas contínuos e fornecer previsões. A previsão pode evitar consequências adicionais que podem levar a um desastre ou afetar a eficiência de seus bancos de dados MariaDB. Isso ajuda toda a equipe, incluindo engenheiros de infraestrutura, engenheiros de banco de dados, administradores de servidor e desenvolvedores, a garantir que os servidores de banco de dados estejam íntegros e funcionando em seu nível de expectativas.
Aspectos a serem considerados para monitoramento de banco de dados
Ao monitorar seu cluster de banco de dados MariaDB (replicação ou Galera) ou nó, há duas coisas principais a serem consideradas:o sistema operacional e o próprio banco de dados. Você precisará definir quais métricas você vai monitorar de ambos os lados e como você vai fazer isso. Você precisa monitorar a métrica sempre no contexto do seu sistema e deve procurar alterações no padrão de comportamento.
Na maioria dos casos, você precisará usar várias ferramentas (pois é quase impossível encontrar uma que cubra todas as métricas desejadas).
Lembre-se de que quando uma de suas métricas é afetada, ela também pode afetar outras, tornando a solução do problema mais complexa. Ter um bom sistema de monitoramento e alerta é importante para tornar essa tarefa o mais simples possível.
Sempre monitore a atividade do servidor (rede, disco, carga, memória e CPU)
Monitorar a atividade do servidor também pode ser uma tarefa complexa se você tiver uma pilha muito complicada que está entrelaçada na arquitetura do banco de dados. No entanto, para um banco de dados MariaDB, é sempre melhor ter seus nós sempre configurados como um servidor dedicado para obter uma introspecção completa por base de nó. Embora isso não o limite de usar todos os recursos sobressalentes, abaixo estão as áreas-chave comuns que você deve analisar.
Rede
Em uma infraestrutura de nuvem híbrida, é uma das preocupações mais importantes a serem observadas, pois você deve levar em consideração o tipo de design e como ele se comunica da nuvem local ou privada para a nuvem pública e vice versa. De qualquer forma, você tem um dos clusters ou nós especializados em sua função como primário para receber gravações ou como recuperação de desastres. A esse respeito, você não deseja que seus nós de recuperação tenham latências, pior, obtém grandes atrasos de replicação. Sempre que houver atrasos e quando o cluster primário de uma nuvem específica (digamos, seu local) ficar inativo, sua nuvem pública precisa assumir o controle, mas poderá fornecer os dados mais atualizados. Sempre que isso acontecer, talvez seja necessário adicionar um mecanismo de pré-failover que cuidará de backups incrementais ou PITR caso algumas transações ou gravações ainda não tenham sido aplicadas em seu cluster de recuperação (ou neste caso, seu cluster de nuvem pública).
Se você estiver usando o Galera, já que o MariaDB atualizou seu Galera para a versão 4, a replicação de streaming é adicionada como um dos principais recursos e alterações da versão anterior. Como a replicação de streaming resolve as desvantagens que tinha nas versões anteriores, mas permite gerenciar mais de 2 GB de conjuntos de gravação desde o Galera Cluster 4. Isso permite que grandes transações sejam fragmentadas e é altamente recomendável habilitá-lo apenas durante o nível de sessão. Isso significa que monitorar sua atividade de rede é muito importante e crucial para a atividade normal do seu cluster MariaDB. Isso ajudará você a identificar qual nó teve o maior ou o maior tráfego de rede com base no período de tempo.
Um bom exemplo de renderização de monitoramento de rede é usar o ClusterControl. Ele identifica cada um dos nós e fornece uma visão geral de sua atividade de rede por nó, independentemente de qual nuvem o nó está localizado. Veja a captura de tela abaixo:
CPU, memória e atividade de carga
Deixe-me colocar brevemente essas três áreas a serem observadas durante o monitoramento. Nesta seção, é sempre melhor que você tenha uma melhor observabilidade das seguintes áreas de uma só vez. É rápido e fácil de entender e ajuda a descartar um gargalo de desempenho ou identificar bugs que fazem com que seus nós parem ou afetem os outros nós ou até mesmo tendo a possibilidade de um cluster ficar inativo.
Então, como CPU, memória e atividade de carga durante o monitoramento ajudam seu MariaDB? Bem, como mencionei acima, essas são uma das poucas coisas ainda um grande fator para verificações de rotina diária. Agora, isso também ajuda a identificar se são ocorrências periódicas ou aleatórias. Se periódico, pode estar relacionado a backups executados em um de seus nós de banco de dados MariaDB ou é uma consulta enorme que requer otimização. Por exemplo, consultas inválidas sem índices adequados ou uso desequilibrado de recuperação de dados, como fazer uma comparação de string para uma string tão grande. Isso pode ser inegavelmente inaplicável para bancos de dados do tipo OLTP, especialmente se for realmente a natureza e os requisitos do seu aplicativo. Melhor usar outras ferramentas analíticas, como MariaDB Columnstore, ou outras ferramentas de processamento analítico de terceiros (Apache Spark, Kafka ou MongoDB, etc.) para recuperação de dados de strings grandes e/ou correspondência de strings.
Então, com todas essas áreas-chave sendo monitoradas, a questão é:como isso deve ser monitorado? Tem que ser monitorado pelo menos por minuto. Com monitoramento refinado, ou seja, por segundo de métricas coletivas pode ser intensivo em recursos e muito ganancioso em termos de seus recursos. Embora meio minuto de coletividade seja aceitável, especialmente se seus dados e RPO (objetivo de ponto de recuperação) forem muito baixos, você precisa de métricas de dados mais granulares e em tempo real. É muito importante que você seja capaz de supervisionar toda a imagem do cluster de banco de dados. Além disso, também é melhor e importante que, sempre que as métricas que você estiver monitorando, você tenha a ferramenta certa para chamar sua atenção quando as coisas estiverem em perigo ou mesmo apenas avisos. O uso da ferramenta adequada, como o ClusterControl, ajuda a gerenciar essas áreas-chave a serem monitoradas. Estou usando uma versão gratuita ou edição da comunidade do ClusterControl que me ajuda a monitorar meus nós sem problemas desde a instalação até o monitoramento de nós com apenas alguns cliques. Por exemplo, veja as capturas de tela abaixo:
Também fornece uma base por nó com uma visão geral simples do gráfico,
ou com um modelo de dados mais poderoso e rico que também suporta linguagem de consulta usando o Prometheus, pode fornecer uma análise de como seu banco de dados MariaDB funciona com base em dados históricos comparando seu desempenho em tempo hábil. Por exemplo,
Isso apenas fornece métricas mais visíveis. Assim você vê o quão importante é realmente ter a ferramenta certa ao monitorar seu banco de dados MariaDB em uma Nuvem Híbrida.
Monitoramento coletivo de suas variáveis estatísticas do MariaDB
De tempos em tempos, não pode ser inevitável que as versões do banco de dados MariaDB produzam novas estatísticas para monitorar ou aprimorar a natureza do monitoramento do banco de dados, fornecendo mais variáveis de status e valores refinados a serem observados.
Bytes enviados/recebidos
Os bytes enviados ou recebidos se correlacionam com a atividade de rede e são uma das principais áreas a serem observadas lado a lado, especialmente em uma topologia de nuvem híbrida. Isso permite determinar qual nó é o mais afetado ou atribuído aos problemas de desempenho que estão sofrendo em seu banco de dados MariaDB. É muito importante, pois você pode verificar se pode haver alguma degradação em termos de hardware, como seu dispositivo de rede ou o dispositivo de armazenamento subjacente, para o qual a sincronização de páginas sujas pode levar muito tempo para ser feita.
Veja a captura de tela de exemplo,
Carregamento de cluster
Essa é mais a atividade do banco de dados de quantas alterações ou recuperação de dados foram consultadas ou feitas desde o tempo de atividade do servidor. Ele ajuda a descartar quais tipos de consultas estão afetando principalmente o desempenho do cluster de banco de dados. Isso permite que você forneça espaço para melhorias, especialmente no balanceamento da carga de suas solicitações de banco de dados.
Dessa forma, existem muitas variáveis a serem observadas em um servidor de banco de dados MariaDB. A coisa mais importante aqui que você deve levar em consideração é a ferramenta que você está usando para monitorar seu cluster de banco de dados. Com o ClusterControl (Community Edition), ele me oferece mais formas de flexibilidade para olhar em um banco de dados MariaDB. Veja o exemplo abaixo,
Então você também pode selecionar no menu suspenso as outras variáveis a serem observadas,
Isso é muito útil e ajuda a determinar, por exemplo, em uma topologia de replicação em uma nuvem híbrida. Você pode obter uma visão geral rápida de qual é o estado e o desempenho relacionado à rede, mas também com outros indicadores de variáveis a serem considerados e verificar quais são os gargalos que afetariam o desempenho do MariaDB em uma topologia de nuvem híbrida. Você pode determinar se seu aplicativo é ganancioso com gravações, então a replicação e a transferência de rede são afetadas, você pode obter a interatividade do cluster em duas ou mais infraestruturas de nuvem. É melhor determinar quão bem seus nós podem lidar com o estresse. Especialmente durante o teste de estresse antes de enviar alterações específicas em seu aplicativo, é sempre melhor tentar e testar para determinar o gerenciamento de capacidade de seu produto de aplicativo e determinar se seus nós e design de banco de dados atuais podem lidar com a carga de seus requisitos de aplicativo.
Para obter métricas de dados mais granulares e ricas, você pode obter mais dados usando o monitoramento baseado em agente. Ver abaixo,
É assim que você deve abordar o monitoramento do seu Cluster MariaDB. Uma visualização perfeita é sempre mais fácil e rápida de gerenciar. Quando as coisas dão errado, você não pode perder sua produtividade e também o tempo de inatividade pode afetar seus negócios. Embora ter uma versão gratuita não lhe dê o luxo e conforto ao gerenciar bancos de dados de alto tráfego; ter alarmes, notificações e gerenciamento de banco de dados em uma área é um complemento fácil de usar que o ClusterControl pode fazer.
Conclusão
Monitorar seus servidores de banco de dados MariaDB em um ambiente de nuvem híbrida não é fácil e também é complicado, especialmente quando há vários serviços e relacionamentos complexos que formulam toda a pilha de sua tecnologia. Usar as ferramentas certas para monitoramento ajuda você a gerenciar seu aplicativo de forma eficaz e melhorar a produtividade ao mesmo tempo. Além disso, com as ferramentas de monitoramento certas em mãos, você terá mais tempo para se concentrar na melhoria de seus aplicativos junto com outros processos de negócios.