Monitoramento do PostgreSQL usando Zabbix

Monitoramento do PostgreSQL usando Zabbix
Apresentação de Daria Vilkova para o Zabbix Meetup Online

Quero apresentá-lo a uma ferramenta de monitoramento do PostgreSQL e do sistema operacional, que está sendo desenvolvida pela nossa empresa utilizando Zabbix.

Escolhemos o Zabbix como nossa ferramenta de monitoramento há muito tempo, pois é uma plataforma de código aberto, suportada por uma comunidade ativa, muito popular na Rússia.

Criamos um agente ativo — Mamonsu, que oferecia um monitoramento mais flexível do que as ferramentas padrão podiam proporcionar na época, e realizava a coleta de métricas e o envio para o Zabbix Server. Em nossa empresa, o Mamonsu é utilizado durante a auditoria.

Mamonsu

Mamonsu é um agente ativo (Zabbix Trapper) para monitoramento do PostgreSQL e do sistema operacional. Mamonsu (escrito em Python) permite a configuração de parâmetros de monitoramento do PostgreSQL e do sistema operacional em cinco minutos.

Mamonsu possui ferramentas adicionais:

  • mamonsu tune — comando que edita os parâmetros de configuração no arquivo de configuração do PostgreSQL para a máquina onde o agente Mamonsu está instalado.
  • mamonsu report — comando que cria respostas sobre o sistema operacional e o PostgreSQL.

Mamonsu é instalado no servidor de SGBD, coleta informações, compõe-as em JSON e as envia para visualização no Zabbix Server, onde deve haver um template para suas métricas.

Monitoramento do PostgreSQL usando Zabbix

Esquema de funcionamento do Mamonsu

Recursos do Mamonsu

  • Trabalho eficiente com o PostgreSQL. A conexão contínua com o PostgreSQL é a principal vantagem do Mamonsu. Neste caso, o número máximo de conexões é igual ao número máximo de bancos de dados aos quais ele se conecta.
  • Escalabilidade. O Mamonsu é um agente completamente "plugável", e, devido à estrutura fixa de cada plugin e à relativa simplicidade do Python, é fácil aprender a escrever novos ou editar plugins padrão, ou seja, parâmetros de coleta de métricas.
  • Ampla cobertura de métricas para monitoramento para PostgreSQL, inclusive métricas de extensões específicas.
  • Inicialização rápida, disponibilidade "pronta para uso".
  • Exportação de templates e arquivos de configuração, assim como upload para o Zabbix Server.
  • Multiplataforma, o que é importante para nossos clientes que utilizam diferentes distribuições Linux, inclusive nacionais.
  • Licença BSD-clause.

Atualmente, oferecemos uma variedade de plugins e em cada versão subsequente nos esforçamos para adicionar algo novo.

  • 14 plugins para PostgreSQL,
  • 8 plugins para o OS Linux,
  • 4 plugins para o OS Windows.

Mamonsu coleta mais de 110 métricas do PostgreSQL e sistemas operacionais:

  • 70 métricas do PostgreSQL,
  • 40 métricas do OS Linux,
  • 8 métricas do OS Windows.

As principais métricas incluem a disponibilidade do SGBD, número de conexões, tamanho do banco de dados, checkpoints, velocidade de leitura/escrita, bloqueios, número de processos de autovacuum e velocidade de geração do WAL. A lista completa de métricas disponíveis, bem como uma descrição detalhada de todas as ferramentas, está disponível em repositório no site do GitHub.

Monitoramento do PostgreSQL usando Zabbix

Lista de métricas disponíveis no site do GitHub

Executando o Mamonsu em 5 minutos

A configuração do monitoramento do PostgreSQL e do sistema operacional com o Mamonsu pode ser realizada em 5 minutos, seguindo 5 passos simples.

  1. Instalação do Mamonsu. O Mamonsu pode ser compilado a partir do código-fonte ou usando os pacotes disponíveis.

$ git clone ... && cd mamonsu && python setup.py

build && python setup.py install

  1. Configuração das conexões. É necessário especificar os parâmetros de conexão com o PostgreSQL e o Zabbix Server no arquivo agent.conf.

/etc/mamonsu/agent.conf

  1. Exportar o template para o Zabbix Server.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Adicionar um nó à rede no Zabbix Server. O template exportado será automaticamente vinculado ao novo nó na rede do Zabbix Server.

$ mamonsu zabbix host create mamonsu-demo

  1. Iniciar.

$ service mamonsu start

Direções de desenvolvimento do Mamonsu

Como parte do desenvolvimento do Mamonsu, planejamos aprimorar métricas e criar novos plugins, como um plugin para monitorar o tamanho de tabelas específicas. Também planejamos melhorar e criar ferramentas adicionais, bem como expandir as capacidades de auto-configuração através do comando mamonsu tune.

