그룹 관리 서비스 계정(gMSA)을 사용하여 AWS RDS for SQL Server 인스턴스를 모니터하려면 Windows 환경에서 NRDOT Collector를 사용하여 Microsoft SQL Server 모니터링을 설정하십시오. 자체 호스팅 환경에서 모니터하려면 Windows 자체 호스팅 계측을 참조하십시오.
대신 뉴렐릭 UI를 통해 설치하려면 one.newrelic.com > Integrations & Agents > MSSQL (OpenTelemetry) (으)로 이동하십시오. 화면의 지시에 따라 통합을 설정하십시오. 이 페이지에서는 수동 설치만 다룹니다.
이 페이지에서는 gMSA 인증을 다룹니다. 환경에서 다른 인증 방법을 사용하는 경우 SQL Server 인증 또는 Windows 도메인 인증을 참조하십시오.
전제 조건
gMSA 인증을 사용하여 NRDOT로 Microsoft SQL Server를 모니터링하기 전에 다음을 확인하십시오:
유효한 라이선스 키가 있는 뉴렐릭 계정.
해당 리전의 뉴렐릭 OTLP 엔드포인트에 대한 네트워크 연결.
SQL Server 요구 사항:
- Amazon RDS의 SQL Server 2017 이상.
- RDS 마스터 사용자 자격 증명 또는
rds_superuser역할을 가진 SQL Server 로그인을 위한 자격 증명 - 포트
1433또는 사용자 지정 포트에서 연결을 허용하도록 구성된 RDS 보안 그룹 - SQL Server Management Studio(SSMS) 또는
sqlcmd유틸리티. - AWS Active Directory 서비스와 연결된 RDS 인스턴스.
AWS RDS 콘솔의 연결 및 보안(Connectivity & security)에서 찾을 수 있는 RDS SQL Server 엔드포인트 URL입니다. 자세한 내용은 AWS RDS 문서를 참조하십시오.
gMSA를 지원하는 Active Directory 환경.
gMSA 계정을 사용하도록 권한이 부여된 도메인 가입 Windows EC2 인스턴스
NRDOT Collector설치하세요
PowerShell을 사용하여 NRDOT Collector를 다운로드하고 설치합니다:
$[Net.ServicePointManager]::SecurityProtocol = 'tls12, tls'; $NRDOT_VERSION = (Invoke-RestMethod -Uri "https://api.github.com/repos/newrelic/nrdot-collector-releases/releases/latest").tag_name; $WebClient = New-Object System.Net.WebClient; $WebClient.Headers.Add("User-Agent", "Mozilla/5.0"); $WebClient.DownloadFile("https://github.com/newrelic/nrdot-collector-releases/releases/download/$NRDOT_VERSION/nrdot-collector_${NRDOT_VERSION}_windows_x64.msi", "$env:TEMP\nrdot-collector.msi"); Start-Process msiexec.exe -ArgumentList "/i `"$env:TEMP\nrdot-collector.msi`" /qn /norestart /L*V `"$env:TEMP\nrdot_install.log`"" -Wait; Get-Service nrdot-collector -ErrorAction SilentlyContinue모니터링 사용자 생성
관리자 권한으로 SQL Server Management Studio(SSMS) 또는 sqlcmd을(를) 사용하여 RDS SQL Server 인스턴스에 연결하십시오.
SQL Server Management Studio(SSMS)에서 다음 스크립트를 실행하여 gMSA 계정에 대한 로그인을 생성하고 필요한 권한을 부여하십시오. 모든 <YOUR_DOMAIN>\<YOUR_GMSA_USERNAME>을(를) 실제 도메인 및 계정 이름으로 바꾸십시오.
USE [master];GO
CREATE LOGIN [<YOUR_DOMAIN>\<YOUR_GMSA_USERNAME>$] FROM WINDOWS;GO
GRANT VIEW ANY DATABASE TO [<YOUR_DOMAIN>\<YOUR_GMSA_USERNAME>$];GRANT VIEW SERVER STATE TO [<YOUR_DOMAIN>\<YOUR_GMSA_USERNAME>$];GRANT VIEW ANY DEFINITION TO [<YOUR_DOMAIN>\<YOUR_GMSA_USERNAME>$];GO-- Grant access to all databases DECLARE @name SYSNAME;DECLARE db_cursor CURSOR READ_ONLY FORWARD_ONLY FOR SELECT [name] FROM [master].[sys].[databases] WHERE [name] NOT IN ('master','msdb','model','rdsadmin','distribution') AND [state] = 0;OPEN db_cursor;FETCH NEXT FROM db_cursor INTO @name;WHILE @@FETCH_STATUS = 0BEGIN BEGIN TRY EXEC('USE [' + @name + ']; IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = ''<YOUR_DOMAIN>\<YOUR_GMSA_USERNAME>$'') BEGIN CREATE USER [<YOUR_DOMAIN>\<YOUR_GMSA_USERNAME>$] FOR LOGIN [<YOUR_DOMAIN>\<YOUR_GMSA_USERNAME>$]; END; GRANT VIEW DATABASE STATE TO [<YOUR_DOMAIN>\<YOUR_GMSA_USERNAME>$];'); END TRY BEGIN CATCH PRINT 'Error on ' + @name + ': ' + ERROR_MESSAGE(); END CATCH FETCH NEXT FROM db_cursor INTO @name;ENDCLOSE db_cursor;DEALLOCATE db_cursor;GO팁
데이터베이스 자격 증명과 같은 민감한 정보를 안전하게 관리하려면 시크릿 관리 도구에 저장하십시오.
gMSA 계정으로 실행
PowerShell을 사용하여 gMSA 계정으로 실행되도록 NRDOT Collector 서비스를 설정하십시오. <YOUR_DOMAIN>\<YOUR_GMSA_USERNAME>$을(를) 도메인 및 gMSA 계정 이름으로 교체하십시오. gMSA 계정에 필요하므로 끝에 $을(를) 포함해야 합니다:
$# Stop the NRDOT Collector service$Stop-Service nrdot-collector$
$# Configure service to use gMSA account$# Use cmd /c to avoid PowerShell treating $ as a variable$cmd /c 'sc config nrdot-collector obj= "<YOUR_DOMAIN>\<YOUR_GMSA_USERNAME>$" password= ""'$
$# Verify the configuration$Get-WmiObject Win32_Service -Filter "Name='nrdot-collector'" | Select Name, StartName$
$# Start the NRDOT Collector service $Start-Service nrdot-collector중요
gMSA 계정은 비밀번호가 필요하지 않습니다. 서비스를 구성할 때 비워 두십시오.
NRDOT Collector구성
관리자 권한으로 PowerShell에서 이름이
mssql-config.yaml인 설정 파일을 생성하십시오:bash$New-Item -Path "C:\Program Files\nrdot-collector\mssql-config.yaml" -ItemType File이전 단계에서 생성한
mssql-config.yaml파일에 다음 설정을 추가하십시오:전체 설정
이 설정은 RDS 환경을 위한 필수 데이터베이스 모니터링에 중점을 둡니다. 사용 가능한 모든 메트릭을 사용하여 포괄적인 모니터링을 활성화하려면 설정 참조를 참조하십시오.
mssql-config.yaml1receivers:2nrsqlserver:3collection_interval: 15s4datasource: "server=mydb-instance.xxxxxxxxxxxx.us-east-1.rds.amazonaws.com;port=1433;integrated security=true;encrypt=true;TrustServerCertificate=true;"56# Enable comprehensive database metrics7metrics:8sqlserver.database.count:9enabled: true10sqlserver.database.io:11enabled: true12sqlserver.database.latency:13enabled: true14sqlserver.database.operations:15enabled: true16sqlserver.database.tempdb.space:17enabled: true18sqlserver.database.tempdb.version_store.size:19enabled: true20sqlserver.deadlock.rate:21enabled: true22sqlserver.os.wait.duration:23enabled: true24sqlserver.processes.blocked:25enabled: true26sqlserver.memory.grants.pending.count:27enabled: true28sqlserver.database.file.size:29enabled: true30sqlserver.memory.area:31enabled: true3233# Enable query sample, top query, query plan, and top procedure log collection34events:35db.server.query_sample:36enabled: true37db.server.top_query:38enabled: true39db.server.query_plan:40enabled: true41db.server.top_procedure:42enabled: true4344# Top query collection configuration45top_query_collection:46lookback_time: 60s47max_query_sample_count: 100048top_query_count: 25049collection_interval: 60s50collect_full_query_text: true51allowed_comment_keys:52- nr_service_guid5354# Query sample collection configuration55query_sample_collection:56max_rows_per_query: 10057collect_full_query_text: true58allowed_comment_keys:59- nr_service_guid6061# Top stored procedure collection configuration62top_procedure_collection:63max_procedure_sample_count: 100064top_procedure_count: 25065collection_interval: 60s6667resource_attributes:68db.system.version:69enabled: true70sqlserver.db.edition:71enabled: true7273processors:74memory_limiter:75check_interval: ${env:NR_MEM_LIMITER_CHECK_INTERVAL:-1s}76limit_mib: ${env:NR_MEM_LIMITER_LIMIT_MIB:-200}77spike_limit_mib: ${env:NR_MEM_LIMITER_SPIKE_MIB:-50}7879exporters:80otlp:81endpoint: https://otlp.nr-data.net:431882headers:83api-key: YOUR_LICENSE_KEY84tls:85insecure: false86compression: gzip8788sending_queue:89enabled: true90sizer: bytes91queue_size: 100_000_00092num_consumers: 1093batch:94sizer: bytes95max_size: 1_000_00096min_size: 097flush_timeout: 5s9899service:100telemetry:101metrics:102level: none103104pipelines:105metrics:106receivers: [nrsqlserver]107processors: [memory_limiter]108exporters: [otlp]109110logs:111receivers: [nrsqlserver]112processors: [memory_limiter]113exporters: [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이(가) 필요합니다. 모니터링 사용자 생성에서 생성된 gMSA 로그인에는 이미 3개의 권한이 모두 있습니다.
Windows 서비스 레지스트리 업데이트
다음 방법 중 하나를 사용하여 새
mssql-config.yaml파일을 사용하도록 Windows 서비스 레지스트리를 업데이트하십시오:PowerShell의 경우: 다음 명령을 관리자 권한으로 실행하십시오:
bash$Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\nrdot-collector" -Name "ImagePath" -Value '"C:\Program Files\nrdot-collector\nrdot-collector.exe" --config "C:\Program Files\nrdot-collector\mssql-config.yaml"'명령 프롬프트의 경우: PowerShell을 사용할 수 없는 경우 명령 프롬프트를 대신 사용하고 다음 명령을 관리자로 실행하십시오:
bash$sc config "nrdot-collector" binPath= "\"C:\Program Files\nrdot-collector\nrdot-collector.exe\" --config \"C:\Program Files\nrdot-collector\mssql-config.yaml\""NRDOT Collector 설정을 검증하여 형식이 올바르고 제대로 작동하는지 확인합니다:
bash$& "C:\Program Files\nrdot-collector\nrdot-collector.exe" validate --config="C:\Program Files\nrdot-collector\mssql-config.yaml"팁
애플리케이션 성능을 데이터베이스 작업과 연관시키려면 데이터베이스 서비스 식별을 설정할 수 있습니다. 자세한 내용은 데이터베이스 서비스 식별 설정을 참조하십시오.
NRDOT Collector를 다시 시작하십시오
설정을 업데이트한 후, 도메인에 가입된 EC2 Windows 인스턴스에서 NRDOT Collector 서비스를 다시 시작하세요:
$net stop nrdot-collector$net start nrdot-collectorWindows 서비스(services.msc)를 확인하여 서비스가 gMSA 계정으로 실행 중인지 확인하십시오. Log On As 열에 gMSA 계정이 표시되어야 합니다(예: CORP\SQL-gMSA$).
데이터 찾기 및 사용
데이터가 수집되면 뉴렐릭 UI를 통해 포괄적인 SQL Server 데이터베이스 모니터링에 액세스할 수 있습니다.
뉴렐릭에서 SQL Server 데이터베이스를 찾으려면 다음을 수행하세요.
https://one.newrelic.com > All Capabilities > Databases 으)로 이동합니다.
Entity type 드롭다운 메뉴에서 MSSQL instance을(를) 선택한 다음 Apply을(를) 클릭합니다.
모임 목록에서 SQL Server 데이터베이스를 선택합니다.
NRDOT로 SQL Server 모니터링을 설정한 후 다음을 수행할 수 있습니다:
- 사용자 정의 대시보드를 만들어 데이터베이스 지표를 시각화하세요.
- 중요한 데이터베이스 성능에 대한 알림 설정, 참조 값
- 뉴렐릭 쿼리 기능을 사용하여 데이터 탐색