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.
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
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.
- 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
- 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
- Exportar modelo para Zabbix Server.
$ mamonsu zabbix template export
/usr/share/mamonsu/example.xml
- Adicionando um host ao Zabbix Server. O modelo exportado será conectado automaticamente ao novo host no Zabbix Server.
$ mamonsu zabbix host create mamonsu-demo
- 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
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.
-
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.
-
Parâmetros de conexão para PostgreSQL - As sessões são definidas no arquivo zabbix_agent2.conf.
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.
- 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.
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:
- Crie um arquivo para obter uma nova métrica:
zabbix/src/go/plugins/postgres/handler_uptime.go
- Conectamos o pacote e especificamos a chave única (chaves) das métricas:
- Criamos um handler (handler) com uma requisição, ou seja, iniciamos uma variável que conterá o resultado:
- Executamos o pedido:
É necessário verificar se há erros na solicitação, após o que o resultado será coletado pelo processo Zabbix Agent 2.
- Registre a nova chave de métrica:
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
Obrigado!
Links úteis
Fonte: habr.com