• /
  • EnglishEspañolFrançais日本語한국어Português
  • 로그인지금 시작하기

사용자의 편의를 위해 제공되는 기계 번역입니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하시기 바랍니다.

문제 신고

NRDOT을 이용한 Microsoft SQL Server 모니터링

시사

이 기능은 아직 개발 중이지만 꼭 사용해 보시기 바랍니다!

이 기능은 현재 사전 출시 정책 에 따라 미리보기의 일부로 제공됩니다.

뉴렐릭은 이제 뉴렐릭의 데이터베이스 모니터링 기능과 함께 뉴렐릭 NRDOT(Distribution of OpenTelemetry)를 사용하여 Microsoft SQL Server 데이터베이스 성능을 모니터링할 수 있는 권한을 팀에 부여합니다. 이 통합은 NRDOT 수집기를 사용하여 데이터베이스 지표, 쿼리 성능 및 시스템 상태에 대한 포괄적인 인사이트를 제공합니다.

이 NRDOT 기반 접근 방식은 모니터링을 위한 OpenTelemetry 데이터베이스 표준을 활용하여 기존 온호스트 통합(OHI)을 보완하고 기존 옵저버빌리티 그리드와 통합을 더 쉽게 만듭니다.

전제 조건

시작하기 전에 다음 사항이 있는지 확인하세요.

  • 유효한 뉴렐릭 클러스터

  • 지원되는 데이터베이스 버전: SQL Server 2017 이상

  • SQL Server 데이터베이스 설정:

    • SQL Server 인스턴스에 대한 관리자 액세스 권한(sysadmin 역할 또는 그에 상응하는 권한)이 필요합니다.
    • 온프레미스 관리형 인스턴스를 지원하는 Microsoft SQL Server
    • NRDOT 수집기와 SQL Server 간의 네트워크 연결
    • SQL Server Management Studio(SSMS) 또는 sqlcmd 유틸리티
    • 서버 호스트명 또는 IP 주소
    • 포트 번호(일반적으로 1433) 또는 사용자 지정 포트
    • Windows 도메인 또는 SQL Server 인증
    • SSL 기본 설정
  • 시스템 요구사항:

    • NRDOT 수집기를 실행하려면 Windows 또는 Linux 시스템이 필요합니다.
    • 뉴렐릭의 OTLP 엔드포인트에 대한 네트워크 연결

Microsoft SQL Server 모니터링을 위해 NRDOT Collector를 설정하세요.

NRDOT 수집기를 사용하여 Microsoft SQL Server 데이터베이스를 모니터링할 수 있습니다. NRDOT 수집기는 뉴럴릭 관련 구성 요소를 포함하는 사전 구성된 배포판입니다.

NRDOT Collector 설치 및 구성하려면 다음 단계를 따르십시오.

NRDOT Collector설정하세요

귀하의 운영 시스템과 그에 맞춰 수집기를 설치하세요.

중요

쿼리 성능 모니터링을 위한 인프라 수준 메트릭을 보려면 NRDOT Collector를 SQL Server 인스턴스와 동일한 호스트에 설치하는 것이 좋습니다.

데이터베이스 사용자 구성

다음 스크립트를 root user/sysadmin 사용자 권한으로 실행하여 newrelic 모니터링 사용자를 생성하고 전역 읽기 권한을 부여하십시오.

NRDOT Collector구성

config.yaml 부분을 아래 내용으로 바꾸세요:

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

  • 리눅스: /etc/nrdot-collector-host/config.yaml

    중요

    기존 NRDOT Collector 사용자라면 위의 설정을 기존 config.yaml 파일과 병합하십시오. 여기에는 현재 설정을 유지하면서 MSSQL 데이터베이스 모니터링을 위한 새로운 수신자, 프로세서 및 내보내기를 추가하는 작업이 포함됩니다.

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

    구성 매개변수

    다음 표에서는 newrelicsqlserver 수신자에 대한 주요 설정 초기화에 대해 설명합니다.

    매개변수

    설명

    <YOUR_DB_HOST>

    SQL Server 호스트명 또는 IP 주소를 입력하십시오.

    <YOUR_DB_PORT>

    SQL Server 포트 번호를 입력하십시오. 기본값은 1433으로 설정되어 있습니다.

    <USERNAME>

    인증을 위해 데이터베이스 사용자 이름을 입력하세요.

    <PASSWORD>

    인증을 위해 데이터베이스 비밀번호를 입력하세요.

    <YOUR_NEWRELIC_OTLP_ENDPOINT>

    뉴렐릭 OTLP 엔드포인트를 입력하세요. 자세한 내용은 뉴렐릭 OTLP 엔드포인트 문서를 참조하세요.

    <YOUR_NEWRELIC_API_KEY>

    뉴렐릭 API 키를 입력하세요.

    query_monitoring_response_time_threshold

    쿼리가 느리다고 간주되는 최소 응답 시간(밀리초)입니다. 기본값은

    100

    ms로 설정되어 있습니다.

    query_monitoring_count_threshold

    모니터링에 쿼리를 포함하기 위한 최소 실행 횟수입니다. 기본값은

    30

    으로 설정되어 있습니다.

    query_monitoring_fetch_interval

    쿼리 모니터링 데이터를 가져오는 간격(초). 기본값은

    15

    초로 설정되어 있습니다.

    collection_interval

    수집 간격(초). 기본값은

    15s

    으로 설정되어 있습니다.

