Monitorando PostgreSQL usando Zabbix

Monitorando PostgreSQL usando Zabbix
Relatório de Daria Vilkova para Zabbix Meetup Online

Quero apresentar a vocês a ferramenta de monitoramento do PostgreSQL e do sistema operacional, que está sendo desenvolvida pela nossa empresa utilizando o Zabbix.

Há muito tempo escolhemos o Zabbix como nossa ferramenta de monitoramento porque é uma plataforma de código aberto suportada por uma comunidade ativa que é muito popular na Rússia.

Criamos um agente ativo - Mamonsu, que fornecia um monitoramento mais flexível do que as ferramentas padrão da época permitiam, e garantimos a coleta de métricas e seu envio para o Zabbix Server. Em nossa empresa, o Mamonsu é utilizado na auditoria.

Mamonsu

Mamonsu é um agente ativo (Zabbix Trapper) para monitoramento do PostgreSQL e do sistema operacional. Mamonsu (escrito em Python) permite que você defina as configurações de monitoramento do PostgreSQL e do sistema operacional em cinco minutos.

Mamonsu possui ferramentas adicionais:

  • mamonsu tune é um comando que edita as configurações no arquivo de configuração do PostgreSQL para a máquina na qual o agente Mamonsu está instalado.
  • mamonsu report é um comando que gera respostas sobre o sistema operacional e o PostgreSQL.

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

Monitorando PostgreSQL usando Zabbix

esquema de trabalho Mamonsu

Características Mamonsu

  • Trabalho eficiente com PostgreSQL. Uma conexão persistente com o PostgreSQL é a principal vantagem do Mamonsu. Nesse caso, o número máximo de conexões é igual ao número máximo de bancos de dados aos quais ele se conecta.
  • Expansibilidade. Mamonsu é um agente totalmente "plugin" e, devido à estrutura fixa de cada plug-in e à relativa simplicidade do Python, pode-se aprender facilmente como escrever novos ou editar plug-ins padrão, ou seja, parâmetros de coleta de métricas.
  • Ampla cobertura de métricas de monitoramento para PotgreSQL, incluindo métricas específicas de extensão.
  • inicialização rápida, disponibilidade fora da caixa.
  • Carregar modelos e arquivos de configuração, bem como o upload para o Zabbix Server.
  • Plataforma cruzada, o que é importante para nossos clientes que utilizam diversas distribuições Linux, inclusive domésticas.
  • Licença de cláusula BSD.

No momento oferecemos muitos plugins e em cada próxima versão tentamos adicionar algo novo.

  • 14 plugins para PostgreSQL,
  • 8 plugins para SO Linux,
  • 4 plug-ins para sistema operacional Windows.

Mamonsu coleta mais de 110 PostgreSQL e métricas de sistema operacional:

  • 70 métricas do PostgreSQL,
  • 40 métricas do sistema operacional Linux,
  • 8 Métricas do sistema operacional Windows.

As principais métricas incluem disponibilidade de DBMS, número de conexões, tamanho do banco de dados, pontos de verificação, velocidade de leitura/gravação, bloqueios, número de processos de autovácuo e velocidade de geração de WAL. Uma lista completa de métricas disponíveis, bem como uma descrição detalhada de todas as ferramentas, está disponível em repositórios no site do GitHub.

Monitorando PostgreSQL usando Zabbix

Lista de métricas disponíveis no GitHub

Execute o Mamonsu em 5 minutos

Para configurar o monitoramento do PostgreSQL e do sistema operacional usando o Mamonsu, você pode fazer isso em 5 minutos seguindo 5 passos simples.

  1. Instalando o Mamonsu. O Mamonsu pode ser construído a partir do código-fonte ou usar pacotes disponíveis.

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

build && python setup.py install

  1. Configuração de conexão. É necessário definir os parâmetros de conexão para PostgreSQL e Zabbix Server no arquivo agent.conf.

/etc/mamonsu/agent.conf

  1. Exportar modelo para Zabbix Server.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Adicionando um host ao Zabbix Server. O modelo exportado será conectado automaticamente ao novo host no Zabbix Server.

$ mamonsu zabbix host create mamonsu-demo

  1. Lançar.

$ service mamonsu start

