• /
  • 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

Installer & configurer NRDOT pour le monitoring MSSQL avec Docker

|View as Markdown (English)

Configurez le monitoring SQL Server à l’aide du Collector NRDOT en tant que conteneur frère d’une instance SQL Server déjà en cours d’exécution dans Docker.

Installation guidée

Pour installer ceci via l’UI de New Relic à la place, accédez à one.newrelic.com > Integrations & Agents > Microsoft SQL Server (Database 360) . Suivez les instructions à l’écran pour configurer l’intégration. Cette page couvre uniquement l’installation manuelle.

Conseil

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

Prérequis

  • Docker installé sur l’hôte.
  • Un conteneur SQL Server déjà en cours d’exécution (SQL Server 2017 ou version ultérieure), avec l’utilitaire sqlcmd disponible à l’intérieur. Les images mssql-server de Microsoft l’incluent sous /opt/mssql-tools18/bin ou /opt/mssql-tools/bin.
  • Un identifiant de connexion dans le rôle de serveur sysadmin (ou équivalent) avec son mot de passe.
  • Une clé de licence New Relic.
  • Connectivité réseau depuis le conteneur du collecteur vers les points de terminaison OTLP de New Relic.

Créer l’utilisateur de monitoring et accorder les autorisations

Exécutez le script d’octroi de droits dans votre conteneur SQL Server avec docker exec. Remplacez <YOUR_MSSQL_CONTAINER_NAME>, <YOUR_ADMIN_USERNAME>, <YOUR_ADMIN_PASSWORD>, <YOUR_DB_USERNAME> et <YOUR_DB_PASSWORD> par vos propres valeurs. Ajustez le chemin sqlcmd (/opt/mssql-tools18/bin/sqlcmd ou /opt/mssql-tools/bin/sqlcmd) pour qu’il corresponde à votre image.

bash
$
docker exec -i <YOUR_MSSQL_CONTAINER_NAME> /opt/mssql-tools18/bin/sqlcmd \
>
-S localhost -U <YOUR_ADMIN_USERNAME> -P '<YOUR_ADMIN_PASSWORD>' -C \
>
-Q "
$
USE [master];
$
GO
$
CREATE LOGIN [<YOUR_DB_USERNAME>] WITH PASSWORD = '<YOUR_DB_PASSWORD>';
$
GO
$
-- Instance-level permissions
$
GRANT VIEW SERVER STATE TO [<YOUR_DB_USERNAME>];
$
GRANT VIEW ANY DEFINITION TO [<YOUR_DB_USERNAME>];
$
GRANT VIEW ANY DATABASE TO [<YOUR_DB_USERNAME>];
$
GO
$
-- Grant read access privileges to all user databases
$
DECLARE @name SYSNAME;
$
DECLARE db_cursor CURSOR READ_ONLY FORWARD_ONLY FOR
$
SELECT [name]
$
FROM [master].[sys].[databases]
$
WHERE [name] NOT IN ('master', 'msdb', 'model', 'rdsadmin', 'distribution')
$
AND [state] = 0;
$
OPEN db_cursor;
$
FETCH NEXT FROM db_cursor INTO @name;
$
WHILE @@FETCH_STATUS = 0
$
BEGIN
$
BEGIN TRY
$
EXEC('USE [' + @name + '];
$
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = ''<YOUR_DB_USERNAME>'')
$
BEGIN
$
CREATE USER [<YOUR_DB_USERNAME>] FOR LOGIN [<YOUR_DB_USERNAME>];
$
END;
$
GRANT VIEW DATABASE STATE TO [<YOUR_DB_USERNAME>];');
$
END TRY
$
BEGIN CATCH
$
PRINT 'Error on ' + @name + ': ' + ERROR_MESSAGE();
$
END CATCH
$
FETCH NEXT FROM db_cursor INTO @name;
$
END
$
CLOSE db_cursor;
$
DEALLOCATE db_cursor;
$
GO
$
"

