• /
  • EnglishEspañolFrançais日本語한국어Português
  • EntrarComeçar agora

Esta tradução de máquina é fornecida para sua comodidade.

Caso haja alguma divergência entre a versão em inglês e a traduzida, a versão em inglês prevalece. Acesse esta página para mais informações.

Criar um problema

Monitoramento do Microsoft SQL Server com NRDOT

Visualização

Ainda estamos trabalhando nesse recurso, mas adoraríamos que você experimentasse!

Atualmente, esse recurso é fornecido como parte de uma prévia, de acordo com nossas políticas de pré-lançamento.

A New Relic agora permite que sua equipe monitore o desempenho do banco de dados Microsoft SQL Server usando a New Relic Distribution of OpenTelemetry (NRDOT) com os recursos de monitoramento de banco de dados da New Relic. Esta integração fornece insights abrangentes sobre métricas de banco de dados, desempenho de consultas e saúde do sistema usando o coletor NRDOT.

Essa abordagem baseada em NRDOT complementa nossa Integração On-Host (OHI) existente, utilizando padrões OpenTelemetry para monitoramento de banco de dados, facilitando a integração com sua stack de observabilidade existente.

Pré-requisitos

Antes de começar, certifique-se de ter o seguinte:

  • Chave de licençada New Relic válida

  • Versões de banco de dados suportadas: SQL Server 2017 ou posterior

  • Configuração do banco de dados SQL Server:

    • Acesso administrativo à sua instância do SQL Server (função sysadmin ou equivalente)
    • Microsoft SQL Server que suporta instâncias gerenciadas on-premises
    • Conectividade de rede entre o coletor NRDOT e o seu SQL Server
    • SQL Server Management Studio (SSMS) ou utilitário sqlcmd
    • Nome do host ou endereço IP do servidor
    • Número da porta (geralmente 1433) ou porta personalizada
    • Autenticação de domínio do Windows ou do SQL Server
    • Preferência de SSL
  • Requisitos do sistema:

    • Sistema Windows ou Linux para executar o coletor NRDOT
    • Conectividade de rede para o endpoint OTLP da New Relic

Configurar o Coletor NRDOT para o monitoramento do Microsoft SQL Server

Você pode usar o coletor NRDOT para monitorar seus bancos de dados Microsoft SQL Server. O coletor NRDOT é uma distribuição pré-configurada que inclui componentes específicos da New Relic.

Para instalar e configurar o NRDOT Collector, siga estas etapas:

Configurar o Coletor NRDOT

Instale o coletor com base no seu sistema operacional e arquitetura.

Importante

Recomenda-se instalar o NRDOT Collector no mesmo host que sua instância do SQL Server para visualizar métricas de nível de infraestrutura para monitoramento de desempenho de consultas.

Configurar usuário do banco de dados

Execute o seguinte script como um root user/sysadmin para criar o usuário de monitoramento newrelic e conceder permissões globais de leitura.

Configurar o NRDOT Collector

Substitua seu config.yaml pelo conteúdo abaixo:

  • Windows: C:\Program Files (x86)\NRDOT Collector Host\config.yaml

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

    Importante

    Se você já é usuário do NRDOT Collector, certifique-se de mesclar a configuração acima com seu arquivo config.yaml existente. Isso inclui adicionar os novos receptores, processadores e exportadores para o monitoramento de banco de dados MSSQL, mantendo suas configurações atuais.

    # 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]

    Parâmetro de configuração

    A tabela a seguir descreve os principais parâmetros de configuração para o receptor newrelicsqlserver:

    Parâmetro

    Descrição

    <YOUR_DB_HOST>

    Insira o nome do host ou endereço IP do SQL Server

    <YOUR_DB_PORT>

    Insira o número da porta do SQL Server. O valor padrão está definido como 1433.

    <USERNAME>

    Insira seu nome de usuário do banco de dados para autenticação

    <PASSWORD>

    Insira a senha do seu banco de dados para autenticação

    <YOUR_NEWRELIC_OTLP_ENDPOINT>

    Insira o endpoint OTLP da New Relic. Para mais informações, consulte a documentação dos endpoints OTLP da New Relic.

    <YOUR_NEWRELIC_API_KEY>

    Insira sua chave de API da New Relic.

    query_monitoring_response_time_threshold

    Tempo mínimo de resposta em milissegundos para considerar uma consulta como lenta. O valor padrão é definido como

    100

    ms.

    query_monitoring_count_threshold

    Contagem mínima de execuções para incluir uma consulta no monitoramento. O valor padrão está definido como

    30

    .

    query_monitoring_fetch_interval

    Intervalo em segundos para buscar dados de monitoramento de consultas. O valor padrão está definido como

    15

    segundos.

    collection_interval

    Intervalo em segundos para coletar métricas. O valor padrão está definido como

    15s

    .