Direções de desenvolvimento do Mamonsu

Como parte do desenvolvimento do Mamonsu, planejamos refinar as métricas e criar novos plugins, como um plugin para monitorar o tamanho de tabelas individuais. Também planejamos melhorar e criar ferramentas adicionais, bem como expandir os recursos de autoajuste por meio do comando melodia mamonsu.

Módulo de monitoramento PostgreSQL como parte do Zabbix Agent 2

Um driver rápido e popular é usado para se conectar ao PostgreSQL pgx (driver PG e kit de ferramentas para Go).

Até o momento, estamos utilizando duas interfaces: Exporter, que chama o handler por chave, e Configurator Zabbix Agent 2, que lê e verifica os parâmetros de conexão com o servidor especificado no arquivo de configuração.

Procuramos otimizar o trabalho do SGBD agrupando métricas e utilizando um handler (handler) para métricas e grupos de métricas, além de utilizar grupos de métricas em JSON como variáveis ​​dependentes (itens de dependência), e descoberta de baixo nível (regras de descoberta ).

Principais recursos

  • manter uma conexão persistente com o PostgreSQL entre as verificações;
  • suporte para intervalos de pesquisa flexíveis;
  • compatibilidade com versões PostgreSQL a partir da 10 e Zabbix Server a partir da versão 4.4;
  • a capacidade de conectar e monitorar várias instâncias do PostgreSQL ao mesmo tempo devido ao fato de que o Zabbix Agent 2 permite criar várias sessões.

Níveis de Parâmetros de Conexão do PostgreSQL

No total, existem três níveis de parâmetros de conexão do PostgreSQL, ou seja, tarefas e configurações:

  • No geral,
  • Sessões,
  • macros.

  1. Os parâmetros globais são definidos no nível do agente, os parâmetros de sessão e macros definem os parâmetros de conexão do banco de dados.

  2. Parâmetros de conexão para PostgreSQL - As sessões são definidas no arquivo zabbix_agent2.conf.

Monitorando PostgreSQL usando Zabbix

Opções de Conexão do PostgreSQL - Sessões

  • Depois da palavra-chave Sessões um nome de sessão exclusivo é especificado, que deve ser especificado na chave (modelo).
  • Parâmetros URI и UserName necessário para cada sessão.
  • Se o nome de base não for especificado, será usado o nome de base comum padrão para todas as sessões do PostgreSQL, que também é definido no arquivo de configuração.

  1. Parâmetros de conexão ao PostgreSQL - As macros são definidas na chave métrica no template (semelhante ao método usado no Zabbix Agent 1), ou seja, são criadas no template e depois especificadas como parâmetros na chave. Nesse caso, a sequência de macros é fixa, ou seja, por exemplo, URI sempre listados primeiro.

Monitorando PostgreSQL usando Zabbix

Parâmetros de conexão do PostgreSQL - Macros

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

  • número de conexões
  • tamanho do banco de dados,
  • arquivando arquivos wal,
  • postos de controle,
  • o número de tabelas "inchadas",
  • estado de replicaçã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á sabe como coletar os parâmetros do sistema operacional, portanto, para obter a imagem completa, basta conectar os modelos necessários ao host.

Manipulador

O handler é a unidade principal do módulo em que a própria requisição é executada e que permite receber métricas.

Para obter uma métrica simples:

  1. Crie 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:

Monitorando PostgreSQL usando Zabbix

  1. Criamos um handler (handler) com uma requisição, ou seja, iniciamos uma variável que conterá o resultado:

Monitorando PostgreSQL usando Zabbix

  1. Executamos o pedido:

Monitorando PostgreSQL usando Zabbix

É necessário verificar se há erros na solicitação, após o que o resultado será coletado pelo processo Zabbix Agent 2.

  1. Registre a nova chave de métrica:

Monitorando PostgreSQL usando Zabbix

Depois de registrar a métrica, você pode reconstruir 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 configurados separadamente via host e porta. No Zabbix 5.0.2, que será lançado em breve, os parâmetros de conexão serão empacotados em uma única URI.

Obrigado!

Links úteis

GitHub MamonsuName

Documentação do Mamonsu

Zabbix GitGenericName

Fonte: habr.com

Adicionar um comentário