NRDOT 수집기 재시작

설정을 업데이트한 후 NRDOT 수집기 서비스를 다시 시작하십시오.

  • Windows에서 NRDOT Collector 서비스를 다시 시작하려면 다음 명령을 실행하십시오.

    bash
    $
    net stop nrdot-collector-host
    $
    net start nrdot-collector-host
  • Linux에서 NRDOT Collector 서비스를 다시 시작하려면 다음 명령을 실행하십시오.

    bash
    $
    sudo systemctl restart nrdot-collector-host

    설정을 변경한 후에는 반드시 NRDOT 수집기 서비스를 다시 시작하여 새 설정이 적용되도록 하십시오.

(선택 사항) APM-데이터베이스 상관 관계 설정

애플리케이션 성능과 데이터베이스 작업 간의 상관관계를 파악하려면 데이터베이스 서비스 식별을 설정할 수 있습니다. 이를 통해 특정 데이터베이스워크로드 기능을 생성하는 기능을 정확하게 확인할 수 있습니다. 자세한 내용은 뉴렐릭에서 APM- 데이터베이스 상관 관계를 가져오기 위한 데이터베이스 서비스 식별 설정을 참조하세요.

중요

APM 에서 데이터베이스 성능 데이터를 보려면 두 가지 모두 동일한 뉴렐릭 계정에 있어야 합니다. 만약 데이터가 서로 다른 뉴럴릭 계정에 있다면, 데이터를 보려면 두 계정 모두에 접근 권한이 있어야 합니다.

(선택 사항) 비밀 관리 구성

비밀 관리 기능을 사용하면 데이터베이스 자격 증명과 같은 중요한 정보를 안전하게 관리할 수 있습니다. 이렇게 하면 구성 파일에 민감한 데이터를 하드코딩하는 것을 방지하여 모니터링 설정의 보안을 강화할 수 있습니다. 자세한 내용은 비밀 관리 부분 을 참조하십시오.

데이터 찾기 및 사용

데이터가 수집되면 뉴렐릭의 UI 통해 포괄적인 SQL Server 데이터베이스 모니터링에 액세스할 수 있습니다.

뉴렐릭에서 SQL Server 데이터베이스를 찾으려면 다음을 수행하세요.

  1. https://one.newrelic.com > All Capabilities > Databases 으)로 이동합니다.
  2. 검색 기준을 instrumentation.provider = opentelemetry 으로 설정합니다.
  3. 모임 목록에서 SQL Server 데이터베이스를 선택합니다.

NRDOT 수집기 지원 명령

NRDOT Collector 서비스를 관리하거나, 로그를 보거나, 서비스 상태를 확인하려면 운영 체제에 따라 다음 명령어를 사용하십시오.

문제점 해결

NRDOT Collector에서 네트워크 연결 문제가 발생하는 경우 다음 명령을 실행하여 1433번 포트의 SQL Server 인스턴스에 대한 연결을 테스트하십시오.

  • Windows의 경우 다음 명령을 실행하세요.

    bash
    $
    Test-NetConnection -ComputerName <YOUR_IP_ADDRESS> -Port <YOUR_PORT_NUMBER>
  • 리눅스에서는 다음 명령을 실행하세요:

    bash
    $
    nc -zv <YOUR_IP_ADDRESS> <YOUR_PORT_NUMBER>

사용 가능한 지표

설정 플래그로 구성된 지표로 SQL Server 데이터베이스 성능을 모니터링하세요. 뉴럴릭 UI 기능을 위해 기본 설정이 자동으로 수집됩니다. 제공된 추가 정보를 활용하여 특정 스크래퍼를 활성화하면 더욱 고급스럽고 심층적인 인사이트 정보를 얻을 수 있습니다.

기본 측정항목

이러한 지표는 뉴렐릭의 SQL Server 모니터링 기능에 필수적이며 설정에 관계없이 자동으로 수집됩니다.

추가 지표

SQL Server 데이터베이스 성능 및 상태에 대한 심층적인 인사이트를 위해 필요에 따라 이러한 추가 지표를 활성화합니다.

무엇 향후 계획

NRDOT을 사용하여 SQL Server 데이터베이스 모니터링을 설정한 후:

Copyright © 2026 New Relic Inc.

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