Módulo de monitoramento do PostgreSQL dentro do Zabbix Agent 2

Para conectar ao PostgreSQL, usamos um driver rápido e popular pgx (driver PG e toolkit para Go).

Atualmente usamos duas interfaces: Exporter, que chama o manipulador pela chave, e Configurator do Zabbix Agent 2, que lê e verifica os parâmetros de conexão com o servidor, definidos no arquivo de configuração.

Nos esforçamos para otimizar o desempenho do SGBD, agrupando métricas e utilizando um manipulador (handler) para métricas e grupos de métricas, além de usar grupos de métricas em JSON como variáveis dependentes (dependency items) e descoberta de baixo nível (discovery rules).

Principais funcionalidades

  • manutenção de uma conexão constante com o PostgreSQL entre as verificações;
  • suporte a intervalos de sondagem flexíveis;
  • compatibilidade com versões do PostgreSQL a partir da 10 e do Zabbix Server a partir da versão 4.4;
  • a capacidade de conectar e monitorar várias instâncias do PostgreSQL simultaneamente, uma vez que o Zabbix Agent 2 permite a criação de várias sessões.

Níveis de parâmetros de conexão ao PostgreSQL

Estão disponíveis três níveis de parâmetros de conexão ao PostgreSQL, ou seja, tarefas e configurações:

  • Global,
  • Sessions,
  • Macros.

  1. Os parâmetros Global são definidos no nível do agente, enquanto os parâmetros Session e Macros determinam as configurações de conexão ao banco de dados.

  2. Os parâmetros de conexão ao PostgreSQL — Sessions são definidos no arquivo zabbix_agent2.conf.

Monitoramento do PostgreSQL usando Zabbix

Os parâmetros de conexão ao PostgreSQL — Sessions

  • Após a palavra-chave Sessions é indicado um nome de sessão exclusivo, que deve ser especificado na chave (modelo).
  • Parâmetros URI e UserName é obrigatório para cada sessão.
  • Se o nome do banco não for especificado, utiliza-se o nome padrão geral do banco para todas as sessões do PostgreSQL, que também é definido no arquivo de configuração.

  1. Os parâmetros de conexão ao PostgreSQL — Macros são especificados na chave da métrica no modelo (de forma semelhante ao método utilizado no Zabbix Agent 1), ou seja, são criados no modelo e posteriormente especificados como parâmetros na chave. Nesse caso, a sequência dos macros é fixa, ou seja, por exemplo, URI é sempre indicado em primeiro lugar.

Monitoramento do PostgreSQL usando Zabbix

Os parâmetros de conexão ao PostgreSQL — Macros

O módulo de monitoramento do PostgreSQL já inclui mais de 95 métricas, permitindo abranger uma ampla gama de parâmetros do PostgreSQL, incluindo:

  • o número de conexões,
  • o volume de bancos de dados,
  • a arquivamento de arquivos wal,
  • os pontos de verificação,
  • o número de tabelas 'inchadas',
  • o status da replicação,
  • o atraso da réplica.

As métricas do PostgreSQL não são informativas sem os parâmetros do sistema operacional. Mas o Zabbix Agent 2 já consegue coletar parâmetros do sistema operacional, portanto, para obter uma visão completa, basta conectar ao nó de rede os modelos necessários.

Handler

Handler — a unidade principal do módulo, na qual a consulta é executada e que permite obter métricas.

Para obter uma métrica simples:

  1. Criamos um arquivo para obter uma nova métrica:

zabbix/src/go/plugins/postgres/handler_uptime.go

  1. Conectamos o pacote e especificamos a chave única (chaves) das métricas:

Monitoramento do PostgreSQL usando Zabbix

  1. Criamos um handler com a consulta, ou seja, inicializamos uma variável que conterá o resultado:

Monitoramento do PostgreSQL usando Zabbix

  1. Executamos a consulta:

Monitoramento do PostgreSQL usando Zabbix

É necessário verificar a consulta em busca de erros, após o que o resultado será captado pelo processo Zabbix Agent 2.

  1. Registramos a chave da nova métrica:

Monitoramento do PostgreSQL usando Zabbix

Após registrar a métrica, é possível reconfigurar o agente com a nova métrica.

O módulo está disponível a partir do Zabbix 5.0 no site https://www.zabbix.com/download. Nesta versão do Zabbix, os parâmetros são especificados separadamente através de host e port. Na versão Zabbix 5.0.2, que será lançada em breve, os parâmetros de conexão serão agrupados em uma única URI.

Obrigado pela atenção!

Links Úteis

GitHub Mamonsu

Documentação sobre Mamonsu

Zabbix Git

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster