Configure el monitoreo de PostgreSQL usando el NRDOT Collector como contenedor hermano de una instancia de PostgreSQL que ya se está ejecutando en Docker.
Instalación guiada
Para instalar a través de la UI de New Relic en su lugar, vaya a one.newrelic.com > Integrations & Agents > PostgreSQL (Database 360). Esta página solo cubre la instalación manual.
Sugerencia
¿Busca automatizar esto a escala o ejecutarlo en Kubernetes en su lugar? Consulte la instalación de Ansible, la instalación de Chef o la instalación del chart de Helm.
Requisitos previos
Antes de instalar, asegúrese de tener:
Docker instalado en el host.
Un contenedor de PostgreSQL que ya se esté ejecutando (PostgreSQL 14 o posterior).
Una clave de licencia de New Relic.
Conectividad de red desde el contenedor del recolector a los extremos OTLP de New Relic.
Para conocer las versiones de PostgreSQL compatibles, los permisos requeridos y los parámetros de servidor recomendados, consulte Compatibilidad y requisitos previos.
Configurar el usuario y los permisos de la base de datos
Cree un usuario de monitoreo con los privilegios necesarios ejecutando SQL en su contenedor de PostgreSQL con docker exec. Reemplace <YOUR_POSTGRESQL_CONTAINER_NAME>, <YOUR_SUPERUSER>, <YOUR_DB_USERNAME> y <YOUR_DB_PASSWORD> con sus propios valores.
Cree el usuario de monitoreo, conectándose como superusuario:
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>';$"Si usa PostgreSQL 15 o superior, asigne el rol para heredar privilegios:
bash$docker exec -i <YOUR_POSTGRESQL_CONTAINER_NAME> psql -U <YOUR_SUPERUSER> -d postgres -c "$ALTER ROLE <YOUR_DB_USERNAME> INHERIT;$"Sugerencia
Si usa PostgreSQL 14, el usuario de monitoreo hereda los privilegios por defecto, por lo que puede omitir este paso.
Aplique el esquema y los permisos en cada base de datos que desee monitorear. Reemplace
<DB_NAMES>por una lista separada por espacios de los nombres de las bases de datos: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 recopilar métricas de vectores, cree la extensión
pgvectoren cada base de datos: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;"$doneLas funciones de distancia
l1,hammingyjaccardrequieren la versión0.7.0o superior depgvector.(Opcional) Para verificar la conexión y los permisos, ejecute:
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;"Si el comando se completa sin errores, el usuario de monitoreo y los permisos son correctos.
Crear la configuración del Collector NRDOT
Esta configuración se centra en el monitoreo esencial de PostgreSQL con el receptor nrpostgresql. Ejecute lo siguiente en el host de Docker para generar postgresql-config.yaml en el directorio actual:
$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 configuración [#configuration-parameters]
| Parámetro | Descripción |
|---|---|
<YOUR_POSTGRESQL_CONTAINER_NAME> | El nombre (o nombre de host de Docker que se puede resolver por DNS) del contenedor de PostgreSQL en ejecución. |
<YOUR_DB_USERNAME> | El usuario de monitoreo que creó en Configurar el usuario y los permisos de la base de datos. |
<YOUR_DB_PASSWORD> | La contraseña del usuario de monitoreo que creó en Configurar el usuario y los permisos de la base de datos. |
databases | La lista de nombres de bases de datos para monitorear. Cada una debe tener el esquema otel y los permisos aplicados. |
<YOUR_NEWRELIC_OTLP_ENDPOINT> | El extremo OTLP de New Relic. Para obtener más información, consulte Extremos OTLP de New Relic. |
<YOUR_NEWRELIC_LICENSE_KEY> | Su clave de licencia de New Relic. |
Iniciar el contenedor del NRDOT Collector
Ejecute el recolector en la misma red de Docker que el contenedor de PostgreSQL para que pueda resolver <YOUR_POSTGRESQL_CONTAINER_NAME> por el nombre del contenedor:
$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.yamlSugerencia
Encuentre la red del contenedor de PostgreSQL con docker inspect <YOUR_POSTGRESQL_CONTAINER_NAME> --format '{{json .NetworkSettings.Networks}}'. Si aún no está en una red compartida definida por el usuario, cree una y conecte ambos contenedores a ella:
$docker network create <YOUR_DOCKER_NETWORK>$docker network connect <YOUR_DOCKER_NETWORK> <YOUR_POSTGRESQL_CONTAINER_NAME>Confirme que el contenedor del recolector se esté ejecutando:
$docker ps --filter name=nrdot-collectorSi no se está ejecutando, revise los logs en busca de errores. Las causas más comunes son problemas de sangría YAML en postgresql-config.yaml o un contenedor de PostgreSQL inalcanzable:
$docker logs nrdot-collectorSugerencia
Después de cambiar postgresql-config.yaml, reinicie el contenedor para aplicar los cambios:
$docker restart nrdot-collectorEncuentra y utiliza tus datos
Una vez que sus datos se estén recopilando, puede acceder al monitoreo integral de bases de datos PostgreSQL a través de la UI de New Relic.
Para encontrar su entidad de base de datos PostgreSQL en New Relic:
Vaya a one.newrelic.com > All capabilities > Databases.
En el menú desplegable Entity type, seleccione PostgreSQL instance y luego haga clic en Apply.
Seleccione su base de datos PostgreSQL de la lista de entidades.
Para confirmar que los datos están llegando, ejecute esta consulta en el generador de consultas:
SELECT count(*) FROM MetricWHERE metricName LIKE 'postgresql.%'AND instrumentation.provider = 'opentelemetry'SINCE 10 minutes ago
Documentación relacionada
Introducción al monitoreo de PostgreSQL con NRDOT
Conozca todos los métodos de instalación disponibles para el monitoreo de PostgreSQL con New Relic.
Instalación autohospedada
Aprenda a configurar el monitoreo de PostgreSQL en servidores físicos, máquinas virtuales e instalaciones independientes.
Instalación con Ansible
Aprenda a instalar y configurar el monitoreo de PostgreSQL a escala con el newrelic.newrelic_install rol de Ansible.
Instalación con Chef
Aprenda a instalar y configurar el monitoreo de PostgreSQL a escala con el libro de recetas de Chef newrelic-install.
Instalación del chart de Helm
Aprenda a instalar y configurar el monitoreo de PostgreSQL en Kubernetes con el chart de Helm postgresql-otel.