• /
  • EnglishEspañolFrançais日本語한국어Português
  • Se connecterDémarrer

Cette traduction automatique est fournie pour votre commodité.

En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.

Créer un problème

Installez & configurez NRDOT pour le monitoring de PostgreSQL avec Docker

|View as Markdown (English)

Configurez le monitoring de PostgreSQL à l’aide du NRDOT Collector en tant que conteneur frère d’une instance PostgreSQL qui s’exécute déjà dans Docker.

Conseil

Vous cherchez à automatiser cela à grande échelle, ou plutôt à l'exécuter sur Kubernetes ? Reportez-vous à l'installation Ansible, l'installation Chef, ou l'installation du chart Helm.

Prérequis

Avant d’installer, assurez-vous d’avoir :

Configurer l'utilisateur de la base de données et les autorisations

Créez un utilisateur de monitoring avec les privilèges nécessaires en exécutant du SQL sur votre conteneur PostgreSQL avec docker exec. Remplacez <YOUR_POSTGRESQL_CONTAINER_NAME>, <YOUR_SUPERUSER>, <YOUR_DB_USERNAME>, et <YOUR_DB_PASSWORD> par vos propres valeurs.

  1. Créez l'utilisateur de monitoring, en vous connectant en tant que superutilisateur :

    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>';
    $
    "
  2. Si vous utilisez PostgreSQL 15 ou une version ultérieure, attribuez le rôle pour hériter des privilèges :

    bash
    $
    docker exec -i <YOUR_POSTGRESQL_CONTAINER_NAME> psql -U <YOUR_SUPERUSER> -d postgres -c "
    $
    ALTER ROLE <YOUR_DB_USERNAME> INHERIT;
    $
    "

    Conseil

    Si vous utilisez PostgreSQL 14, l'utilisateur de monitoring hérite des privilèges par défaut, vous pouvez donc ignorer cette étape.

  3. Appliquez le schéma et les droits dans chaque base de données que vous souhaitez monitorer. Remplacez <DB_NAMES> par une liste des noms de vos bases de données séparés par des espaces :

    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
  4. (Facultatif) Pour collecter les métriques vectorielles, créez l'extension pgvector dans chaque base de données :

    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;"
    $
    done

    Les fonctions de distance l1, hamming et jaccard nécessitent la version 0.7.0 ou supérieure de pgvector.

  5. (Facultatif) Pour vérifier la connexion et les autorisations, exécutez :

    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 la commande se termine sans erreur, l'utilisateur de monitoring et les droits sont corrects.

Créez la configuration du Collector NRDOT

Cette configuration se concentre sur le monitoring essentiel de PostgreSQL avec le Récepteur nrpostgresql. Exécutez ce qui suit sur l'hôte Docker pour générer postgresql-config.yaml dans votre répertoire courant :

bash
$
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]
$
EOF

Paramètres de configuration [#configuration-parameters]

paramètresDescription
<YOUR_POSTGRESQL_CONTAINER_NAME>Le nom (ou le nom d’hôte résolvable par le DNS Docker) de votre conteneur PostgreSQL en cours d’exécution.
<YOUR_DB_USERNAME>L’utilisateur de monitoring que vous avez créé dans Configurer l’utilisateur de base de données et les privilèges.
<YOUR_DB_PASSWORD>Le mot de passe de l’utilisateur de monitoring que vous avez créé dans Configurer l’utilisateur de base de données et les droits.
databasesLa liste des noms de bases de données à monitorer. Chacune d'elles doit avoir le schéma otel et les droits appliqués.
<YOUR_NEWRELIC_OTLP_ENDPOINT>Votre point de terminaison OTLP New Relic. Pour plus d’informations, consultez les points de terminaison OTLP New Relic.
<YOUR_NEWRELIC_LICENSE_KEY>Votre clé de licence New Relic.

Démarrer le conteneur NRDOT Collector

Exécutez le collecteur sur le même réseau Docker que votre conteneur PostgreSQL afin qu'il puisse résoudre <YOUR_POSTGRESQL_CONTAINER_NAME> par son nom de conteneur :

bash
$
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.yaml

Conseil

Trouvez le réseau de votre conteneur PostgreSQL avec docker inspect <YOUR_POSTGRESQL_CONTAINER_NAME> --format '{{json .NetworkSettings.Networks}}'. S'il n'est pas encore sur un réseau partagé défini par l'utilisateur, créez-en un et connectez-y les deux conteneurs :

bash
$
docker network create <YOUR_DOCKER_NETWORK>
$
docker network connect <YOUR_DOCKER_NETWORK> <YOUR_POSTGRESQL_CONTAINER_NAME>

Confirmez que le conteneur du collecteur est en cours d'exécution :

bash
$
docker ps --filter name=nrdot-collector

S’il ne s’exécute pas, vérifiez ses logs à la recherche d’erreurs. Les causes les plus courantes sont des problèmes d’indentation YAML dans postgresql-config.yaml, ou un conteneur PostgreSQL inaccessible :

bash
$
docker logs nrdot-collector

Conseil

Après avoir modifié postgresql-config.yaml, redémarrez le conteneur pour appliquer vos modifications :

bash
$
docker restart nrdot-collector

Trouvez et utilisez vos données

Une fois vos données collectées, vous pouvez accéder à un monitoring complet de la base de données PostgreSQL via l'UI de New Relic.

Pour trouver votre entité de base de données PostgreSQL dans New Relic :

  1. Allez à one.newrelic.com > All capabilities > Databases.

  2. Dans la liste déroulante Entity type, sélectionnez PostgreSQL instance, puis cliquez sur Apply.

  3. Sélectionnez votre base de données PostgreSQL dans la liste des entités.

    Pour confirmer que les données arrivent, exécutez cette requête dans le générateur de requêtes:

    SELECT count(*) FROM Metric
    WHERE metricName LIKE 'postgresql.%'
    AND instrumentation.provider = 'opentelemetry'
    SINCE 10 minutes ago

Introduction au monitoring de PostgreSQL avec NRDOT

Découvrez toutes les méthodes d’installation disponibles pour le monitoring de PostgreSQL avec New Relic.

Installation auto-hébergée

Apprenez à configurer le monitoring PostgreSQL sur des serveurs physiques, des machines virtuelles, et des installations autonomes.

Installation via Ansible

Découvrez comment installer et configurer le monitoring PostgreSQL à grande échelle avec le newrelic.newrelic_install rôle Ansible.

Installation via Chef

Découvrez comment installer et configurer le monitoring PostgreSQL à grande échelle avec le cookbook Chef newrelic-install.

Installation du chart Helm

Apprenez à installer et configurer le monitoring PostgreSQL sur Kubernetes avec le chart Helm postgresql-otel.

Droits d'auteur © 2026 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.