뉴렐릭 Distribution of OpenTelemetry(NRDOT) 수집기를 사용하여 데이터베이스 모니터링, 쿼리 분석 및 시스템 상태 메트릭을 통해 AWS RDS SQL Server 성능에 대한 포괄적인 인사이트를 얻으십시오.
대신 뉴렐릭 UI를 통해 설치하려면 one.newrelic.com > Integrations & Agents > MSSQL (OpenTelemetry) (으)로 이동하십시오. 화면의 지시에 따라 통합을 설정하십시오. 이 페이지에서는 수동 설치만 다룹니다.
팁
Linux 자체 호스팅 환경에서 SQL Server를 사용하는 경우, RDS용 Linux 계측을 참조하십시오.
전제 조건
유효한 라이선스 키가 있는 뉴렐릭 계정.
해당 리전의 뉴렐릭 OTLP 엔드포인트에 대한 네트워크 연결.
AWS RDS SQL Server 요구 사항:
- AWS RDS SQL Server 2017 이상.
- RDS 마스터 사용자 이름 및 비밀번호.
- 포트
1433또는 사용자 지정 포트에서 인바운드 연결을 허용하는 보안 그룹
Linux 시스템 요구사항:
- Linux 시스템에 설치된
sqlcmd유틸리티입니다.
- Linux 시스템에 설치된
NRDOT Collector설치하세요
Linux 배포판용 NRDOT 패키지를 다운로드하고 설치하십시오. <NRDOT_VERSION>을(를) nrdot-collector-releases 페이지의 최신 릴리스 태그로 교체하십시오.
중요
RDS SQL Server 인스턴스에 대한 네트워크 연결이 있는 EC2 인스턴스 또는 로컬 머신에 NRDOT Collector를 설치하십시오. 보안 그룹이 포트 1433(또는 사용자 지정 포트)에 대한 인바운드 연결을 허용하는지 확인하십시오.
모니터링 사용자 생성
루트 사용자로 이 스크립트를 실행하여 newrelic 모니터링 사용자를 생성하고 RDS SQL Server 메트릭을 수집하는 데 필요한 권한을 부여하십시오.
nr-grant-permission-rds.sql이라는 이름의 파일을 생성하십시오.다음 SQL 스크립트를 붙여넣어
newrelic모니터링 사용자를 생성하고<YOUR_PASSWORD>을(를) 원하는 비밀번호로 변경하십시오: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;GO로그인을 생성하고 서버 수준 권한을 부여할 수 있는 권한을 가진 로그인(예:
sa로그인 또는sysadmin역할을 가진 다른 계정)으로sqlcmd을(를) 사용하여 스크립트를 실행하십시오.<YOUR-RDS-ENDPOINT>을(를) RDS 엔드포인트로,<YOUR_MASTER_PASSWORD>을(를) 마스터 비밀번호로 바꾸십시오:bash$sqlcmd -S <YOUR-RDS-ENDPOINT> -U <YOUR_MASTER_USER> -P '<YOUR_MASTER_PASSWORD>' -C -i nr-grant-permission-rds.sql(선택 사항) 올바른 권한으로 사용자가 성공적으로 생성되었는지 확인하십시오:
bash$sqlcmd -S <YOUR-RDS-ENDPOINT> -U <YOUR_MASTER_USER> -P '<YOUR_MASTER_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';"
팁
- RDS 마스터 사용자 이름과 비밀번호를 사용하여 이러한 명령을 실행하십시오. 스크립트는 AWS에서 예약한
rdsadmin데이터베이스를 자동으로 제외합니다. - 데이터베이스 자격 증명과 같은 민감한 정보를 안전하게 관리하려면 시크릿 관리 도구에 저장하십시오.
NRDOT Collector구성
모니터링 요구 사항에 따라 설정 옵션을 선택하십시오:
mssql-config.yaml이라는 이름의 설정 파일을 생성합니다:bash$sudo nano /etc/nrdot-collector/mssql-config.yaml이전 단계에서 생성한
mssql-config.yaml파일에 다음 설정을 추가하십시오:전체 설정
이 설정은 RDS 환경을 위한 필수 데이터베이스 모니터링에 중점을 둡니다. 사용 가능한 모든 메트릭으로 포괄적인 모니터링을 활성화하려면 설정 참조를 확인하십시오.
mssql-config.yaml1receivers:2nrsqlserver:3collection_interval: 15s4# Connection details - Use your RDS endpoint5username: newrelic6password: YOUR_PASSWORD7server: mydb-instance.xxxxxxxxxxxx.us-east-1.rds.amazonaws.com8port: 1433910# Enable comprehensive database metrics11metrics:12sqlserver.database.count:13enabled: true14sqlserver.database.io:15enabled: true16sqlserver.database.latency:17enabled: true18sqlserver.database.operations:19enabled: true20sqlserver.database.tempdb.space:21enabled: true22sqlserver.database.tempdb.version_store.size:23enabled: true24sqlserver.deadlock.rate:25enabled: true26sqlserver.os.wait.duration:27enabled: true28sqlserver.processes.blocked:29enabled: true30sqlserver.memory.grants.pending.count:31enabled: true32sqlserver.database.file.size:33enabled: true34sqlserver.memory.area:35enabled: true3637# Enable query sample, top query, query plan, and top procedure log collection38events:39db.server.query_sample:40enabled: true41db.server.top_query:42enabled: true43db.server.query_plan:44enabled: true45db.server.top_procedure:46enabled: true4748# Top query collection configuration49top_query_collection:50lookback_time: 60s51max_query_sample_count: 100052top_query_count: 25053collection_interval: 60s54collect_full_query_text: true55allowed_comment_keys:56- nr_service_guid5758# Query sample collection configuration59query_sample_collection:60max_rows_per_query: 10061collect_full_query_text: true62allowed_comment_keys:63- nr_service_guid6465# Top stored procedure collection configuration66top_procedure_collection:67max_procedure_sample_count: 100068top_procedure_count: 25069collection_interval: 60s7071resource_attributes:72db.system.version:73enabled: true74sqlserver.db.edition:75enabled: true7677processors:78memory_limiter:79check_interval: ${env:NR_MEM_LIMITER_CHECK_INTERVAL:-1s}80limit_mib: ${env:NR_MEM_LIMITER_LIMIT_MIB:-200}81spike_limit_mib: ${env:NR_MEM_LIMITER_SPIKE_MIB:-50}8283exporters:84otlp:85endpoint: https://otlp.nr-data.net:431886headers:87api-key: YOUR_LICENSE_KEY88tls:89insecure: false90compression: gzip9192sending_queue:93enabled: true94sizer: bytes95queue_size: 100_000_00096num_consumers: 1097batch:98sizer: bytes99max_size: 1_000_000100min_size: 0101flush_timeout: 5s102103service:104telemetry:105metrics:106level: none107108pipelines:109metrics:110receivers: [nrsqlserver]111processors: [memory_limiter]112exporters: [otlp]113114logs:115receivers: [nrsqlserver]116processors: [memory_limiter]117exporters: [otlp]
팁
logs파이프라인은 수집기 디버그 또는 내부 에이전트 로그를 전달하지 않습니다. 이는 쿼리 텍스트, 실행 계획 및 샘플 데이터를 포함한 SQL Server 쿼리 텔레메트리를 전송합니다.nrsqlserver수신기는 OpenTelemetry 로그 레코드로 발생하는db.server.query_sample,db.server.top_query,db.server.query_plan및db.server.top_procedure이벤트를 통해 이 텔레메트리를 캡처합니다.db.server.top_procedure이벤트에는sys.dm_exec_procedure_stats.total_spills에 대한 지원이 도입된 SQL Server 2017 CU3 이상이 필요합니다. 이전 버전에서는 이 이벤트가 데이터를 내보내지 않고 오류를 로그에 기록합니다. 다른 이벤트는 영향을 받지 않습니다.sys.dm_exec_procedure_stats에 액세스하려면VIEW SERVER STATE(또는 SQL Server 버전에 따라VIEW SERVER PERFORMANCE STATE)이(가) 필요합니다. 또한 모든 사용자 데이터베이스에서OBJECT_NAME및OBJECT_SCHEMA_NAME이(가) 올바르게 확인되려면VIEW ANY DEFINITION이(가) 필요하며, 초기 세션을 설정하려면CONNECT SQL이(가) 필요합니다. 모니터링 사용자 생성에서 생성된 모니터링 사용자는 3가지 권한을 모두 포함합니다.
NRDOT Collector 설정 업데이트
위의 대화형 입력으로 YAML 파일을 구성한 후, NRDOT Collector 설정을 완료하십시오:
다음 명령을 사용하여 서비스 설정 파일을 편집합니다:
bash$sudo nano /etc/nrdot-collector/nrdot-collector.conf새
mssql-config.yaml파일을 가리키도록 설정 경로를 업데이트하십시오:bash$OTELCOL_CONFIG="/etc/nrdot-collector/mssql-config.yaml"(선택 사항) NRDOT Collector 설정을 확인하십시오:
bash$sudo /usr/bin/nrdot-collector validate --config=/etc/nrdot-collector/mssql-config.yaml팁
애플리케이션 성능을 데이터베이스 작업과 연관시키려면 데이터베이스 서비스 식별을 설정할 수 있습니다. 자세한 내용은 데이터베이스 서비스 식별 설정 가이드를 참조하십시오.
NRDOT Collector를 다시 시작하십시오
설정을 업데이트한 후 NRDOT Collector 서비스를 다시 시작하십시오:
$sudo systemctl restart nrdot-collector팁
새로운 설정이 적용되도록 설정 변경 후에는 항상 NRDOT Collector 서비스를 다시 시작하십시오.
데이터 찾기 및 사용
데이터가 수집되면 뉴렐릭 UI를 통해 포괄적인 SQL Server 데이터베이스 모니터링에 액세스할 수 있습니다.
뉴렐릭에서 SQL Server 데이터베이스를 찾으려면 다음을 수행하세요.
one.newrelic.com > All capabilities > Databases 으)로 이동합니다.
Entity type 드롭다운 메뉴에서 MSSQL instance을(를) 선택한 다음 Apply을(를) 클릭합니다.
모임 목록에서 SQL Server 데이터베이스를 선택합니다.
NRDOT로 SQL Server 모니터링을 설정한 후 다음을 수행할 수 있습니다:
- 사용자 정의 대시보드를 만들어 데이터베이스 지표를 시각화하세요.
- 중요한 데이터베이스 성능에 대한 알림 설정, 참조 값
- 뉴렐릭 쿼리 기능을 사용하여 데이터 탐색