AWS RDS for SQL Server 인스턴스를 모니터하려면 Linux 환경에서 NRDOT 수집기를 사용하여 Microsoft SQL Server 모니터링을 설정하세요.
전제 조건
환경이 호환성 및 필수 조건을 충족하는지 확인하세요.
NRDOT Collector 설정
RDS SQL Server 인스턴스에 연결할 수 있는 Linux EC2 인스턴스 또는 로컬 Linux 머신에 NRDOT Collector를 설치합니다.
중요
RDS SQL Server 인스턴스에 대한 네트워크 연결이 있는 EC2 인스턴스 또는 로컬 머신에 NRDOT Collector를 설치하세요. 보안 그룹이 포트 1433(또는 사용자 지정 포트)에서 인바운드 연결을 허용하는지 확인하세요.
Debian/Ubuntu
AMD64(x86_64) 아키텍처의 경우:
bash$NRDOT_VERSION=$(curl -s https://api.github.com/repos/newrelic/nrdot-collector-releases/releases/latest | grep '"tag_name":' | awk -F'"' '{print $4}') && curl -L "https://github.com/newrelic/nrdot-collector-releases/releases/download/${NRDOT_VERSION}/nrdot-collector_${NRDOT_VERSION}_linux_amd64.deb" --output nrdot-collector.deb && sudo dpkg -i nrdot-collector.debARM64 아키텍처의 경우:
bash$NRDOT_VERSION=$(curl -s https://api.github.com/repos/newrelic/nrdot-collector-releases/releases/latest | grep '"tag_name":' | awk -F'"' '{print $4}') && curl -L "https://github.com/newrelic/nrdot-collector-releases/releases/download/${NRDOT_VERSION}/nrdot-collector_${NRDOT_VERSION}_linux_arm64.deb" --output nrdot-collector.deb && sudo dpkg -i nrdot-collector.debRHEL/CentOS
AMD64(x86_64) 아키텍처의 경우:
bash$NRDOT_VERSION=$(curl -s https://api.github.com/repos/newrelic/nrdot-collector-releases/releases/latest | grep '"tag_name":' | awk -F'"' '{print $4}') && curl -L "https://github.com/newrelic/nrdot-collector-releases/releases/download/${NRDOT_VERSION}/nrdot-collector_${NRDOT_VERSION}_linux_x86_64.rpm" --output nrdot-collector.rpm && sudo rpm -ivh nrdot-collector.rpmARM64 아키텍처의 경우:
bash$NRDOT_VERSION=$(curl -s https://api.github.com/repos/newrelic/nrdot-collector-releases/releases/latest | grep '"tag_name":' | awk -F'"' '{print $4}') && curl -L "https://github.com/newrelic/nrdot-collector-releases/releases/download/${NRDOT_VERSION}/nrdot-collector_${NRDOT_VERSION}_linux_arm64.rpm" --output nrdot-collector.rpm && sudo rpm -ivh nrdot-collector.rpm
데이터베이스 사용자 구성
RDS SQL Server 인스턴스에 연결하고 적절한 권한을 가진 newrelic 모니터링 사용자를 생성합니다.
Linux 인스턴스에 다음 내용으로
nr-grant-permission-rds.sql이라는 파일을 생성하세요:USE [master];GOCREATE LOGIN [newrelic] WITH PASSWORD = '<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 = 0BEGINEXEC('USE [' + @name + '];IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = ''newrelic'')CREATE USER [newrelic] FOR LOGIN [newrelic];');END TRYBEGIN CATCHPRINT 'Error on ' + @name + ': ' + ERROR_MESSAGE();END CATCHFETCH NEXT FROM db_cursor INTO @name;ENDCLOSE db_cursor;DEALLOCATE db_cursor;GORDS 마스터 사용자 자격 증명을 사용하여 스크립트를 실행합니다.
<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의 경우: RDS 마스터 사용자 이름과 비밀번호를 사용하여 이 명령을 실행합니다. 스크립트는 AWS에서 예약한
rdsadmin데이터베이스를 자동으로 제외합니다.
NRDOT Collector구성
설정 파일을 생성합니다. 파일 이름은
mssql-config.yaml이어야 합니다:sudo nano /etc/nrdot-collector/mssql-config.yaml이전 단계에서 생성한 mssql-config.yaml 파일에 아래 설정 내용을 추가합니다.
중요
기존 NRDOT Collector 사용자인 경우 설정을 기존
mssql-config.yaml파일과 병합해야 합니다. 여기에는 현재 설정을 유지하면서 MSSQL 데이터베이스 모니터링을 위한 새 수신기, 프로세서 및 익스포터를 추가하는 것이 포함됩니다.RDS 엔드포인트와 함께 아래 설정을 사용합니다:
receivers:nrsqlserver:collection_interval: 15s# Connection details - Use your RDS endpointusername: <YOUR_USERNAME>password: <YOUR_NEWRELIC_PASSWORD>server: <YOUR-RDS-ENDPOINT>port: 1433# Enable comprehensive database metricsmetrics:sqlserver.database.count:enabled: truesqlserver.database.io:enabled: truesqlserver.database.latency:enabled: truesqlserver.database.operations:enabled: truesqlserver.database.tempdb.space:enabled: truesqlserver.database.tempdb.version_store.size:enabled: truesqlserver.deadlock.rate:enabled: truesqlserver.os.wait.duration:enabled: truesqlserver.processes.blocked:enabled: truesqlserver.memory.grants.pending.count:enabled: truesqlserver.database.file.size:enabled: truesqlserver.memory.area:enabled: true# Enable top query and query sample log collectionevents:db.server.query_sample:enabled: truedb.server.top_query:enabled: true# Top query collection configurationtop_query_collection:lookback_time: 60smax_query_sample_count: 1000top_query_count: 250collection_interval: 60scollect_full_query_text: trueallowed_comment_keys:- nr_service_guid# Query sample collection configurationquery_sample_collection:max_rows_per_query: 100processors:memory_limiter:check_interval: ${env:NR_MEM_LIMITER_CHECK_INTERVAL:-1s}limit_mib: ${env:NR_MEM_LIMITER_LIMIT_MIB:-200}spike_limit_mib: ${env:NR_MEM_LIMITER_SPIKE_MIB:-50}batch:exporters:otlphttp:endpoint: <YOUR_OTLP_ENDPOINT>headers:api-key: <YOUR_LICENSE_KEY>tls:insecure: falsecompression: gzipservice:telemetry:metrics:level: nonepipelines:metrics:receivers: [nrsqlserver]processors: [memory_limiter, batch]exporters: [otlphttp]logs:receivers: [nrsqlserver]processors: [memory_limiter, batch]exporters: [otlphttp]팁
플레이스홀더 값을 바꿉니다:
<YOUR_USERNAME>: 인증을 위해 데이터베이스 사용자 이름을 입력합니다<YOUR-RDS-ENDPOINT>: RDS SQL Server 엔드포인트(예:mydb-instance.xxxxxxxxxxxx.us-east-1.rds.amazonaws.com)<YOUR_NEWRELIC_PASSWORD>: newrelic 사용자에 대해 설정한 비밀번호<YOUR_OTLP_ENDPOINT>: 뉴렐릭 OTLP 엔드포인트(예:https://otlp.nr-data.net)<YOUR_LICENSE_KEY>: 귀하의 뉴렐릭 라이선스 키
팁
참고:
max_concurrent_queries옵션은 각 스크랩 주기 동안 수신기가 SQL Server에 대해 병렬로 실행하는 메트릭 쿼리 수를 제어합니다.receivers:nrsqlserver:max_concurrent_queries: 4 # default is 4 if omitted or set to 0팁
참고: 사용 가능한 모든 메트릭을 활성화하는 경우 메모리 제한기가 데이터를 삭제하지 않도록
limit_mib값(예: 1,000)을 늘리세요.
수집기 설정 파일 업데이트
다음 명령을 실행하여 서비스 설정을 편집합니다:
bash$sudo nano /etc/nrdot-collector/nrdot-collector.conf새 mssql-config.yaml 파일을 가리키도록 설정 경로를 업데이트합니다:
bash$OTELCOL_CONFIG="/etc/nrdot-collector/mssql-config.yaml"
NRDOT Collector 설정 유효성 검사
NRDOT Collector 설정의 유효성을 검사하여 형식이 올바르고 제대로 작동하는지 확인합니다.
$sudo /usr/bin/nrdot-collector validate --config=/etc/nrdot-collector/mssql-config.yamlNRDOT 수집기 재시작
설정을 업데이트한 후 NRDOT Collector 서비스를 다시 시작하십시오:
$sudo systemctl restart nrdot-collector팁
설정을 변경한 후에는 반드시 NRDOT 수집기 서비스를 다시 시작하여 새 설정이 적용되도록 하십시오.
다음 단계
Linux RDS 모니터링 설정 후: