Depois de ter sua infraestrutura de banco de dados em funcionamento, você precisará acompanhar o que está acontecendo. O monitoramento é uma obrigação se você quiser ter certeza de que tudo está indo bem ou se precisar mudar alguma coisa.
Para cada tecnologia de banco de dados há várias coisas a serem monitoradas. Alguns deles são específicos do mecanismo de banco de dados ou do fornecedor ou até mesmo da versão específica que você está usando.
Neste blog, veremos o que você precisa monitorar em um ambiente PostgreSQL.
O que monitorar no PostgreSQL
Ao monitorar um cluster ou nó de banco de dados, 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.
Monitoramento do Sistema Operacional
Uma coisa importante (que é comum a todos os mecanismos de banco de dados e até mesmo a todos sistemas) é monitorar o comportamento do sistema operacional. Aqui estão alguns pontos para verificar aqui.
Uso da CPU
A porcentagem excessiva de uso da CPU pode ser um problema se não for um comportamento normal. Nesse caso, é importante identificar os processos/processos que estão gerando esse problema. Se o problema for o processo do banco de dados, você precisará verificar o que está acontecendo dentro do banco de dados.
Memória RAM ou uso SWAP
Se você estiver vendo um valor alto para essa métrica e nada mudou em seu sistema, provavelmente precisará verificar a configuração do banco de dados. Parâmetros como shared_buffers e work_mem podem afetar isso diretamente, pois definem a quantidade de memória a ser usada para o banco de dados PostgreSQL.
Uso do disco
Um aumento anormal no uso de espaço em disco ou um consumo excessivo de acesso ao disco são coisas importantes a serem monitoradas, pois você pode ter um grande número de erros registrados no arquivo de log do PostgreSQL ou uma configuração de cache incorreta que pode gerar um consumo importante de acesso ao disco em vez de usar memória para processar as consultas.
Carregar Média
Está relacionado aos três pontos mencionados acima. Uma média de carga alta pode ser gerada por um uso excessivo de CPU, RAM ou disco.
Rede
Um problema de rede pode afetar todos os sistemas, pois o aplicativo não pode se conectar (ou conectar pacotes perdidos) ao banco de dados, portanto, essa é uma métrica importante para monitorar. Você pode monitorar a latência ou a perda de pacotes, e o principal problema pode ser uma saturação de rede, um problema de hardware ou apenas uma configuração de rede ruim.
Monitoramento de banco de dados PostgreSQL
Monitorar seu banco de dados PostgreSQL não é apenas importante para ver se você está tendo um problema, mas também para saber se você precisa alterar algo para melhorar o desempenho do seu banco de dados, provavelmente um dos mais importantes coisas para monitorar em um banco de dados. Vejamos algumas métricas que são importantes para isso.
Monitoramento de consultas
Por padrão, o PostgreSQL é configurado com compatibilidade e estabilidade em mente, então você precisa conhecer suas consultas e seu padrão, e configurar seus bancos de dados dependendo do tráfego que você possui. Aqui, você pode usar o comando EXPLAIN para verificar o plano de consulta para uma consulta específica e também monitorar a quantidade de SELECT, INSERT, UPDATE ou DELETEs em cada nó. Se você tiver uma consulta longa ou um grande número de consultas em execução ao mesmo tempo, isso pode ser um problema para todos os sistemas.
Monitorando sessões ativas
Você também deve monitorar o número de sessões ativas. Se você estiver perto do limite, você precisa verificar se algo está errado ou se você só precisa incrementar o valor max_connections. A diferença no número pode ser um aumento ou diminuição de conexões. Mau uso do pool de conexões, bloqueio ou problema de rede são os problemas mais comuns relacionados ao número de conexões.
Bloqueios de banco de dados
Se você tiver uma consulta aguardando outra consulta, você precisa verificar se essa outra consulta é um processo normal ou algo novo. Em alguns casos, se alguém estiver fazendo uma atualização em uma tabela grande, por exemplo, essa ação pode estar afetando o comportamento normal do seu banco de dados, gerando um grande número de bloqueios.
Monitorando a replicação
As principais métricas para monitorar a replicação são o atraso e o estado da replicação. Os problemas mais comuns são problemas de rede, problemas de recursos de hardware ou problemas de dimensionamento. Se você estiver enfrentando um problema de replicação, precisará saber disso o mais rápido possível, pois precisará corrigi-lo para garantir o ambiente de alta disponibilidade.
Monitorando backups
Evitar a perda de dados é uma das tarefas básicas do DBA, portanto, você não precisa apenas fazer o backup, mas também saber se o backup foi concluído e se pode ser usado. Normalmente, este último ponto não é levado em consideração, mas é provavelmente a verificação mais importante em um processo de backup.
Monitorando os logs do banco de dados
Você deve monitorar o log do banco de dados em busca de erros como FATAL ou deadlock, ou até mesmo erros comuns como problemas de autenticação ou consultas de longa duração. A maioria dos erros é gravada no arquivo de log com informações úteis detalhadas para corrigi-lo.
Impacto do monitoramento no desempenho do banco de dados PostgreSQL
Embora o monitoramento seja obrigatório, normalmente não é gratuito. Sempre há um custo no desempenho do banco de dados, dependendo de quanto você está monitorando, portanto, evite monitorar coisas que não usará.
Em geral, existem duas maneiras de monitorar seus bancos de dados, a partir dos logs ou do lado do banco de dados por meio de consultas.
No caso de logs, para poder utilizá-los, é necessário ter um alto nível de log, o que gera alto acesso ao disco e pode afetar o desempenho do seu banco de dados.
Para o modo de consulta, cada conexão com o banco de dados usa recursos, portanto, dependendo da atividade do seu banco de dados e dos recursos atribuídos, isso também pode afetar o desempenho.
Ferramentas de monitoramento PostgreSQL
Existem várias opções de ferramentas para monitorar seu banco de dados. Pode ser uma ferramenta interna do PostgreSQL, como extensões, ou alguma ferramenta externa. Vejamos alguns exemplos dessas ferramentas.
Extensões
- Pg_stat_statements :Esta extensão irá ajudá-lo a conhecer o perfil de consulta do seu banco de dados. Ele rastreia todas as consultas que são executadas e armazena muitas informações úteis em uma tabela chamada pg_stat_statements. Ao consultar esta tabela você pode obter quais consultas são executadas no sistema, quantas vezes foram executadas e quanto tempo consumiram, entre outras informações.
- Pgbadger :é um software que faz uma análise dos logs do PostgreSQL e os exibe em um arquivo HTML. Ele ajuda você a entender o comportamento do seu banco de dados e identificar quais consultas precisam ser otimizadas.
- Pgstattuple :pode gerar estatísticas para tabelas e índices, mostrando quanto espaço usado por cada tabela e índice é consumido por tuplas ativas, tuplas excluídas ou quanto espaço não utilizado está disponível em cada relação.
- Pg_buffercache :com isso, você pode verificar o que está acontecendo no cache do buffer compartilhado em tempo real, mostrando quantas páginas estão atualmente no cache.
Ferramentas de monitoramento externo
- ClusterControl :é um sistema de gerenciamento e monitoramento que ajuda a implantar, gerenciar, monitorar e dimensionar seus bancos de dados a partir de uma interface amigável. O ClusterControl tem suporte para as principais tecnologias de banco de dados de código aberto e você pode automatizar muitas das tarefas de banco de dados que precisa executar regularmente, como adicionar e dimensionar novos nós, executar backups e restaurações e muito mais.
- Nagios :É um sistema de código aberto e aplicativo de monitoramento de rede. Ele monitora hosts ou serviços e gerencia alertas para diferentes estados. Com esta ferramenta, você pode monitorar serviços de rede, recursos de host e muito mais. Para monitorar o PostgreSQL, você pode usar algum plugin ou pode criar seu próprio script para verificar seu banco de dados.
- Zabbix :é um software que pode monitorar redes e servidores. Ele usa um mecanismo de notificação flexível que permite aos usuários configurar alertas por e-mail. Também oferece relatórios e visualização de dados com base nos dados armazenados. Todos os relatórios e estatísticas do Zabbix, bem como os parâmetros de configuração, são acessados através de uma interface web.
Painéis
A visibilidade é útil para detecção rápida de problemas. É definitivamente uma tarefa mais demorada ler uma saída de comando do que apenas assistir a um gráfico. Assim, o uso de um dashboard pode ser a diferença entre detectar um problema agora ou nos próximos 15 minutos, com certeza esse tempo pode ser muito importante para a empresa. Para esta tarefa, ferramentas como PMM ou Vividcortex, entre outras, podem ser a chave para dar visibilidade ao seu sistema de monitoramento de banco de dados.
Monitoramento e gerenciamento de Percona (PMM): É uma plataforma de código aberto para gerenciar e monitorar o desempenho do seu banco de dados. Ele fornece uma análise completa baseada em tempo para servidores MySQL, MariaDB, MongoDB e PostgreSQL para garantir que seus dados funcionem da maneira mais eficiente possível.
VividCortex: É uma plataforma hospedada na nuvem que fornece monitoramento profundo do desempenho do banco de dados. Ele oferece visibilidade completa dos principais bancos de dados de código aberto, incluindo MySQL, PostgreSQL, AWS Aurora, MongoDB e Redis.
Alertando
Apenas monitorar um sistema não faz sentido se você não receber uma notificação sobre cada problema. Sem um sistema de alerta, você deve acessar a ferramenta de monitoramento para ver se está tudo bem, e é possível que você esteja tendo um grande problema há muitas horas. Esse trabalho de alerta pode ser feito usando alertas de e-mail, alertas de texto ou outras integrações de ferramentas, como o slack.
É realmente difícil encontrar algumas ferramentas para monitorar todas as métricas necessárias para o PostgreSQL, em geral, você precisará usar mais de uma e até mesmo alguns scripts precisarão ser feitos. Uma maneira de centralizar a tarefa de monitoramento e alerta é usando o ClusterControl, que fornece recursos como gerenciamento de backup, monitoramento e alerta, implantação e dimensionamento, recuperação automática e recursos mais importantes para ajudá-lo a gerenciar seus bancos de dados. Todos esses recursos no mesmo sistema.
Monitorando seu banco de dados PostgreSQL com ClusterControl
ClusterControl permite monitorar seus servidores em tempo real. Possui um conjunto predefinido de dashboards para você analisar algumas das métricas mais comuns.
Permite personalizar os gráficos disponíveis no cluster, e você pode permitir que o monitoramento baseado em agente gere painéis mais detalhados.
Você também pode criar alertas, que informam sobre eventos em seu cluster, ou integrar com diferentes serviços, como PagerDuty ou Slack.
Além disso, você pode verificar a seção do monitor de consulta, onde você pode encontrar o principais consultas, as consultas em execução, as consultas atípicas e as estatísticas das consultas.
Com esses recursos, você pode ver como seu banco de dados PostgreSQL está indo.
Para gerenciamento de backup, o ClusterControl o centraliza para proteger, proteger e recuperar seus dados e, com o recurso de backup de verificação, você pode confirmar se o backup está pronto para uso.
Esta tarefa de backup de verificação restaurará o backup em um host independente separado, portanto você pode ter certeza de que o backup está funcionando.
Monitoramento com a linha de comando ClusterControl
Para scripts e automatização de tarefas, ou mesmo se você preferir apenas a linha de comando, o ClusterControl possui a ferramenta s9s. É uma ferramenta de linha de comando para gerenciar seu cluster de banco de dados.
Lista de cluster
Lista de nós
Você pode executar todas as tarefas (e ainda mais) na interface do usuário do ClusterControl , e você pode integrar esse recurso com algumas ferramentas externas, como o slack, para gerenciá-lo a partir daí.
Conclusão
Neste blog, mencionamos algumas métricas importantes para monitorar em seu ambiente PostgreSQL e algumas ferramentas para facilitar sua vida mantendo seus sistemas sob controle. Você também pode ver como usar o ClusterControl para esta tarefa.
Como você pode ver, o monitoramento é absolutamente necessário, e a melhor forma de fazê-lo depende da infraestrutura e do próprio sistema. Você deve alcançar um equilíbrio entre o que precisa monitorar e como isso afeta o desempenho do banco de dados.