Reiniciar o coletor NRDOT

Após atualizar sua configuração, reinicie o serviço do coletor NRDOT:

  • Para Windows, para reiniciar o serviço NRDOT Collector, execute:

    bash
    $
    net stop nrdot-collector-host
    $
    net start nrdot-collector-host
  • Para Linux, para reiniciar o serviço NRDOT Collector, execute:

    bash
    $
    sudo systemctl restart nrdot-collector-host

    Dica

    Sempre reinicie o serviço do coletor NRDOT após fazer alterações na configuração para garantir que as novas configurações entrem em vigor.

(Opcional) Configurar a correlação entre APM e banco de dados

Para correlacionar o desempenho da sua aplicação com as operações de banco de dados, você pode configurar a identificação de serviço de banco de dados. Este recurso permite visualizar exatamente quais aplicativos estão gerando workloads específicas de banco de dados. Para mais informações, consulte configurar a identificação de serviço de banco de dados para obter a correlação APM-banco de dados no New Relic.

Importante

Para visualizar dados de desempenho do banco de dados no APM, ambas as entidades devem estar na mesma conta New Relic. Se as entidades estiverem em contas diferentes da New Relic, você deve ter acesso a ambas as contas para visualizar os dados.

(Opcional) Configurar o gerenciamento de segredos

O recurso de gerenciamento de segredos permite gerenciar com segurança informações confidenciais, como credenciais de banco de dados. Isso ajuda a aprimorar a segurança do seu ambiente de monitoramento ao evitar a inserção direta de dados sensíveis nos arquivos de configuração. Para mais informações, consulte gerenciamento de segredos.

Encontre e use seus dados

Assim que seus dados estiverem sendo coletados, você poderá acessar o monitoramento abrangente do banco de dados SQL Server por meio da interface do New Relic.

Para encontrar sua entidade de banco de dados SQL Server no New Relic:

  1. Vá para https://one.newrelic.com > All Capabilities > Databases.
  2. Defina os critérios de pesquisa como instrumentation.provider = opentelemetry.
  3. Selecione seu banco de dados SQL Server na lista de entidades.

Comandos suportados pelo coletor NRDOT

Para gerenciar o serviço NRDOT Collector, visualizar logs ou verificar o status do serviço, use os seguintes comandos disponíveis com base no seu sistema operacional.

Resolução de problemas

Se você encontrar problemas de conectividade de rede com o NRDOT Collector, execute os seguintes comandos para testar a conectividade com sua instância do SQL Server na porta 1433:

  • Para Windows, execute:

    bash
    $
    Test-NetConnection -ComputerName <YOUR_IP_ADDRESS> -Port <YOUR_PORT_NUMBER>
  • Para Linux, execute:

    bash
    $
    nc -zv <YOUR_IP_ADDRESS> <YOUR_PORT_NUMBER>

Métricas disponíveis

Monitore o desempenho do seu banco de dados SQL Server com métricas organizadas por flags de configuração. As métricas padrão são coletadas automaticamente para a funcionalidade da interface do New Relic. Você também pode usar as métricas adicionais fornecidas para obter insights avançados e mais profundos ao ativar scrapers específicos.

Métrica padrão

Essas métricas são essenciais para os recursos de monitoramento do SQL Server da New Relic e são coletadas automaticamente, independentemente da sua configuração.

Métricas adicionais

Habilite estas métricas adicionais conforme necessário para obter insights mais aprofundados sobre o desempenho e a saúde do seu banco de dados SQL Server.

Qual é o próximo

Após configurar o monitoramento de banco de dados SQL Server com o NRDOT:

Copyright © 2026 New Relic Inc.

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