New Relic Distribution of OpenTelemetry(NRDOT)コレクターを使用し、データベース監視、クエリ分析、およびシステムヘルスメトリクスを通じて、AWS RDS SQL Serverのパフォーマンスに関する包括的なインサイトを取得します。
ガイド付きインストレーション
代わりにNew Relic UIからこれをインストールするには、one.newrelic.com > Integrations & Agents > Microsoft SQL Server (Database 360) に移動してください。画面上の指示に従って、インテグレーションをセットアップします。このページでは、手動インストレーションについてのみ説明します。
ヒント
Linuxのセルフホスト環境でSQL Serverを使用している場合は、セルフホストSQL ServerのLinux計装をご覧ください。
前提条件
有効なライセンスキーを持つNew Relicアカウント。
ご利用のリージョンのNew Relic 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(またはカスタムポート)でのインバウンド接続を許可していることを確認してください。
監視ユーザーを作成する
rootユーザーとしてこのスクリプトを実行し、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>をマスターパスワードに置き換えてください:
$sqlcmd -S <YOUR-RDS-ENDPOINT> -U <YOUR_MASTER_USER> -P '<YOUR_MASTER_PASSWORD>' -C -i nr-grant-permission-rds.sql- (オプション)ユーザーが正しい権限で正常に作成されたことを確認してください:
$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環境における必須のデータベース監視に重点を置いています。利用可能なすべてのメトリクスを使用して包括的な監視を有効にするには、設定リファレンスを参照してください。
1receivers:2nrsqlserver:3 collection_interval: 15s4 # Connection details - Use your RDS endpoint5 username: newrelic6 password: YOUR_PASSWORD7 server: mydb-instance.xxxxxxxxxxxx.us-east-1.rds.amazonaws.com8 port: 14339
10 # Enable comprehensive database metrics11 metrics:12 sqlserver.database.count:13 enabled: true14 sqlserver.database.io:15 enabled: true16 sqlserver.database.latency:17 enabled: true18 sqlserver.database.operations:19 enabled: true20 sqlserver.database.tempdb.space:21 enabled: true22 sqlserver.database.tempdb.version_store.size:23 enabled: true24 sqlserver.deadlock.rate:25 enabled: true26 sqlserver.os.wait.duration:27 enabled: true28 sqlserver.processes.blocked:29 enabled: true30 sqlserver.memory.grants.pending.count:31 enabled: true32 sqlserver.database.file.size:33 enabled: true34 sqlserver.memory.area:35 enabled: true36
37 # Enable query sample, top query, query plan, and top procedure log collection38 events:39 db.server.query_sample:40 enabled: true41 db.server.top_query:42 enabled: true43 db.server.query_plan:44 enabled: true45 db.server.top_procedure:46 enabled: true47
48 # Top query collection configuration49 top_query_collection:50 lookback_time: 60s51 max_query_sample_count: 100052 top_query_count: 25053 collection_interval: 60s54 collect_full_query_text: true55 allowed_comment_keys:56 - nr_service_guid57
58 # Query sample collection configuration59 query_sample_collection:60 max_rows_per_query: 10061 collect_full_query_text: true62 allowed_comment_keys:63 - nr_service_guid64
65 # Top stored procedure collection configuration66 top_procedure_collection:67 max_procedure_sample_count: 100068 top_procedure_count: 25069 collection_interval: 60s70
71 resource_attributes:72 db.system.version:73 enabled: true74 sqlserver.db.edition:75 enabled: true76
77processors:78memory_limiter:79 check_interval: ${env:NR_MEM_LIMITER_CHECK_INTERVAL:-1s}80 limit_mib: ${env:NR_MEM_LIMITER_LIMIT_MIB:-200}81 spike_limit_mib: ${env:NR_MEM_LIMITER_SPIKE_MIB:-50}82
83exporters:84otlp:85 endpoint: https://otlp.nr-data.net:431886 headers:87 api-key: YOUR_LICENSE_KEY88 tls:89 insecure: false90 compression: gzip91
92 sending_queue:93 enabled: true94 sizer: bytes95 queue_size: 100_000_00096 num_consumers: 1097 batch:98 sizer: bytes99 max_size: 1_000_000100 min_size: 0101 flush_timeout: 5s102
103service:104telemetry:105 metrics:106 level: none107
108pipelines:109 metrics:110 receivers: [nrsqlserver]111 processors: [memory_limiter]112 exporters: [otlp]113
114 logs:115 receivers: [nrsqlserver]116 processors: [memory_limiter]117 exporters: [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サービスを再起動してください。
データを探す、使う
データの収集が開始されると、New Relic UIを通じて包括的なSQL Serverデータベース監視にアクセスできます。
New Relic で SQL Server データベース エンティティを見つけるには:
one.newrelic.com > All capabilities > Databasesに移動します。
Entity typeドロップダウンからMSSQL instanceを選択し、Applyをクリックします。
エンティティのリストから SQL Server データベースを選択します。
NRDOTを使用してSQL Serverの監視をセットアップした後、次のことができます:
- データベースのメトリクスを視覚化するカスタムダッシュボードを作成する
- クリティカルデータベースパフォーマンス閾値のアラートを設定する
- New Relicのクエリ機能を使用して、データを探索します