SQL Server認証を使用してAWS RDS for SQL Serverインスタンスをモニターするために、Windows環境でNRDOT Collectorを使用してMicrosoft SQL Serverの監視をセットアップしてください。セルフホスト環境でモニターするには、Windowsセルフホストの計装を参照してください。
代わりにNew Relic UIからこれをインストールするには、one.newrelic.com > Integrations & Agents > MSSQL (OpenTelemetry) に移動してください。画面上の指示に従って、インテグレーションをセットアップします。このページでは、手動インストレーションについてのみ説明します。
このページでは、SQL Server認証について説明します。環境で異なる認証方法を使用している場合は、Windowsドメイン認証またはgMSAをご覧ください。
前提条件
NRDOTを使用してMicrosoft SQL Serverを監視する前に、環境がこれらの要件を満たしていることを確認します:
有効なライセンスキーを持つNew Relicアカウント。
ご利用のリージョンのNew Relic OTLPエンドポイントへのネットワーク接続。
AWS RDS SQL Serverの要件:
- RDS インスタンスで SQL Server 認証が有効になっています。
- RDSマスターユーザーの認証情報、または
rds_superuserロールを持つSQL Serverログインの認証情報。 - ポート
1433またはカスタムポートでの接続を許可するように構成されたRDSセキュリティグループ。 - SQL Server Management Studio(SSMS)または
sqlcmdユーティリティ。
RDS SQL ServerのエンドポイントURL。AWS RDSコンソールの「Connectivity & security」で確認できます。詳細については、AWS RDSのドキュメントを参照してください。
NRDOT Collectorをインストールする
RDS SQL Serverインスタンスに接続できるEC2 Windowsインスタンス、またはローカルのWindowsマシンにNRDOT Collectorをインストールしてください。
重要
RDS監視の場合、最適なネットワーク接続と低レイテンシを実現するために、RDSインスタンスと同じVPC内の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監視ユーザーを作成する
このスクリプトをアドミンユーザーとして実行して、newrelic監視ユーザーを作成し、SQL Serverのメトリクスを収集するために必要な権限を付与してください。
ヒント
RDSマスターユーザー名、またはrds_superuserロールを持つユーザーを使用して、このスクリプトを実行してください。このスクリプトは、AWSによって予約されているrdsadminデータベースを自動的に除外します。
SQL Server Management Studio(SSMS)で、次のスクリプトを実行してnewrelic監視ユーザーを作成します。<YOUR_PASSWORD>を希望するパスワードに置き換えます:
USE [master];GOCREATE LOGIN [newrelic] WITH PASSWORD = '<YOUR_PASSWORD>';GO
GRANT VIEW SERVER STATE TO [newrelic];GRANT VIEW ANY DEFINITION TO [newrelic];GRANT VIEW ANY DATABASE TO [newrelic];GO
DECLARE @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;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 = ''newrelic'') BEGIN CREATE USER [newrelic] FOR LOGIN [newrelic]; END; GRANT VIEW DATABASE STATE TO [newrelic];'); 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ヒント
データベースの認証情報などの機密情報を安全に管理するには、シークレット管理ツールに保存してください。
NRDOT Collectorを構成する
RDS SQL Serverのセットアップ用に、新しい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: 15s4username: newrelic5password: YOUR_PASSWORD6server: mydb-instance.xxxxxxxxxxxx.us-east-1.rds.amazonaws.com7port: 143389# Enable comprehensive database metrics10metrics:11sqlserver.database.count:12enabled: true13sqlserver.database.io:14enabled: true15sqlserver.database.latency:16enabled: true17sqlserver.database.operations:18enabled: true19sqlserver.database.tempdb.space:20enabled: true21sqlserver.database.tempdb.version_store.size:22enabled: true23sqlserver.deadlock.rate:24enabled: true25sqlserver.os.wait.duration:26enabled: true27sqlserver.processes.blocked:28enabled: true29sqlserver.memory.grants.pending.count:30enabled: true31sqlserver.database.file.size:32enabled: true33sqlserver.memory.area:34enabled: true3536# Enable query sample, top query, query plan, and top procedure log collection37events:38db.server.query_sample:39enabled: true40db.server.top_query:41enabled: true42db.server.query_plan:43enabled: true44db.server.top_procedure:45enabled: true4647# Top query collection configuration48top_query_collection:49lookback_time: 60s50max_query_sample_count: 100051top_query_count: 25052collection_interval: 60s53collect_full_query_text: true54allowed_comment_keys:55- nr_service_guid5657# Query sample collection configuration58query_sample_collection:59max_rows_per_query: 10060collect_full_query_text: true61allowed_comment_keys:62- nr_service_guid6364# Top stored procedure collection configuration65top_procedure_collection:66max_procedure_sample_count: 100067top_procedure_count: 25068collection_interval: 60s6970resource_attributes:71db.system.version:72enabled: true73sqlserver.db.edition:74enabled: true7576processors:77memory_limiter:78check_interval: ${env:NR_MEM_LIMITER_CHECK_INTERVAL:-1s}79limit_mib: ${env:NR_MEM_LIMITER_LIMIT_MIB:-200}80spike_limit_mib: ${env:NR_MEM_LIMITER_SPIKE_MIB:-50}8182exporters:83otlp:84endpoint: https://otlp.nr-data.net:431885headers:86api-key: YOUR_LICENSE_KEY87tls:88insecure: false89compression: gzip9091sending_queue:92enabled: true93sizer: bytes94queue_size: 100_000_00095num_consumers: 1096batch:97sizer: bytes98max_size: 1_000_00099min_size: 0100flush_timeout: 5s101102service:103telemetry:104metrics:105level: none106107pipelines:108metrics:109receivers: [nrsqlserver]110processors: [memory_limiter]111exporters: [otlp]112113logs:114receivers: [nrsqlserver]115processors: [memory_limiter]116exporters: [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つの権限をすべて持っています。
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を再起動します
設定を更新した後、NRDOT Collectorサービスを再起動します:
$net stop nrdot-collector$net start nrdot-collectorヒント
新しい設定を確実に適用するために、設定を変更した後は常にNRDOT Collectorサービスを再起動してください。
データを探す、使う
データの収集が開始されると、New Relic UIを通じて包括的なSQL Serverデータベース監視にアクセスできます。
New Relic で SQL Server データベース エンティティを見つけるには:
https://one.newrelic.com > All Capabilities > Databasesに移動します。
Entity typeドロップダウンからMSSQL instanceを選択し、Applyをクリックします。
エンティティのリストから SQL Server データベースを選択します。
NRDOTを使用してSQL Serverの監視をセットアップした後、次のことができます:
- データベースのメトリクスを視覚化するカスタムダッシュボードを作成する
- クリティカルデータベースパフォーマンス閾値のアラートを設定する
- New Relicのクエリ機能を使用して、データを探索します