Monitoramento e alerta do banco de dados é uma parte particularmente importante das operações do banco de dados, pois devemos entender o estado atual do banco de dados. Se você não tiver um bom monitoramento de banco de dados, não poderá encontrar problemas no banco de dados rapidamente. Isso pode resultar em tempo de inatividade.
Uma ferramenta disponível para monitoramento é o pgDash, um aplicativo SaaS para monitoramento e alerta do banco de dados PostgreSQL.
Procedimento de instalação do pgDash
O registro para pgDash pode ser feito através do site ou também pode ser baixado (auto-hospedado) conforme fornecido pelo RapidLoop.
O processo de instalação do pgDash é simples, basta baixar o pacote necessário do pgDash para ser configurado no lado do servidor host/banco de dados.
Você pode executar o processo da seguinte forma:
[[email protected] ~]$ curl -O -L https://github.com/rapidloop/pgmetrics/releases/download/v1.9.0/pgmetrics_1.9.0_linux_amd64.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 647 100 647 0 0 965 0 --:--:-- --:--:-- --:--:-- 964
100 3576k 100 3576k 0 0 189k 0 0:00:18 0:00:18 --:--:-- 345k
[[email protected] ~]$ tar xvf pgmetrics_1.9.0_linux_amd64.tar.gz
pgmetrics_1.9.0_linux_amd64/LICENSE
pgmetrics_1.9.0_linux_amd64/README.md
pgmetrics_1.9.0_linux_amd64/pgmetrics
[[email protected] ~]$ curl -O -L https://github.com/rapidloop/pgdash/releases/download/v1.5.1/pgdash_1.5.1_linux_amd64.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 644 100 644 0 0 1370 0 --:--:-- --:--:-- --:--:-- 1367
100 2314k 100 2314k 0 0 361k 0 0:00:06 0:00:06 --:--:-- 560k
[[email protected] ~]$ tar xvf pgdash_1.5.1_linux_amd64.tar.gz
pgdash_1.5.1_linux_amd64/LICENSE
pgdash_1.5.1_linux_amd64/README.md
pgdash_1.5.1_linux_amd64/pgdash
[[email protected] ~]$ ./pgmetrics_1.9.0_linux_amd64/pgmetrics --no-password -f json ccdb | ./pgdash_1.5.1_linux_amd64/pgdash -a NrxaHk3JH2ztLI06qQlA4o report myserver1
Além do pgDash, você precisará instalar outro pacote, pgmetrics, para monitoramento. O pgmetrics é um utilitário de código aberto cujo trabalho é coletar informações e estatísticas no banco de dados necessárias ao pgDash, enquanto o trabalho do pgdash é enviar essas informações para o painel.
Se você deseja adicionar mais bancos de dados à plataforma de monitoramento, você precisa para repetir o processo acima para cada banco de dados.
Embora a instalação do pgDash seja simples, existem processos repetitivos que podem se tornar uma preocupação se houver bancos de dados adicionais que precisem ser monitorados. Você provavelmente precisará fazer um script de automação para isso.
pgDash Métricas
Existem 3 recursos principais no painel pgDash, são eles:
- Painel :consiste em submenus como:Visão geral, Banco de dados, Consultas, Backend, Bloqueios, Tablespace, Replicação, Arquivos WAL, Gravadores BG, Vácuo, Funções, Configuração.
- Ferramentas :consiste em submenus, como Index Management, Tablespace Management, Diagnostics e Top-K.
- Alertas :consistem em submenus, como Alertas e Alertas de alteração.
Monitoramento do PostgreSQL pelo ClusterControl
O monitoramento realizado pelo ClusterControl usa o método ssh e a conexão direta do nó do controlador ao nó do banco de dados de destino na coleta de informações necessárias para serem exibidas no painel.
O ClusterControl também possui um recurso de monitoramento baseado em agente que pode ser facilmente ativado. Você pode ver abaixo...
ClusterControl realizará o processo de instalação do prometheus, exportadores de nós e PostgreSQL exportadores, no banco de dados direcionado que visa reunir e coletar as informações exigidas pelo painel para exibir as métricas.
Se o monitoramento baseado em agente estiver ativo, qualquer novo banco de dados de destino será adicionado e monitorado automaticamente pelo monitoramento baseado em agente.
Painéis de controle de cluster
Aqui você pode ver informações nas telas PostgreSQL Cluster Overview e System Information. Nesta função você pode ver informações detalhadas como versão do banco de dados, ID da transação, Último Checkpoint e Data e Hora em que o servidor está ativo. Essas informações estão descritas abaixo:
Na página System Information, podemos obter informações como Load Average, Uso de Memória, Troca de Uso, veja a imagem abaixo:
- Banco de dados :você pode obter as informações como nome do banco de dados, tamanho do banco de dados, número de tabelas, índice e também espaço de tabela.
- Consultas :você pode monitorar Chamadas, Gravação de Disco, Leitura de Disco, Buffer Hit de consultas. Além disso, você pode pesquisar qualquer consulta executada em um período de tempo específico.
- Back-end :você pode monitorar o estado atual do backend do banco de dados, dentro dessas informações, detalhes críticos são fornecidos, como backends aguardando os bloqueios, outros backends em espera, transação aberta por muito tempo, backend inativo na transação. Você também pode ver todos os back-ends executados no banco de dados.
- Bloqueios :você pode verificar o número total de bloqueios, bloqueios não concedidos e consultas bloqueadas.
- Espaço de tabela :fornece informações relacionadas ao tablespace, ou seja. tamanho do tablespace, uso de disco e inodes.
- Replicações :você pode monitorar seu status de replicação no banco de dados PostgreSQL, a partir do slot de replicação, replicação de entrada, replicação de saída, publicações de replicação e assinaturas de replicação.
- Arquivos Wal :fornece informações relacionadas ao WAL (Write Ahead Log) e também estatísticas, por exemplo: Contagens de arquivos WAL, Taxa de geração WAL, Arquivos WAL gerados a cada hora.
- Escritores de BG :fornece informações relacionadas ao banco de dados de checkpoint, buffer gravado e parâmetros relacionados ao Background Writer.
- Progresso do vácuo :contém informações relacionadas ao Vacuum que roda no banco de dados, também parâmetros do vácuo.
- Funções :contém informações relacionadas às funções que existem no banco de dados, incluindo privilégios.
- Configuração :contém parâmetros no banco de dados PostgreSQL.
Dentro de Ferramentas, existem submenus, como Gerenciamento de Índices, que fornecem informações, ou seja. Índice não utilizado, índice de inchaço e índice com baixa taxa de acerto de cache. O Tablespace Management fornece informações relacionadas ao Tablespace e outros objetos disponíveis.
Diagnóstico, para entender os possíveis problemas que podem ocorrer nas 10 principais tabelas mais inchadas, nos 10 principais índices mais inchados, na lista de slots de replicação inativos, nas 10 principais transações em execução mais longas etc.
O ClusterControl tem várias métricas em um menu separado, que são Visão geral, Nós, Painel, Monitor de consultas e Desempenho, veja a imagem abaixo:
Quando o monitoramento baseado em agente está habilitado, portanto, todas as informações relacionadas às estatísticas e outras informações relacionadas ao banco de dados serão armazenadas em um banco de dados de séries temporais (prometheus). Você pode ver essas informações no ClusterControl conforme ilustrado abaixo:
No Query Monitor, você pode encontrar Top Queries, Running Queries, Query Outliers ou menus de Estatísticas de Consulta. Eles fornecem informações relacionadas à consulta em execução, consulta superior e estatísticas do banco de dados. Você também pode configurar consultas lentas e consultas sem indexação.
Em Performance, existem submenus como DB Growth que podem mostrar informações de estatísticas de banco de dados e tamanho de tabela. O Schema Analyzer fornece informações relacionadas ao Índice Redundante e Tabela sem chave primária.
Alerta PostgreSQL
Há duas partes do alerta...
- Regras de alerta :as regras de alerta desempenham um papel importante, você pode definir limites como parâmetros que podem acionar o alarme para o DBA.
- Integração de terceiros :é um canal de integração à plataforma de gerenciamento de incidentes para comunicação e colaboração como:PagerDuty, OpsGenie, Slack ou via Email.
O PgDash possui muitas opções de parâmetros de banco de dados que você pode definir relacionados à regra de alerta, divididos em várias camadas começando por Servidor, Banco de Dados, Tabela, Índice, Tablespace e Consulta. Você pode ver essas informações no pgDash conforme descrito abaixo...
Quanto ao canal de integração de terceiros, o pgDash tem suporte para vários canais, como como Slack, Pagerduty, VictorOps, Xmatters, e-mail ou fazer seus próprios webhooks para que possam ser consumidos por outros serviços.
A seguir está a aparência da integração de terceiros do pgDash :
Ao contrário do pgDash, o ClusterControl tem uma opção de alerta de evento mais ampla e geral , começando com alertas relacionados ao host, rede, cluster e ao próprio banco de dados. A seguir estão exemplos de opções de eventos que podem ser selecionadas:
ClusterControl pode selecionar vários clusters de banco de dados em um alerta de evento. A integração de terceiros do ClusterControl suporta várias ferramentas de gerenciamento de incidentes e comunicação/colaboração, como PagerDuty, VictorOps, Telegram, OpsGenie, Slack, ServiceNow, ou pode criar seu próprio webhook.
Na seção de regras de alerta, tanto o pgDash quanto o ClusterControl têm vantagens e desvantagens. A vantagem do pgDash é que você pode definir alertas de banco de dados muito detalhados relacionados ao que será enviado, enquanto a desvantagem é que você precisa fazer essas configurações em cada banco de dados (embora haja um recurso para importar de outras configurações de banco de dados.
O ClusterControl não possui alertas de eventos detalhados, apenas eventos gerais do banco de dados, mas o ClusterControl pode enviar alertas não apenas relacionados ao banco de dados, mas pode enviar alertas de eventos de nós, clusters, redes, etc. Além disso, você pode definir esses alertas para vários clusters de banco de dados.
Na seção Integração de terceiros, o pgDash e o ClusterControl têm suporte para vários canais de comunicação e gerenciamento de incidentes de terceiros. De fato, ambos podem fazer seu próprio webhook para que possa ser consumido por outros serviços (por exemplo, Grafana).