A New Relic integração PostgreSQL no host recebe e envia métricas de inventário da sua instância PostgreSQL para a New Relic plataforma, onde você pode agregar e visualizar as principais métricas de desempenho. Dados de instância, banco de dados e cluster ajudam a encontrar a origem dos problemas.
Para instalar a integração de monitoramento do PostgreSQL, você deve executar as seguintes etapas:
Se o PostgreSQL não estiver em execução no Kubernetes ou Amazon ECS, você poderá instalar o agente de infraestrutura em um host do sistema operacional Linux ou Windows ou em um host capaz de acessar remotamente onde o PostgreSQL está instalado. De outra forma:
Se estiver executando
Se estiver executando
Instale e ative a integração
Para instalar a integração do PostgreSQL, siga as instruções do seu ambiente.
Para ativar a análise e o encaminhamento automáticos do Postgresql, copie ou renomeie o arquivo postgresql-log.yml.example para postgresql-log.yml. Você não precisa reiniciar o agente, mas pode ser necessário atualizar o arquivo YML com a localização do seu arquivo de log postgresql, se não estiver usando os locais padrão.
Existem diversas maneiras de configurar a integração, dependendo de como você a instalou:
Se habilitado através
Se habilitado através
Se instalado no host, edite a configuração no arquivo de configuração YAML da integração, postgresql-config.yml. A configuração no formato YAML de uma integração é onde você pode colocar as credenciais de login necessárias e configurar como os dados são coletados. Quais opções você altera dependem de sua configuração e preferência. O arquivo de configuração possui configurações comuns aplicáveis a toda integração, como interval, timeout, inventory_source. Para ler tudo sobre essas configurações comuns, consulte nosso documento Formato de configuração .
Importante
Se você ainda estiver usando nossos arquivos de configuração ou definição de legado, verifique o formato de configuração padrão.
Configurações específicas relacionadas ao PostgreSQL são definidas usando a seção env do arquivo de configuração. Essas configurações controlam a conexão com sua instância do PostgreSQL, bem como outras configurações e recursos de segurança. A lista de configurações válidas é descrita na próxima seção deste documento.
Usuário e permissões do PostgreSQL
Crie um usuário com SELECT permissões em:
pg_stat_database
pg_stat_database_conflicts
pg_stat_bgwriter
Para criar o usuário para a integração PostgreSQL:
CREATEUSER new_relic WITH PASSWORD MY_PASSWORD;
GRANTSELECTON pg_stat_database TO new_relic;
GRANTSELECTON pg_stat_database_conflicts TO new_relic;
GRANTSELECTON pg_stat_bgwriter TO new_relic;
Isto permitirá à integração reunir métricas globais relacionadas com a instância PostgreSQL.
Se você também deseja obter métricas relacionadas a tabelas e índices (por exemplo, tamanho da tabela e tamanho do índice), o papel PostgreSQL usado pela integração (new_relic) também precisa de permissões SELECT nas tabelas das quais irá coletar métricas de. Por exemplo, para permitir que a integração recolha métricas de todas as tabelas e índices presentes no banco de dados (no público schema), utilize o seguinte:
GRANTSELECTONALLTABLESINSCHEMApublicTO new_relic;
Se você também deseja obter métricas de nível de consulta a partir do arquivo de configuração de consulta customizado do PostgreSQL, a função PostgreSQL usada pela integração (new_relic) precisa ser adicionada à função (pg_read_all_stats). Isso ocorre porque o usuário aproveita a extensão (pg_stat_statements).
GRANT pg_read_all_stats TO new_relic;
A ativação da extensão pg_stat_statements pode exigir que você a crie manualmente a partir de um prompt de consulta:
CREATE EXTENSION pg_stat_statements;
Arquivos de amostra postgresql-config.yml
Matriz JSON: Interpretada como uma lista de nomes de bancos de dados da qual serão coletadas todas as métricas relevantes, incluindo quaisquer tabelas e índices pertencentes a esse banco de dados.
Por exemplo:
collection_list:'["postgres"]'
Objeto JSON: será coletada apenas a entidade especificada no objeto, nenhuma descoberta automática será realizada. Os níveis de JSON são database name -> schema name -> table name -> index name.
Opções habilitadas para SSL do Azure/AWS: as ofertas de banco de dados gerenciado flexível do Azure exigem SSL para se conectar. AWS RDS/Aurora pode exigir SSL se sua versão MySQL for 5.7+ e require_secure_transport estiver definido como ON em seu grupo de parâmetros Aurora. Para acomodar o requisito SSL, essas configurações no postgresql-config.yml precisam ser definidas como true.
Por exemplo:
ENABLE_SSL:"true"
TRUST_SERVER_CERTIFICATE:"true"
Opções desabilitadas de SSL do Azure/AWS : Além das configurações acima, as seguintes configurações de SSL devem ser comentadas ou removidas da configuração. Isso se deve ao fato de a configuração confiar no certificado do servidor acima.
Resumo: Depois que essas configurações estiverem em vigor, o arquivo de configuração completo do Azure/AWS deverá ser semelhante ao mostrado abaixo. Observação: o infra agente e a integração Postgresql devem ser instalados em um host com acesso de rede à instância do banco de dados.
Um arquivo de configuração YAML adicional com um ou mais SQL customizados pode ser definido e a integração precisará do caminho para o arquivo no parâmetro CUSTOM_METRICS_CONFIG.
A integração PostgreSQL recolhe a seguinte métrica. Alguns nomes de métricas são prefixados com um indicador de categoria e um ponto, como db. ou index..
PostgreSQLDatabaseSample atributo
Descrição
db.connections
Número de backend atualmente conectados a este banco de dados.
db.maxconnections
O número máximo de conexões simultâneas com o servidor de banco de dados.
db.commitsPerSecond
Transação cometida por segundo.
db.rollbacksPerSecond
Transação revertida por segundo.
db.readsPerSecond
Número de blocos de disco lidos neste banco de dados por segundo.
db.bufferHitsPerSecond
Número de vezes que blocos de disco já foram encontrados no cache do buffer, de modo que uma leitura não foi necessária. Isso inclui apenas ocorrências no cache do buffer do PostgreSQL, e não no cache do sistema de arquivos do sistema operacional.
db.rowsReturnedPerSecond
Linhas retornadas pela consulta por segundo.
db.rowsFetchedPerSecond
Linhas buscadas por consulta por segundo.
db.rowsInsertedPerSecond
Linhas inseridas por segundo.
db.rowsUpdatedPerSecond
Linhas atualizadas por segundo.
db.rowsDeletedPerSecond
Linhas excluídas por segundo.
db.conflicts.tablespacePerSecond
Número de consultas neste banco de dados que foram canceladas devido à eliminação de tablespaces.
db.conflicts.locksPerSecond
Quantidade de consultas neste banco de dados que foram canceladas por timeout de bloqueio.
db.conflicts.snapshotPerSecond
Número de consultas neste banco de dados que foram canceladas devido a snapshots antigos.
db.conflicts.bufferpinPerSecond
Número de consultas neste banco de dados que foram canceladas devido a buffers fixados.
db.conflicts.deadlockPerSecond
Número de consultas neste banco de dados que foram canceladas devido a impasses.
db.tempFilesCreatedPerSecond
Quantidade de arquivos temporários criados pela consulta neste banco de dados. Todos os arquivos temporários são contados, independentemente do motivo pelo qual o arquivo temporário foi criado (por exemplo, classificação ou hash) e independentemente da configuração log_temp_files .
db.tempWrittenInBytesPerSecond
Quantidade total de dados gravados em arquivos temporários por consulta neste banco de dados. Todos os arquivos temporários são contados, independentemente do motivo pelo qual o arquivo temporário foi criado e da configuração log_temp_files .
db.deadlocksPerSecond
Número de deadlocks detectados neste banco de dados.
db.readTimeInMillisecondsPerSecond
Tempo gasto na leitura de blocos de arquivos de dados pelo backend neste banco de dados, em milissegundos.
db.writeTimeInMillisecondsPerSecond
Tempo gasto na gravação de blocos de arquivos de dados pelo backend neste banco de dados, em milissegundos.
PostgreSQLIndexSample atributo
Descrição
index.sizeInBytes
O tamanho de um índice.
index.rowsReadPerSecond
O número de entradas de índice retornadas por varreduras neste índice.
index.rowsFetchedPerSecond
O número de entradas de índice obtidas por varreduras neste índice.
PostgreSQLInstanceSample atributo
Descrição
bgwriter.checkpointsScheduledPerSecond
Número de pontos de verificação agendados que foram executados.
bgwriter.checkpointsRequestedPerSecond
Número de pontos de verificação solicitados que foram executados.
bgwriter.buffersWrittenForCheckpointsPerSecond
Número de buffers gravados durante os pontos de verificação.
Número de buffers gravados pelo gravador em segundo plano.
bgwriter.backgroundWriterStopsPerSecond
Número de vezes que o gravador em segundo plano interrompeu uma varredura de limpeza porque havia gravado muitos buffers.
bgwriter.buffersWrittenByBackendPerSecond
Número de buffers gravados diretamente por um backend.
bgwriter.buffersAllocatedPerSecond
Número de buffers alocados.
bgwriter.backendFsyncCallsPerSecond
Número de vezes que um backend teve que executar sua própria chamada fsync. Normalmente, o gravador de segundo plano lida com eles mesmo quando o backend faz sua própria gravação.
O número médio de consultas por segundo no último período estatístico.
pgbouncer.stats.avgBytesIn
O tráfego de rede do cliente recebido.
pgbouncer.stats.avgBytesOut
O tráfego de rede do cliente enviado.
pgbouncer.stats.avgQueryDurationInMilliseconds
A duração média da consulta.
pgbouncer.pools.clientConnectionsActive
Conexões do cliente vinculadas à conexão do servidor e capazes de processar consultas.
pgbouncer.pools.clientConnectionsWaiting
Conexões de cliente aguardando uma conexão de servidor.
pgbouncer.pools.clientConnectionsWaitingCancelReq
Conexões de clientes que ainda não encaminharam cancelamentos de consulta ao servidor.
pgbouncer.pools.clientConnectionsActiveCancelReq
Conexões de cliente que encaminharam cancelamentos de consulta ao servidor e estão aguardando a resposta do servidor.
pgbouncer.pools.serverConnectionsActiveCancel
Conexões de servidor que estão encaminhando uma solicitação de cancelamento no momento.
pgbouncer.pools.serverConnectionsBeingCancel
Servidores que normalmente poderiam ficar ociosos, mas estão aguardando até que todas as solicitações de cancelamento em andamento sejam concluídas e que foram enviadas para cancelar uma consulta neste servidor.
pgbouncer.pools.serverConnectionsActive
Conexões de servidor vinculadas a uma conexão de cliente.
pgbouncer.pools.serverConnectionsIdle
Conexões do servidor inativas e prontas para uma consulta do cliente.
pgbouncer.pools.serverConnectionsUsed
As conexões do servidor ficam ociosas por mais de server_check_delay, precisando de server_check_query.
pgbouncer.pools.serverConnectionsTested
Conexões de servidor atualmente em execução server_reset_query ou server_check_query.
pgbouncer.pools.serverConnectionsLogin
Conexões do servidor atualmente em processo de login.
pgbouncer.pools.maxwaitInMilliseconds
Idade da conexão de cliente não atendida mais antiga.