Configure o monitoramento do PostgreSQL usando o NRDOT Collector para instâncias do AWS RDS PostgreSQL. Os ambientes RDS têm considerações específicas para extensões e grupos de parâmetros.
Instalação guiada
Para instalar pela interface da New Relic, acesse one.newrelic.com > Integrations & Agents > PostgreSQL (Database 360). Esta página aborda apenas a instalação manual.
Pré-requisitos
Antes de instalar, certifique-se de ter:
- PostgreSQL
14e superior - Uma chave de licença da New Relic.
- Conectividade de rede entre o host onde o Collector NRDOT é instalado e a sua instância do RDS PostgreSQL.
- Conectividade de rede para a documentação dos endpoints OTLP da New Relic
- Credenciais do usuário mestre do RDS.
Para versões suportadas do PostgreSQL, permissões necessárias e parâmetros de servidor recomendados, consulte Compatibilidade e pré-requisitos.
Configurar o NRDOT Collector
Instale o NRDOT Collector em um sistema que possa se conectar à instância do RDS:
Configurar usuário do banco de dados e concessões
Crie um usuário de monitoramento com os privilégios necessários para a sua instância do RDS PostgreSQL.
Para criar o usuário de monitoramento e as concessões:
- Conecte-se à instância do RDS como o usuário mestre:
$psql --host=<YOUR_RDS_ENDPOINT> --dbname=postgres --port=5432 --username=<YOUR_MASTER_USERNAME>- Crie o usuário de monitoramento:
CREATE USER <YOUR_DB_USERNAME> WITH LOGIN PASSWORD '<YOUR_DB_PASSWORD>';- Conceda a associação ao perfil do usuário de monitoramento conforme necessário:
Para o PostgreSQL 15 e superior, atribua a função para herdar privilégios:
ALTER ROLE <YOUR_DB_USERNAME> INHERIT;Dica
No PostgreSQL 14, o usuário de monitoramento herda os privilégios por padrão, portanto, esta etapa pode ser ignorada.
Crie o seguinte esquema e as seguintes concessões em todos os bancos de dados a serem monitorados:
CREATE SCHEMA IF NOT EXISTS otel;GRANT USAGE ON SCHEMA otel TO <YOUR_DB_USERNAME>;GRANT USAGE ON SCHEMA public TO <YOUR_DB_USERNAME>;GRANT SELECT ON ALL TABLES IN SCHEMA public TO <YOUR_DB_USERNAME>;GRANT pg_monitor TO <YOUR_DB_USERNAME>;CREATE EXTENSION IF NOT EXISTS pg_stat_statements;(Opcional) Para coletar métricas de vetor, crie a extensão
pgvectorem cada banco de dados:CREATE EXTENSION IF NOT EXISTS vector;As funções de distância
l1,hammingejaccardexigem a versão0.7.0ou superior dopgvector.(Opcional) Para verificar a conexão e as permissões, é necessário executar:
bash$psql --username=<YOUR_DB_USERNAME> --host=<YOUR_RDS_ENDPOINT> --port=5432 --dbname=<YOUR_DATABASE_NAME> --command '\conninfo'$psql --username=<YOUR_DB_USERNAME> --host=<YOUR_RDS_ENDPOINT> --port=5432 --dbname=<YOUR_DATABASE_NAME> \>-c "SELECT * FROM pg_stat_database LIMIT 1;" && echo "pg_stat_database OK">psql --username=<YOUR_DB_USERNAME> --host=<YOUR_RDS_ENDPOINT> --port=5432 --dbname=<YOUR_DATABASE_NAME> \>-c "SELECT * FROM pg_stat_activity LIMIT 1;" && echo "pg_stat_activity OK">psql --username=<YOUR_DB_USERNAME> --host=<YOUR_RDS_ENDPOINT> --port=5432 --dbname=<YOUR_DATABASE_NAME> \>-c "SELECT * FROM pg_stat_statements LIMIT 1;" && echo "pg_stat_statements OK"Se cada comando for concluído sem erro, o usuário de monitoramento, o host e a porta estarão todos corretos.
Configurar o NRDOT Collector
Configure o NRDOT Collector com suas configurações específicas do RDS PostgreSQL.
Esta configuração concentra-se no monitoramento essencial do PostgreSQL apenas com o receptor nrpostgresql.
configuração completa
Esta configuração de baseline captura métricas essenciais. Para ver o catálogo completo de métricas, consulte a referência de configuração.
- Crie um arquivo de configuração chamado
postgresql-config.yaml:
$sudo nano /etc/nrdot-collector/postgresql-config.yaml- Adicione a seguinte configuração ao arquivo
postgresql-config.yamlcriado na etapa anterior.
1receivers:2nrpostgresql:3 endpoint: "mydb-instance.xxxxxxxxxxxx.us-east-1.rds.amazonaws.com:5432"4 username: "newrelic"5 password: "YOUR_PASSWORD"6databases:7 - YOUR_DATABASE_NAME8 # top_query/query_sample scan pg_stat_statements/pg_stat_activity cluster-wide9 # regardless of the databases list above; on RDS/Aurora, exclude reserved10 # databases the monitoring user can never reach.11exclude_databases:12 - rdsadmin13 collection_interval: 15s14events:15 db.server.top_query:16 enabled: true17 db.server.query_sample:18 enabled: true19 db.server.query_plan:20 enabled: true21top_query_collection:22 max_rows_per_query: 100023 top_n_query: 20024 collection_interval: 60s25 allowed_comment_keys: [nr_service_guid]26query_sample_collection:27 max_rows_per_query: 100028 allowed_comment_keys: [nr_service_guid]29resource_attributes:30 db.system.version:31 enabled: true32 # Metrics needed for the out-of-the-box dashboard but disabled by default:33 # see "Available metrics" below for the full default-on/default-off breakdown.34metrics:35 postgresql.database.locks:36 enabled: true37 postgresql.deadlocks:38 enabled: true39 postgresql.function.calls:40 enabled: true41 postgresql.query.conflicts:42 enabled: true43 postgresql.sequential_scans:44 enabled: true45 postgresql.temp.io:46 enabled: true47 postgresql.temp_files:48 enabled: true49processors:50batch:51 batch/metrics:52 send_batch_size: 819253 send_batch_max_size: 819254 timeout: 10s55exporters:56 otlp/newrelic:57 endpoint: "https://otlp.nr-data.net:4318"58headers:59 api-key: "YOUR_LICENSE_KEY"60 compression: gzip61sending_queue:62 enabled: true63 sizer: bytes64 queue_size: 100_000_00065 num_consumers: 1066 batch:67 sizer: bytes68 max_size: 1_000_00069 min_size: 070 flush_timeout: 5s71retry_on_failure:72 enabled: true73 initial_interval: 5s74 max_interval: 30s75 max_elapsed_time: 300s76service:77telemetry:78metrics:79 level: none80pipelines:81metrics:82 receivers: [nrpostgresql]83 processors: [batch/metrics]84 exporters: [otlp/newrelic]85logs:86 receivers: [nrpostgresql]87 processors: [batch]88 exporters: [otlp/newrelic]Parâmetro de configuração
A tabela a seguir descreve os principais parâmetros de configuração para o receptor nrpostgresql:
| Parâmetro | Descrição |
|---|---|
<YOUR_RDS_ENDPOINT> | Insira o nome do host do endpoint da instância RDS. |
<YOUR_DB_PORT> | Insira a porta do banco de dados PostgreSQL. |
<YOUR_DB_USERNAME> | Insira seu nome de usuário do banco de dados. |
<YOUR_DB_PASSWORD> | Insira a senha do seu banco de dados. |
<YOUR_DATABASE_NAME> | Insira o nome do banco de dados a ser monitorado. |
databases | Lista de bancos de dados para coletar estatísticas. Padrão: [] (todos os bancos de dados não modelo). Aplica-se apenas a métricas. Amostras de consulta e principais consultas ignoram esta lista e são filtradas exclusivamente por exclude_databases. |
exclude_databases | Bancos de dados excluídos das estatísticas, amostras de consulta e principais consultas. Padrão: []. Use isso para bancos de dados internos de serviços gerenciados (como rdsadmin) que seu usuário de monitoramento não consegue acessar. |
<YOUR_NEWRELIC_OTLP_ENDPOINT> | Insira o endpoint OTLP da New Relic. Para mais informações, consulte os endpoints OTLP da New Relic. |
<YOUR_NEWRELIC_LICENSE_KEY> | Insira sua chave de licença do New Relic. |
collection_interval | Insira o intervalo entre as coletas de métrica. Padrão: 15s. |
Dica
Você também pode:
- Configurar múltiplos receptores: para monitorar múltiplas instâncias do PostgreSQL a partir de um coletor.
- Vincule seu banco de dados PostgreSQL ao APM: para correlacionar o desempenho do aplicativo com as operações do banco de dados. Isso permite visualizar exatamente quais aplicativos estão gerando workloads específicas de banco de dados.
- Planos de consulta para instruções de gravação: para coletar planos de consulta para instruções de bloqueio ou gravação sem conceder acesso de gravação ao usuário de monitoramento.
- Configurar o gerenciamento de segredos: para gerenciar com segurança informações confidenciais, como credenciais de banco de dados. Isso ajuda a aprimorar a segurança do seu ambiente de monitoramento ao evitar a inserção direta de dados sensíveis nos arquivos de configuração.
Validar a configuração do NRDOT Collector
- Atualize o caminho da configuração para apontar para seu novo arquivo
postgresql-config.yaml:
$sudo sed -i 's|OTELCOL_OPTIONS="--config=/etc/nrdot-collector/config.yaml"|OTELCOL_OPTIONS="--config=/etc/nrdot-collector/postgresql-config.yaml"|' /etc/nrdot-collector/nrdot-collector.conf- Valide a configuração do Collector NRDOT para garantir que esteja formatada corretamente e funcione adequadamente:
$sudo /usr/bin/nrdot-collector validate --config=/etc/nrdot-collector/postgresql-config.yamlReiniciar o NRDOT Collector
Após configurar o coletor, reinicie o serviço NRDOT Collector para aplicar as alterações:
$sudo systemctl restart nrdot-collectorPara verificar se o coletor está funcionando corretamente, verifique o status do serviço:
$sudo systemctl status nrdot-collectorDica
Sempre reinicie o Collector NRDOT após fazer alterações de configuração para garantir que as novas configurações entrem em vigor.
Encontre e use seus dados
As amostras de consulta e as principais consultas chegam como eventos de log (event.name = 'db.server.query_sample' / 'db.server.top_query', db.system.name = 'postgresql'). As métricas chegam no namespace postgresql.*.
Para encontrar sua entidade de banco de dados RDS PostgreSQL no New Relic:
- Vá para https://one.newrelic.com > All Capabilities > Databases.
- Na dropdown Entity type, selecione PostgreSQL instance e clique em Apply.
- Selecionar o banco de dados RDS PostgreSQL na lista de entidades.
Documentação relacionada
Instrumentação em ambientes auto-hospedados
Saiba como configurar o monitoramento do PostgreSQL em ambientes auto-hospedados com o New Relic.
Referência de métricas
Saiba mais sobre as métricas disponíveis coletadas pelo NRDOT Collector.
Guia de solução de problemas
Saiba como solucionar problemas comuns com o monitoramento do PostgreSQL.