Aperçu
Nous travaillons toujours sur cette fonctionnalité, mais nous aimerions que vous l'essayiez !
Cette fonctionnalité est actuellement fournie dans le cadre d'un aperçu conformément à nos politiques de pré-sortie.
New Relic permet désormais à votre équipe de monitorer les performances de votre base de données Microsoft SQL Server à l'aide de la distribution New Relic d'OpenTelemetry (NRDOT) et des fonctionnalités de monitoring de bases de données de New Relic. Cette intégration fournit des informations complètes sur les métriques de base de données, les performances des requêtes et la santé du système à l'aide du collecteur NRDOT.
Cette approche basée sur NRDOT complète notre On-Host Integration (OHI) existante en s'appuyant sur les standards OpenTelemetry pour le monitoring des bases de données, facilitant ainsi l'intégration avec votre pile d'observabilité existante.
Prérequis
Avant de commencer, assurez-vous d’avoir les éléments suivants :
Clé de licenceNew Relic valide
Versions de base de données prises en charge : SQL Server 2017 ou version ultérieure
Configuration de la base de données SQL Server :
- Accès administrateur à votre instance SQL Server (rôle
sysadminou équivalent) - Microsoft SQL Server qui prend en charge les instances gérées sur site
- Connectivité réseau entre le collecteur NRDOT et votre serveur SQL
- SQL Server Management Studio (SSMS) ou l'utilitaire
sqlcmd - Nom d'hôte ou adresse IP du serveur
- Numéro de port (généralement 1433) ou port personnalisé
- Authentification de domaine Windows ou SQL Server
- Préférence SSL
- Accès administrateur à votre instance SQL Server (rôle
Configuration requise :
- Système Windows ou Linux pour exécuter le collecteur NRDOT
- Connectivité réseau vers le point de terminaison OTLP de New Relic
Configurer le collecteur NRDOT pour le monitoring de Microsoft SQL Server
Vous pouvez utiliser le collecteur NRDOT pour monitorer vos bases de données Microsoft SQL Server. Le collecteur NRDOT est une distribution préconfigurée qui inclut des composants spécifiques à New Relic.
Pour installer et configurer le NRDOT Collector, suivez ces étapes :
Configurer le collecteur NRDOT
Installez le collecteur en fonction de votre système d'exploitation et de votre architecture.
Important
Il est recommandé d'installer le NRDOT Collector sur le même hôte que votre instance SQL Server afin de visualiser les métriques d'infrastructure pour le monitoring des performances des requêtes.
Configurer l'utilisateur de la base de données
Exécutez le script suivant en tant que root user/sysadmin pour créer l'utilisateur de monitoring newrelic et accorder des droits de lecture globaux.
Configurer le collecteur NRDOT
Remplacez votre config.yaml par le contenu ci-dessous :
Windows:
C:\Program Files (x86)\NRDOT Collector Host\config.yamlLinux:
/etc/nrdot-collector-host/config.yamlImportant
Si vous êtes déjà utilisateur de NRDOT Collector, assurez-vous de fusionner la configuration ci-dessus avec votre fichier
config.yamlexistant. Cela inclut l'ajout des nouveaux récepteurs, processeurs et exportateurs pour le monitoring de la base de données MSSQL tout en conservant vos configurations actuelles.# NRDOT Collector Configuration for New Relic SQL Server Integration# SQL Server On-Premises/VM Configurationextensions:health_check:receivers:otlp:protocols:grpc:http:hostmetrics:# Default collection interval is 60s. Lower if you need finer granularity.collection_interval: 60sscrapers:cpu:metrics:system.cpu.time:enabled: falsesystem.cpu.utilization:enabled: trueload:memory:metrics:system.memory.utilization:enabled: truepaging:metrics:system.paging.utilization:enabled: falsesystem.paging.faults:enabled: falsefilesystem:metrics:system.filesystem.utilization:enabled: truedisk:metrics:system.disk.merged:enabled: falsesystem.disk.pending_operations:enabled: falsesystem.disk.weighted_io_time:enabled: falsenetwork:metrics:system.network.connections:enabled: false# Uncomment to enable process metrics, which can be noisy but valuable.# processes:# process:# metrics:# process.cpu.utilization:# enabled: true# process.cpu.time:# enabled: falsefilelog:include:- /var/log/alternatives.log- /var/log/cloud-init.log- /var/log/auth.log- /var/log/dpkg.log- /var/log/syslog- /var/log/messages- /var/log/secure- /var/log/yum.lognewrelicsqlserver:hostname: "<YOUR_DB_HOST>"port: "<YOUR_DB_PORT>"username: "<USERNAME>"password: "<PASSWORD>"monitored_databases: []# timeout: 30s# collection_interval: 15s# query_monitoring_fetch_interval: 15# query_monitoring_response_time_threshold: 100# query_monitoring_count_threshold: 30# interval_calculator_cache_ttl_minutes: 10# Metric Category Toggles - Enable/disable entire categories of metrics# enable_instance_metrics: true# enable_database_metrics: true# enable_user_connection_metrics: true# enable_wait_time_metrics: true# enable_failover_cluster_metrics: true# enable_database_principals_metrics: true# enable_database_role_membership_metrics: true# enable_security_metrics: true# enable_lock_metrics: true# enable_thread_pool_metrics: true# enable_tempdb_metrics: trueprocessors:# group system.cpu metrics by cpumetricstransform:transforms:- include: system.cpu.utilizationaction: updateoperations:- action: aggregate_labelslabel_set: [ state ]aggregation_type: mean- include: system.paging.operationsaction: updateoperations:- action: aggregate_labelslabel_set: [ direction ]aggregation_type: sum# remove system.cpu metrics for statesfilter/exclude_cpu_utilization:metrics:datapoint:- 'metric.name == "system.cpu.utilization" and attributes["state"] == "interrupt"'- 'metric.name == "system.cpu.utilization" and attributes["state"] == "nice"'- 'metric.name == "system.cpu.utilization" and attributes["state"] == "softirq"'filter/exclude_memory_utilization:metrics:datapoint:- 'metric.name == "system.memory.utilization" and attributes["state"] == "slab_unreclaimable"'- 'metric.name == "system.memory.utilization" and attributes["state"] == "inactive"'- 'metric.name == "system.memory.utilization" and attributes["state"] == "cached"'- 'metric.name == "system.memory.utilization" and attributes["state"] == "buffered"'- 'metric.name == "system.memory.utilization" and attributes["state"] == "slab_reclaimable"'filter/exclude_memory_usage:metrics:datapoint:- 'metric.name == "system.memory.usage" and attributes["state"] == "slab_unreclaimable"'- 'metric.name == "system.memory.usage" and attributes["state"] == "inactive"'filter/exclude_filesystem_utilization:metrics:datapoint:- 'metric.name == "system.filesystem.utilization" and attributes["type"] == "squashfs"'filter/exclude_filesystem_usage:metrics:datapoint:- 'metric.name == "system.filesystem.usage" and attributes["type"] == "squashfs"'- 'metric.name == "system.filesystem.usage" and attributes["state"] == "reserved"'filter/exclude_filesystem_inodes_usage:metrics:datapoint:- 'metric.name == "system.filesystem.inodes.usage" and attributes["type"] == "squashfs"'- 'metric.name == "system.filesystem.inodes.usage" and attributes["state"] == "reserved"'filter/exclude_system_disk:metrics:datapoint:- 'metric.name == "system.disk.operations" and IsMatch(attributes["device"], "^loop.*") == true'- 'metric.name == "system.disk.merged" and IsMatch(attributes["device"], "^loop.*") == true'- 'metric.name == "system.disk.io" and IsMatch(attributes["device"], "^loop.*") == true'- 'metric.name == "system.disk.io_time" and IsMatch(attributes["device"], "^loop.*") == true'- 'metric.name == "system.disk.operation_time" and IsMatch(attributes["device"], "^loop.*") == true'filter/exclude_system_paging:metrics:datapoint:- 'metric.name == "system.paging.usage" and attributes["state"] == "cached"'- 'metric.name == "system.paging.operations" and attributes["type"] == "cached"'filter/exclude_network:metrics:datapoint:- 'IsMatch(metric.name, "^system.network.*") == true and attributes["device"] == "lo"'attributes/exclude_system_paging:include:match_type: strictmetric_names:- system.paging.operationsactions:- key: typeaction: delete# Transform to clear description and unit fieldstransform/clear_metadata:metric_statements:- context: metricstatements:- set(metric.description, "")- set(metric.unit, "")# Filter to only include execution plan and event metrics (for logs conversion)filter/exec_plan_include:metrics:include:match_type: strictmetric_names:- sqlserver.slowquery.query_details- sqlserver.execution.plan- sqlserver.blocking_query.details- sqlserver.activequery.query_details# Filter to exclude execution plan and event metrics (from main metrics pipeline)filter/exec_plan_exclude:metrics:exclude:match_type: strictmetric_names:- sqlserver.slowquery.query_details- sqlserver.execution.plan- sqlserver.blocking_query.details- sqlserver.activequery.query_detailscumulativetodelta:max_staleness: 5minclude:match_type: strictmetrics:# Wait stats (sys.dm_os_wait_stats)- sqlserver.wait_stats.latch.wait_time_ms- sqlserver.wait_stats.latch.waiting_tasks_count- sqlserver.wait_stats.wait_time_ms- sqlserver.wait_stats.waiting_tasks_count# Instance stats (sys.dm_os_performance_counters)- sqlserver.stats.sql_compilations_per_sec- sqlserver.stats.sql_recompilations_per_sec- sqlserver.stats.lock_waits_per_sec- sqlserver.stats.deadlocks_per_sec- sqlserver.stats.user_errors_per_sec- sqlserver.stats.kill_connection_errors_per_sec- sqlserver.access.page_splits_per_sec- sqlserver.buffer.checkpoint_pages_per_sec- sqlserver.bufferpool.batch_requests_per_sec- sqlserver.instance.transactions_per_sec- sqlserver.instance.forced_parameterizations_per_sec- sqlserver.instance.full_scans_rate- sqlserver.instance.lock_timeouts_rate# Database log (sys.dm_os_performance_counters)- sqlserver.database.log.flushes_per_sec- sqlserver.database.log.bytes_flushed_per_sec- sqlserver.database.log.flush_waits_per_sec# Failover cluster- sqlserver.failover_cluster.log_bytes_received_per_sec# User connections- sqlserver.user_connections.authentication.logins_per_secdeltatorate:metrics:- sqlserver.wait_stats.latch.wait_time_ms- sqlserver.wait_stats.latch.waiting_tasks_count- sqlserver.wait_stats.wait_time_ms- sqlserver.wait_stats.waiting_tasks_count- sqlserver.stats.sql_compilations_per_sec- sqlserver.stats.sql_recompilations_per_sec- sqlserver.stats.lock_waits_per_sec- sqlserver.stats.deadlocks_per_sec- sqlserver.stats.user_errors_per_sec- sqlserver.stats.kill_connection_errors_per_sec- sqlserver.access.page_splits_per_sec- sqlserver.buffer.checkpoint_pages_per_sec- sqlserver.bufferpool.batch_requests_per_sec- sqlserver.instance.transactions_per_sec- sqlserver.instance.forced_parameterizations_per_sec- sqlserver.instance.full_scans_rate- sqlserver.instance.lock_timeouts_rate- sqlserver.database.log.flushes_per_sec- sqlserver.database.log.bytes_flushed_per_sec- sqlserver.database.log.flush_waits_per_sec- sqlserver.failover_cluster.log_bytes_received_per_sec- sqlserver.user_connections.authentication.logins_per_sectransform/host:metric_statements:- context: metricstatements:- set(metric.description, "")- set(metric.unit, "")transform:trace_statements:- context: spanstatements:- truncate_all(span.attributes, 4095)- truncate_all(resource.attributes, 4095)log_statements:- context: logstatements:- truncate_all(log.attributes, 4095)- truncate_all(resource.attributes, 4095)# used to prevent out of memory situations on the collectormemory_limiter:check_interval: 1slimit_mib: ${env:NEW_RELIC_MEMORY_LIMIT_MIB:-100}batch:resourcedetection:detectors: ["system"]system:hostname_sources: ["os"]resource_attributes:host.id:enabled: trueresourcedetection/db_safe:detectors: ["system"]override: falsesystem:hostname_sources: ["os"]resource_attributes:host.id:enabled: trueresourcedetection/cloud:detectors: ["gcp", "ec2", "azure"]timeout: 2soverride: trueresourcedetection/env:detectors: ["env"]timeout: 2soverride: trueconnectors:metricsaslogs:include_resource_attributes: trueinclude_scope_info: trueexporters:otlphttp:endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>"headers:api-key: "<YOUR_NEWRELIC_API_KEY>"compression: gzipservice:pipelines:metrics/host:receivers: [hostmetrics]processors:- memory_limiter- metricstransform- filter/exclude_cpu_utilization- filter/exclude_memory_utilization- filter/exclude_memory_usage- filter/exclude_filesystem_utilization- filter/exclude_filesystem_usage- filter/exclude_filesystem_inodes_usage- filter/exclude_system_disk- filter/exclude_network- attributes/exclude_system_paging- transform/host- resourcedetection- resourcedetection/cloud- resourcedetection/db_safe- resourcedetection/env- cumulativetodelta- deltatorate- batchexporters: [otlphttp]traces:receivers: [otlp]processors: [memory_limiter, transform, resourcedetection, resourcedetection/cloud, resourcedetection/env, batch]exporters: [otlphttp]metrics:receivers: [newrelicsqlserver, otlp]processors: [memory_limiter, transform, resourcedetection, resourcedetection/cloud, resourcedetection/env, filter/exec_plan_exclude, batch]exporters: [otlphttp]logs:receivers: [metricsaslogs, otlp]processors: [memory_limiter, transform, resourcedetection, resourcedetection/cloud, resourcedetection/env, batch]exporters: [otlphttp]metrics/exec_plan_to_logs:receivers: [newrelicsqlserver, otlp]processors: [memory_limiter, transform, resourcedetection, resourcedetection/cloud, resourcedetection/env, filter/exec_plan_include, batch]exporters: [metricsaslogs]extensions: [health_check]Paramètres de configuration
Le tableau suivant décrit les principaux paramètres de configuration du récepteur
newrelicsqlserver:paramètres
Description
<YOUR_DB_HOST>Saisissez le nom d'hôte ou l'adresse IP de SQL Server
<YOUR_DB_PORT>Saisissez votre numéro de port SQL Server. La valeur par défaut est définie sur 1433.
<USERNAME>Saisissez votre nom d'utilisateur de base de données pour l'authentification
<PASSWORD>Saisissez le mot de passe de votre base de données pour l'authentification
<YOUR_NEWRELIC_OTLP_ENDPOINT>Saisissez le point de terminaison OTLP New Relic. Pour plus d'informations, consultez la documentation sur les endpoints OTLP New Relic.
<YOUR_NEWRELIC_API_KEY>Saisissez votre clé API New Relic.
query_monitoring_response_time_thresholdTemps de réponse minimum en millisecondes pour considérer une requête comme lente. La valeur par défaut est définie sur
100ms.
query_monitoring_count_thresholdNombre minimal d'exécutions pour inclure une requête dans le monitoring. La valeur par défaut est définie sur
30.
query_monitoring_fetch_intervalIntervalle en secondes pour récupérer les données de monitoring des requêtes. La valeur par défaut est définie sur
15secondes.
collection_intervalIntervalle en secondes pour collecter les métriques. La valeur par défaut est définie sur
15s.
Redémarrer le collecteur NRDOT
Après avoir mis à jour votre configuration, redémarrez le service du collecteur NRDOT :
Pour Windows, pour redémarrer le service NRDOT Collector, exécutez :
bash$net stop nrdot-collector-host$net start nrdot-collector-hostPour Linux, pour redémarrer le service NRDOT Collector, exécutez :
bash$sudo systemctl restart nrdot-collector-hostConseil
Redémarrez toujours le service de collecte NRDOT après avoir modifié la configuration pour vous assurer que les nouveaux paramètres soient pris en compte.
(Facultatif) Configurer la corrélation APM-base de données
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 base de données. Cette fonctionnalité vous permet de voir exactement quelles applications génèrent des workloads de base de données spécifiques. Pour plus d'informations, reportez-vous à configurer l'identification du service de base de données pour obtenir la corrélation APM-base de données dans New Relic.
Important
Pour afficher les données de performance de la base de données dans APM, les deux entités doivent se trouver dans le même compte New Relic. Si les entités se trouvent dans des comptes New Relic différents, vous devez avoir accès aux deux comptes pour visualiser les données.
(Facultatif) Configurer la gestion des secrets
La fonctionnalité de gestion des secrets vous permet de gérer en toute sécurité des informations sensibles, telles que les identifiants de base de données. Cela permet de renforcer la sécurité de votre configuration de supervision en évitant de coder en dur des données sensibles dans les fichiers de configuration. Pour plus d'informations, consultez la gestion des secrets.
Trouvez et utilisez vos données
Une fois vos données collectées, vous pouvez accéder à un monitoring complet des bases de données SQL Server via l'interface utilisateur de New Relic.
Pour trouver votre entité de base de données SQL Server dans New Relic :
- Allez à https://one.newrelic.com > All Capabilities > Databases.
- Définissez les critères de recherche comme
instrumentation.provider = opentelemetry. - Sélectionnez votre base de données SQL Server dans la liste des entités.
Commandes prises en charge par le collecteur NRDOT
Pour gérer le service NRDOT Collector, consulter les logs ou vérifier l'état du service, utilisez les commandes disponibles suivantes selon votre système d'exploitation.
Dépannage
Si vous rencontrez des problèmes de connectivité réseau avec le collecteur NRDOT, exécutez les commandes suivantes pour tester la connectivité vers votre instance SQL Server sur le port 1433 :
Pour Windows, exécutez :
bash$Test-NetConnection -ComputerName <YOUR_IP_ADDRESS> -Port <YOUR_PORT_NUMBER>Pour Linux, exécutez :
bash$nc -zv <YOUR_IP_ADDRESS> <YOUR_PORT_NUMBER>
Métriques disponibles
Monitorez les performances de votre base de données SQL Server avec des métriques organisées par indicateurs de configuration. Les métriques par défaut sont collectées automatiquement pour les fonctionnalités de l'interface utilisateur New Relic. Vous pouvez également utiliser les métriques supplémentaires fournies pour obtenir des informations plus avancées et approfondies lorsque vous activez des scrapers spécifiques.
Métriques par défaut
Ces métriques sont essentielles pour les fonctionnalités de monitoring SQL Server de New Relic et sont collectées automatiquement, quelle que soit votre configuration.
Métriques supplémentaires
Activez ces métriques supplémentaires au besoin pour obtenir des informations plus approfondies sur les performances et l'état de santé de votre base de données SQL Server.
Et ensuite ?
Après avoir configuré le monitoring de la base de données SQL Server avec NRDOT :
- 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