Conseil

Ce script crée uniquement des utilisateurs et des droits au niveau de la base de données pour les bases de données qui sont ONLINE au moment de son exécution, à l’exclusion de master, msdb, model, rdsadmin, et distribution. Réexécutez-le chaque fois que vous ajoutez une nouvelle base de données que vous souhaitez monitorer.

(Facultatif) Vérifiez l’identifiant et ses permissions au niveau du serveur :

bash
$
docker exec -i <YOUR_MSSQL_CONTAINER_NAME> /opt/mssql-tools18/bin/sqlcmd \
>
-S localhost -U <YOUR_ADMIN_USERNAME> -P '<YOUR_ADMIN_PASSWORD>' -C \
>
-Q "SELECT sp.name AS [User], p.permission_name AS [Permission_Granted] FROM sys.server_permissions p JOIN sys.server_principals sp ON p.grantee_principal_id = sp.principal_id WHERE sp.name = '<YOUR_DB_USERNAME>';"

(Facultatif) Vérifiez que l'utilisateur de monitoring peut s'authentifier et voir chaque base de données :

bash
$
docker exec -i <YOUR_MSSQL_CONTAINER_NAME> /opt/mssql-tools18/bin/sqlcmd \
>
-S localhost -U <YOUR_DB_USERNAME> -P '<YOUR_DB_PASSWORD>' -C \
>
-Q "SELECT name FROM sys.databases;"

S’assurer de la connectivité réseau de Docker

Créez un réseau partagé défini par l’utilisateur (si vous n’en avez pas déjà un) et connectez-y votre conteneur SQL Server, afin que le conteneur du collecteur puisse le résoudre par son nom :

bash
$
docker network create <YOUR_DOCKER_NETWORK> 2>/dev/null || true
$
docker network connect <YOUR_DOCKER_NETWORK> <YOUR_MSSQL_CONTAINER_NAME> 2>/dev/null || true

Conseil

Les deux commandes peuvent être réexécutées en toute sécurité : || true ignore les erreurs « already exists » ou « already connected » d’une exécution précédente.

Créez la configuration du Collector NRDOT

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

bash
$
cat << 'EOF' > mssql-config.yaml
$
receivers:
$
nrsqlserver:
$
collection_interval: 15s
$
username: "<YOUR_DB_USERNAME>"
$
password: "<YOUR_DB_PASSWORD>"
$
server: "<YOUR_MSSQL_CONTAINER_NAME>"
$
port: 1433
$
$
# Enable comprehensive database metrics
$
metrics:
$
sqlserver.database.count:
$
enabled: true
$
sqlserver.database.io:
$
enabled: true
$
sqlserver.database.latency:
$
enabled: true
$
sqlserver.database.operations:
$
enabled: true
$
sqlserver.database.tempdb.space:
$
enabled: true
$
sqlserver.database.tempdb.version_store.size:
$
enabled: true
$
sqlserver.deadlock.rate:
$
enabled: true
$
sqlserver.os.wait.duration:
$
enabled: true
$
sqlserver.processes.blocked:
$
enabled: true
$
sqlserver.memory.grants.pending.count:
$
enabled: true
$
sqlserver.database.file.size:
$
enabled: true
$
sqlserver.memory.area:
$
enabled: true
$
$
# Enable query sample, top query, query plan, and top procedure log collection
$
events:
$
db.server.query_sample:
$
enabled: true
$
db.server.top_query:
$
enabled: true
$
db.server.query_plan:
$
enabled: true
$
db.server.top_procedure:
$
enabled: true
$
$
# Top query collection configuration
$
top_query_collection:
$
lookback_time: 60s
$
max_query_sample_count: 1000
$
top_query_count: 250
$
collection_interval: 60s
$
collect_full_query_text: true
$
allowed_comment_keys:
$
- nr_service_guid
$
$
# Query sample collection configuration
$
query_sample_collection:
$
max_rows_per_query: 100
$
collect_full_query_text: true
$
allowed_comment_keys:
$
- nr_service_guid
$
$
# Top stored procedure collection configuration
$
top_procedure_collection:
$
max_procedure_sample_count: 1000
$
top_procedure_count: 250
$
collection_interval: 60s
$
$
resource_attributes:
$
db.system.version:
$
enabled: true
$
sqlserver.db.edition:
$
enabled: true
$
$
processors:
$
memory_limiter:
$
check_interval: ${env:NR_MEM_LIMITER_CHECK_INTERVAL:-1s}
$
limit_mib: ${env:NR_MEM_LIMITER_LIMIT_MIB:-200}
$
spike_limit_mib: ${env:NR_MEM_LIMITER_SPIKE_MIB:-50}
$
$
exporters:
$
otlp:
$
endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>:4318"
$
headers:
$
api-key: "<YOUR_NEWRELIC_LICENSE_KEY>"
$
tls:
$
insecure: false
$
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
$
$
service:
$
telemetry:
$
metrics:
$
level: none
$
$
pipelines:
$
metrics:
$
receivers: [nrsqlserver]
$
processors: [memory_limiter]
$
exporters: [otlp]
$
$
logs:
$
receivers: [nrsqlserver]
$
processors: [memory_limiter]
$
exporters: [otlp]
$
EOF

