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.
Installation guidée
Pour installer plutôt via l’UI de New Relic, accédez à one.newrelic.com > Integrations & Agents > PostgreSQL (Database 360). Cette page traite uniquement de l’installation manuelle.
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 :
Docker installé sur l’hôte.
Un conteneur PostgreSQL déjà en cours d’exécution (PostgreSQL 14 ou version ultérieure).
Une clé de licence New Relic.
Connectivité réseau depuis le conteneur du collecteur vers les points de terminaison OTLP de New Relic.
Pour les versions de PostgreSQL prises en charge, les droits requis, et les paramètres de serveur recommandés, consultez Compatibilité et prérequis.
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.
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>';$"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.
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(Facultatif) Pour collecter les métriques vectorielles, créez l'extension
pgvectordans 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;"$doneLes fonctions de distance
l1,hammingetjaccardnécessitent la version0.7.0ou supérieure depgvector.(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 :
$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]$EOFParamètres de configuration [#configuration-parameters]
| paramètres | Description |
|---|---|
<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. |
databases | La 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 :
$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.yamlConseil
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 :
$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 :
$docker ps --filter name=nrdot-collectorS’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 :
$docker logs nrdot-collectorConseil
Après avoir modifié postgresql-config.yaml, redémarrez le conteneur pour appliquer vos modifications :
$docker restart nrdot-collectorTrouvez 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 :
Allez à one.newrelic.com > All capabilities > Databases.
Dans la liste déroulante Entity type, sélectionnez PostgreSQL instance, puis cliquez sur Apply.
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 MetricWHERE metricName LIKE 'postgresql.%'AND instrumentation.provider = 'opentelemetry'SINCE 10 minutes ago
Documentation associée
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.