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

Supervision de Microsoft SQL Server avec NRDOT

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 sysadmin ou é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
  • 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.yaml

  • Linux: /etc/nrdot-collector-host/config.yaml

    Important

    Si vous êtes déjà utilisateur de NRDOT Collector, assurez-vous de fusionner la configuration ci-dessus avec votre fichier config.yaml existant. 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 Configuration
    extensions:
    health_check:
    receivers:
    otlp:
    protocols:
    grpc:
    http:
    hostmetrics:
    # Default collection interval is 60s. Lower if you need finer granularity.
    collection_interval: 60s
    scrapers:
    cpu:
    metrics:
    system.cpu.time:
    enabled: false
    system.cpu.utilization:
    enabled: true
    load:
    memory:
    metrics:
    system.memory.utilization:
    enabled: true
    paging:
    metrics:
    system.paging.utilization:
    enabled: false
    system.paging.faults:
    enabled: false
    filesystem:
    metrics:
    system.filesystem.utilization:
    enabled: true
    disk:
    metrics:
    system.disk.merged:
    enabled: false
    system.disk.pending_operations:
    enabled: false
    system.disk.weighted_io_time:
    enabled: false
    network:
    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: false
    filelog:
    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.log
    newrelicsqlserver:
    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: true
    processors:
    # group system.cpu metrics by cpu
    metricstransform:
    transforms:
    - include: system.cpu.utilization
    action: update
    operations:
    - action: aggregate_labels
    label_set: [ state ]
    aggregation_type: mean
    - include: system.paging.operations
    action: update
    operations:
    - action: aggregate_labels
    label_set: [ direction ]
    aggregation_type: sum
    # remove system.cpu metrics for states
    filter/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: strict
    metric_names:
    - system.paging.operations
    actions:
    - key: type
    action: delete
    # Transform to clear description and unit fields
    transform/clear_metadata:
    metric_statements:
    - context: metric
    statements:
    - 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: strict
    metric_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: strict
    metric_names:
    - sqlserver.slowquery.query_details
    - sqlserver.execution.plan
    - sqlserver.blocking_query.details
    - sqlserver.activequery.query_details
    cumulativetodelta:
    max_staleness: 5m
    include:
    match_type: strict
    metrics:
    # 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_sec
    deltatorate:
    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_sec
    transform/host:
    metric_statements:
    - context: metric
    statements:
    - set(metric.description, "")
    - set(metric.unit, "")
    transform:
    trace_statements:
    - context: span
    statements:
    - truncate_all(span.attributes, 4095)
    - truncate_all(resource.attributes, 4095)
    log_statements:
    - context: log
    statements:
    - truncate_all(log.attributes, 4095)
    - truncate_all(resource.attributes, 4095)
    # used to prevent out of memory situations on the collector
    memory_limiter:
    check_interval: 1s
    limit_mib: ${env:NEW_RELIC_MEMORY_LIMIT_MIB:-100}
    batch:
    resourcedetection:
    detectors: ["system"]
    system:
    hostname_sources: ["os"]
    resource_attributes:
    host.id:
    enabled: true
    resourcedetection/db_safe:
    detectors: ["system"]
    override: false
    system:
    hostname_sources: ["os"]
    resource_attributes:
    host.id:
    enabled: true
    resourcedetection/cloud:
    detectors: ["gcp", "ec2", "azure"]
    timeout: 2s
    override: true
    resourcedetection/env:
    detectors: ["env"]
    timeout: 2s
    override: true
    connectors:
    metricsaslogs:
    include_resource_attributes: true
    include_scope_info: true
    exporters:
    otlphttp:
    endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>"
    headers:
    api-key: "<YOUR_NEWRELIC_API_KEY>"
    compression: gzip
    service:
    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
    - batch
    exporters: [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_threshold

    Temps de réponse minimum en millisecondes pour considérer une requête comme lente. La valeur par défaut est définie sur

    100

    ms.

    query_monitoring_count_threshold

    Nombre 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_interval

    Intervalle en secondes pour récupérer les données de monitoring des requêtes. La valeur par défaut est définie sur

    15

    secondes.

    collection_interval

    Intervalle 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-host
  • Pour Linux, pour redémarrer le service NRDOT Collector, exécutez :

    bash
    $
    sudo systemctl restart nrdot-collector-host

    Conseil

    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 :

  1. Allez à https://one.newrelic.com > All Capabilities > Databases.
  2. Définissez les critères de recherche comme instrumentation.provider = opentelemetry.
  3. 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 :

Droits d'auteur © 2026 New Relic Inc.

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