Paramètres de configuration

paramètresDescription
<YOUR_MSSQL_CONTAINER_NAME>Le nom (ou le nom d’hôte résolvable par le DNS Docker) de votre conteneur SQL Server en cours d’exécution.
<YOUR_DB_USERNAME>L’identifiant de monitoring que vous avez créé dans Créer l’utilisateur de monitoring et accorder des droits.
<YOUR_DB_PASSWORD>Le mot de passe de l’identifiant de monitoring que vous avez créé dans Créer l’utilisateur de monitoring et accorder les autorisations.
<YOUR_NEWRELIC_OTLP_ENDPOINT>Votre point de terminaison OTLP New Relic (hôte uniquement, aucun schéma ni port ; :4318 est ajouté pour vous). Pour plus d’informations, consultez les points de terminaison OTLP New Relic.
<YOUR_NEWRELIC_LICENSE_KEY>Votre clé de licence New Relic.

configuration complète

Cette configuration se concentre sur le monitoring essentiel de la base de données pour votre environnement Docker. Pour activer un monitoring complet avec toutes les métriques disponibles, reportez-vous à la référence de configuration.

Démarrer le conteneur NRDOT Collector

Exécutez le collecteur sur le même réseau Docker que votre conteneur SQL Server :

bash
$
docker run -d \
>
--name nrdot-collector \
>
--network <YOUR_DOCKER_NETWORK> \
>
-v "$PWD/mssql-config.yaml:/etc/nrdot-collector/mssql-config.yaml" \
>
newrelic/nrdot-collector:latest \
>
--config /etc/nrdot-collector/mssql-config.yaml

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 pour détecter des erreurs. Les causes les plus courantes sont des problèmes d’indentation YAML dans mssql-config.yaml ou un conteneur SQL Server inaccessible :

bash
$
docker logs nrdot-collector

Conseil

Après avoir modifié mssql-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 SQL Server via l'UI de New Relic.

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

  1. Allez à one.newrelic.com > All capabilities > Databases.
  2. Dans la liste déroulante Entity type, sélectionnez MSSQL instance, puis cliquez sur Apply.
  3. Sélectionnez votre base de données SQL Server dans la liste des entités.

Référence des métriques

Découvrez les métriques disponibles collectées par le collecteur NRDOT.

Dépannage

Découvrez comment dépanner votre configuration de monitoring MSSQL dans New Relic.

Configurer la corrélation APM-base de données

Découvrez comment corréler les performances des applications avec les opérations de base de données dans New Relic.

Droits d'auteur © 2026 New Relic Inc.

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