Obtenez des informations détaillées complètes sur les performances de votre SQL Server grâce au monitoring de base de données, à l'analyse des requêtes et aux métriques de santé du système à l'aide du collecteur New Relic Distribution of OpenTelemetry (NRDOT).
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
Si vous utilisez SQL Server dans un environnement Linux RDS, consultez l’ instrumentation Linux pour RDS.
Prérequis
Un compte New Relic avec une clé de licence valide.
Connectivité réseau vers le point de terminaison OTLP New Relic pour votre région.
Prérequis SQL Server :
- SQL Server 2017 ou version ultérieure.
- Accès administrateur à SQL Server (rôle
sysadminou équivalent). - Connectivité réseau entre le collecteur et SQL Server sur le port
1433ou un port personnalisé. - L’utilitaire
sqlcmdinstallé sur votre système Linux.
Installer le collecteur NRDOT
Téléchargez et installez le package NRDOT pour votre distribution Linux. Remplacez <NRDOT_VERSION> par le dernier tag de sortie de la page nrdot-collector-releases.
Conseil
Nous recommandons d'installer le NRDOT Collector sur le même hôte que l'instance SQL Server afin de visualiser les métriques au niveau de l'infrastructure pour le monitoring des performances des requêtes.
Créer un utilisateur de monitoring
Exécutez ce script en tant qu’utilisateur root pour créer l’utilisateur de monitoring newrelic et accorder les autorisations nécessaires pour la collecte des métriques SQL Server.
Créez un fichier de configuration nommé
nr-grant-permission.sql.Collez le script SQL suivant pour créer l’utilisateur de monitoring
newrelicet remplacez<YOUR_PASSWORD>par le mot de passe souhaité :USE [master];GOCREATE LOGIN [newrelic] WITH PASSWORD = '<YOUR_PASSWORD>';GO-- Instance-level permissionsGRANT VIEW SERVER STATE TO [newrelic];GRANT VIEW ANY DEFINITION TO [newrelic];GRANT VIEW ANY DATABASE TO [newrelic];GO-- Grant read access privileges to all user databasesDECLARE @name SYSNAME;DECLARE db_cursor CURSOR READ_ONLY FORWARD_ONLY FORSELECT [name]FROM [master].[sys].[databases]WHERE [name] NOT IN ('master', 'msdb', 'model', 'rdsadmin', 'distribution')AND [state] = 0; -- Only online databasesOPEN db_cursor;FETCH NEXT FROM db_cursor INTO @name;WHILE @@FETCH_STATUS = 0BEGINBEGIN TRYEXEC('USE [' + @name + '];IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = ''newrelic'')BEGINCREATE USER [newrelic] FOR LOGIN [newrelic];END;GRANT VIEW DATABASE STATE TO [newrelic];');END TRYBEGIN CATCHPRINT 'Error on ' + @name + ': ' + ERROR_MESSAGE();END CATCHFETCH NEXT FROM db_cursor INTO @name;ENDCLOSE db_cursor;DEALLOCATE db_cursor;GOExécutez le script en utilisant
sqlcmdavec tout identifiant ayant l’autorisation de créer des identifiants et d’accorder des autorisations au niveau du serveur (par exemple, l’identifiantsa, ou un autre compte avec le rôlesysadmin). Remplacez<YOUR_ADMIN_USERNAME>et<YOUR_ADMIN_PASSWORD>par les informations d’identification de cet identifiant :bash$sqlcmd -S <YOUR_DB_ENDPOINT> -U <YOUR_ADMIN_USERNAME> -P '<YOUR_ADMIN_PASSWORD>' -C -i nr-grant-permission.sql(Facultatif) Vérifiez que l’utilisateur a été créé avec succès et dispose des autorisations appropriées :
bash$sqlcmd -S <YOUR_DB_ENDPOINT> -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 = 'newrelic';"Résultat attendu :
bashUser Permission_Granted-------------------------------------------------------------------------------------newrelic CONNECT SQLnewrelic VIEW ANY DEFINITIONnewrelic VIEW ANY DATABASEnewrelic VIEW SERVER STATECette sortie confirme que votre utilisateur a été créé avec succès avec les permissions requises au niveau du serveur.
Conseil
Pour gérer en toute sécurité les informations sensibles, telles que les identifiants de base de données, stockez-les dans des outils de gestion des secrets.
Configurer le collecteur NRDOT
Choisissez votre option de configuration en fonction de vos exigences de monitoring :
- Créez un fichier de configuration nommé
mssql-config.yaml:
$sudo nano /etc/nrdot-collector/mssql-config.yaml- Ajoutez la configuration suivante au fichier
mssql-config.yamlcréé à l’étape précédente :
configuration complète
Cette configuration se concentre sur le monitoring essentiel de la base de données pour votre environnement SQL Server. Pour activer un monitoring complet avec toutes les métriques disponibles, reportez-vous à la référence de configuration.
1receivers:2nrsqlserver:3 collection_interval: 15s4 # Direct connection to SQL Server5 username: newrelic6 password: YOUR_PASSWORD7 server: sqlserver.example.com8 port: 14339
10 # Enable comprehensive database metrics11 metrics:12 sqlserver.database.count:13 enabled: true14 sqlserver.database.io:15 enabled: true16 sqlserver.database.latency:17 enabled: true18 sqlserver.database.operations:19 enabled: true20 sqlserver.database.tempdb.space:21 enabled: true22 sqlserver.database.tempdb.version_store.size:23 enabled: true24 sqlserver.deadlock.rate:25 enabled: true26 sqlserver.os.wait.duration:27 enabled: true28 sqlserver.processes.blocked:29 enabled: true30 sqlserver.memory.grants.pending.count:31 enabled: true32 sqlserver.database.file.size:33 enabled: true34 sqlserver.memory.area:35 enabled: true36
37 # Enable query sample, top query, query plan, and top procedure log collection38 events:39 db.server.query_sample:40 enabled: true41 db.server.top_query:42 enabled: true43 db.server.query_plan:44 enabled: true45 db.server.top_procedure:46 enabled: true47
48 # Top query collection configuration49 top_query_collection:50 lookback_time: 60s51 max_query_sample_count: 100052 top_query_count: 25053 collection_interval: 60s54 collect_full_query_text: true55 allowed_comment_keys:56 - nr_service_guid57
58 # Query sample collection configuration59 query_sample_collection:60 max_rows_per_query: 10061 collect_full_query_text: true62 allowed_comment_keys:63 - nr_service_guid64
65 # Top stored procedure collection configuration66 top_procedure_collection:67 max_procedure_sample_count: 100068 top_procedure_count: 25069 collection_interval: 60s70
71 resource_attributes:72 db.system.version:73 enabled: true74 sqlserver.db.edition:75 enabled: true76
77processors:78memory_limiter:79 check_interval: ${env:NR_MEM_LIMITER_CHECK_INTERVAL:-1s}80 limit_mib: ${env:NR_MEM_LIMITER_LIMIT_MIB:-200}81 spike_limit_mib: ${env:NR_MEM_LIMITER_SPIKE_MIB:-50}82
83exporters:84otlp:85 endpoint: https://otlp.nr-data.net:431886 headers:87 api-key: YOUR_LICENSE_KEY88 tls:89 insecure: false90 compression: gzip91
92 sending_queue:93 enabled: true94 sizer: bytes95 queue_size: 100_000_00096 num_consumers: 1097 batch:98 sizer: bytes99 max_size: 1_000_000100 min_size: 0101 flush_timeout: 5s102
103service:104telemetry:105 metrics:106 level: none107
108pipelines:109 metrics:110 receivers: [nrsqlserver]111 processors: [memory_limiter]112 exporters: [otlp]113
114 logs:115 receivers: [nrsqlserver]116 processors: [memory_limiter]117 exporters: [otlp]Conseil
Le pipeline
logsne transporte ni les logs de débogage du collecteur, ni les logs internes de l’agent. Il transmet la télémétrie des requêtes SQL Server, y compris le texte des requêtes, les plans d’exécution, et les données d’exemple. Le Récepteurnrsqlservercapture cette télémétrie via les événementsdb.server.query_sample,db.server.top_query,db.server.query_plan, etdb.server.top_procedureémis sous forme d’enregistrements de log OpenTelemetry.L’événement
db.server.top_procedurenécessite SQL Server 2017 CU3 ou une version ultérieure, qui a introduit la prise en charge desys.dm_exec_procedure_stats.total_spills. Sur les versions antérieures, cet événement n’émet pas de données et génère un log d’erreur. Les autres événements ne sont pas affectés. L’accès àsys.dm_exec_procedure_statsnécessiteVIEW SERVER STATE(ouVIEW SERVER PERFORMANCE STATE, selon la version de SQL Server). De plus,VIEW ANY DEFINITIONest requis pour queOBJECT_NAMEetOBJECT_SCHEMA_NAMEse résolvent correctement dans toutes les bases de données utilisateur, etCONNECT SQLest nécessaire pour configurer les sessions initiales. L’utilisateur de monitoring créé dans Créer un utilisateur de monitoring inclut les 3 permissions.
Mettre à jour la configuration du Collector NRDOT
Après avoir configuré votre fichier YAML avec les entrées interactives ci-dessus, terminez la configuration du Collector NRDOT :
Modifiez le fichier de configuration du service :
bash$sudo nano /etc/nrdot-collector/nrdot-collector.confMettez à jour le chemin de configuration pour pointer vers votre nouveau fichier
mssql-config.yaml:bash$OTELCOL_CONFIG="/etc/nrdot-collector/mssql-config.yaml"(Facultatif) Validez la configuration du Collector NRDOT :
bash$sudo /usr/bin/nrdot-collector validate --config=/etc/nrdot-collector/mssql-config.yamlConseil
Pour corréler les performances de votre application avec les opérations de base de données, vous pouvez configurer l’identification du service de bases de données. Pour plus d’informations, reportez-vous au guide de configuration de l’identification du service de bases de données.
Redémarrer NRDOT Collector
Après avoir mis à jour votre configuration, redémarrez le service NRDOT Collector :
$sudo systemctl restart nrdot-collectorConseil
Redémarrez toujours le service NRDOT Collector après avoir modifié la configuration pour vous assurer que les nouveaux paramètres soient pris en compte.
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 :
Allez à one.newrelic.com > All capabilities > Databases.
Dans la liste déroulante Entity type, sélectionnez MSSQL instance, puis cliquez sur Apply.
Sélectionnez votre base de données SQL Server dans la liste des entités.
Après avoir configuré le monitoring SQL Server avec NRDOT, vous pouvez :
- Créez des dashboards personnalisés pour visualiser les métriques de votre base de données
- Configurer des alertes pour les seuils critiques de performances des bases de données
- Explorez vos données à l’aide des fonctionnalités de requête de New Relic
Documentation associée
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.
Dépannage
Découvrez comment dépanner votre configuration de monitoring MSSQL dans New Relic.
Référence des métriques
Découvrez les métriques disponibles collectées par le collecteur NRDOT.