Configure o monitoramento do PostgreSQL usando o NRDOT Collector como um contêiner irmão de uma instância do PostgreSQL que já está em execução no Docker.
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.
Dica
Deseja automatizar isso em escala ou executar no Kubernetes? Consulte a instalação do Ansible, a instalação do Chef ou a instalação do Helm chart.
Pré-requisitos
Antes de instalar, certifique-se de ter:
- Docker instalado no host.
- Um contêiner do PostgreSQL já em execução (PostgreSQL 14 ou posterior).
- Uma chave de licença da New Relic.
- Conectividade de rede do contêiner do coletor para os endpoints OTLP da New Relic.
Para versões suportadas do PostgreSQL, permissões necessárias e parâmetros de servidor recomendados, consulte Compatibilidade e pré-requisitos.
Configurar usuário do banco de dados e concessões
Crie um usuário de monitoramento com os privilégios necessários executando SQL no seu contêiner PostgreSQL com docker exec. Substitua <YOUR_POSTGRESQL_CONTAINER_NAME>, <YOUR_SUPERUSER>, <YOUR_DB_USERNAME> e <YOUR_DB_PASSWORD> pelos seus próprios valores.
Crie o usuário de monitoramento, conectando-se como superusuário:
bash$docker exec -i <YOUR_POSTGRESQL_CONTAINER_NAME> psql -U <YOUR_SUPERUSER> -d postgres -c "$CREATE USER <YOUR_DB_USERNAME> WITH LOGIN PASSWORD '<YOUR_DB_PASSWORD>';$"Se você estiver no PostgreSQL 15 ou superior, atribua a função para herdar privilégios:
bash$docker exec -i <YOUR_POSTGRESQL_CONTAINER_NAME> psql -U <YOUR_SUPERUSER> -d postgres -c "$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.
Aplique o esquema e as permissões em cada banco de dados que você deseja monitorar. Substitua
<DB_NAMES>por uma lista separada por espaços com os nomes dos seus bancos de dados:bash$for db in <DB_NAMES>; do$docker exec -i <YOUR_POSTGRESQL_CONTAINER_NAME> psql -U <YOUR_SUPERUSER> -d "$db" -c "$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;$"$done(Opcional) Para coletar métricas de vetor, crie a extensão
pgvectorem cada banco de dados:bash$for db in <DB_NAMES>; do$docker exec -i <YOUR_POSTGRESQL_CONTAINER_NAME> psql -U <YOUR_SUPERUSER> -d "$db" -c "CREATE EXTENSION IF NOT EXISTS vector;"$doneAs 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$docker exec -i <YOUR_POSTGRESQL_CONTAINER_NAME> psql -U <YOUR_DB_USERNAME> -d <YOUR_DATABASE_NAME> -c "SELECT * FROM pg_stat_statements LIMIT 1;"Se o comando for concluído sem erros, o usuário de monitoramento e as permissões estão corretos.
Crie a configuração do Collector NRDOT
Esta configuração concentra-se no monitoramento essencial do PostgreSQL com o receiver nrpostgresql. Execute o seguinte no host do Docker para gerar postgresql-config.yaml em seu diretório atual:
$cat << 'EOF' > postgresql-config.yaml$receivers:$ nrpostgresql:$ endpoint: "<YOUR_POSTGRESQL_CONTAINER_NAME>:5432"$ username: "<YOUR_DB_USERNAME>"$ password: "<YOUR_DB_PASSWORD>"$ databases:$ - <YOUR_DATABASE_NAME>$ collection_interval: 15s$ events:$ db.server.top_query:$ enabled: true$ db.server.query_sample:$ enabled: true$ db.server.query_plan:$ enabled: true$ top_query_collection:$ max_rows_per_query: 1000$ top_n_query: 200$ collection_interval: 60s$ allowed_comment_keys: [nr_service_guid]$ query_sample_collection:$ max_rows_per_query: 1000$ allowed_comment_keys: [nr_service_guid]$
$ resource_attributes:$ db.system.version:$ enabled: true$ # Metrics needed for the out-of-the-box dashboard but disabled by default:$ # see "Available metrics" below for the full default-on/default-off breakdown.$ metrics:$ postgresql.database.locks:$ enabled: true$ postgresql.deadlocks:$ enabled: true$ postgresql.function.calls:$ enabled: true$ postgresql.query.conflicts:$ enabled: true$ postgresql.sequential_scans:$ enabled: true$ postgresql.temp.io:$ enabled: true$ postgresql.temp_files:$ enabled: true$
$processors:$ batch:$ batch/metrics:$ send_batch_size: 8192$ send_batch_max_size: 8192$ timeout: 10s$
$exporters:$ otlp/newrelic:$ endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>"$ headers:$ api-key: "<YOUR_NEWRELIC_LICENSE_KEY>"$ compression: gzip$ sending_queue:$ enabled: true$ sizer: bytes$ queue_size: 100_000_000$ num_consumers: 10$ batch:$ sizer: bytes$ max_size: 1_000_000$ min_size: 0$ flush_timeout: 5s$ retry_on_failure:$ enabled: true$ initial_interval: 5s$ max_interval: 30s$ max_elapsed_time: 300s$
$service:$ telemetry:$ metrics:$ level: none$ pipelines:$ metrics:$ receivers: [nrpostgresql]$ processors: [batch/metrics]$ exporters: [otlp/newrelic]$ logs:$ receivers: [nrpostgresql]$ processors: [batch]$ exporters: [otlp/newrelic]$EOFParâmetro de configuração
| Parâmetro | Descrição |
|---|---|
<YOUR_POSTGRESQL_CONTAINER_NAME> | O nome (ou nome do host resolvível por DNS do Docker) do seu contêiner PostgreSQL em execução. |
<YOUR_DB_USERNAME> | O usuário de monitoramento que você criou em Configurar usuário e permissões do banco de dados. |
<YOUR_DB_PASSWORD> | A senha do usuário de monitoramento que você criou em Configurar usuário e permissões do banco de dados. |
databases | A lista de nomes de bancos de dados para monitorar. Cada um deve ter o esquema otel e as permissões aplicadas. |
<YOUR_NEWRELIC_OTLP_ENDPOINT> | Seu endpoint OTLP da New Relic. Para mais informações, consulte os endpoints OTLP da New Relic. |
<YOUR_NEWRELIC_LICENSE_KEY> | Sua chave de licença da New Relic. |
Inicie o contêiner do Collector NRDOT
Execute o coletor na mesma rede Docker que o seu contêiner PostgreSQL para que ele possa resolver <YOUR_POSTGRESQL_CONTAINER_NAME> pelo nome do contêiner:
$docker run -d \> --name nrdot-collector \> --network <YOUR_DOCKER_NETWORK> \> -v "$PWD/postgresql-config.yaml:/etc/nrdot-collector/postgresql-config.yaml" \> newrelic/nrdot-collector:latest \> --config /etc/nrdot-collector/postgresql-config.yamlDica
Encontre a rede do seu contêiner PostgreSQL com docker inspect <YOUR_POSTGRESQL_CONTAINER_NAME> --format '{{json .NetworkSettings.Networks}}'. Se ele ainda não estiver em uma rede compartilhada definida pelo usuário, crie uma e conecte ambos os contêineres a ela:
$docker network create <YOUR_DOCKER_NETWORK>$docker network connect <YOUR_DOCKER_NETWORK> <YOUR_POSTGRESQL_CONTAINER_NAME>Confirme se o contêiner do coletor está em execução:
$docker ps --filter name=nrdot-collectorSe não estiver em execução, verifique seus logs em busca de erros. As causas mais comuns são problemas de indentação YAML em postgresql-config.yaml ou um contêiner PostgreSQL inacessível:
$docker logs nrdot-collectorDica
Após alterar postgresql-config.yaml, reinicie o contêiner para aplicar suas alterações:
$docker restart nrdot-collectorEncontre e use seus dados
Assim que seus dados estiverem sendo coletados, você poderá acessar o monitoramento abrangente do banco de dados PostgreSQL por meio da interface do New Relic.
Para encontrar a entidade de banco de dados PostgreSQL no New Relic:
- Vá para one.newrelic.com > All capabilities > Databases.
- Na dropdown Entity type, selecione PostgreSQL instance e clique em Apply.
- Selecione seu banco de dados PostgreSQL na lista de entidades.
Para confirmar que os dados estão chegando, execute esta consulta no criador de consulta:
SELECT count(*) FROM MetricWHERE metricName LIKE 'postgresql.%'AND instrumentation.provider = 'opentelemetry'SINCE 10 minutes agoDocumentação relacionada
Introdução ao monitoramento do PostgreSQL com NRDOT
Saiba mais sobre todos os métodos de instalação disponíveis para o monitoramento do PostgreSQL com o New Relic.
Instalação auto-hospedada
Saiba como configurar o monitoramento do PostgreSQL em servidores físicos, máquinas virtuais e instalações autônomas.
Instalação via Ansible
Saiba como instalar e configurar o monitoramento do PostgreSQL em escala com a newrelic.newrelic_install função Ansible.
Instalação via Chef
Aprenda a instalar e configurar o monitoramento do PostgreSQL em escala com o cookbook do Chef newrelic-install.
Instalação do chart do Helm
Saiba como instalar e configurar o monitoramento do PostgreSQL no Kubernetes com o chart do Helm postgresql-otel.