New Relic Distribution of OpenTelemetry(NRDOT)コレクターを使用して、データベース監視、クエリ分析、およびシステムヘルス・メトリクスにより、SQL Serverのパフォーマンスに関する包括的なインサイトを取得します。
代わりにNew Relic UIからこれをインストールするには、one.newrelic.com > Integrations & Agents > MSSQL (OpenTelemetry) にアクセスしてください。画面上の指示に従って、インテグレーションをセットアップします。このページでは、CLIのインストールパスのみを説明します。
ヒント
Linux RDS環境でSQL Serverを使用している場合は、RDSのLinux計装を参照してください。
前提条件
有効なライセンスキーを持つNew Relicアカウント
ご使用のリージョンのNew Relic OTLPエンドポイント
SQL Serverの要件として、以下が必要です:
- SQL Server 2017以降
- SQL Serverへの管理アクセス(
sysadminロールまたは同等のロール) - ポート
1433またはカスタムポートでのコレクターとSQL Server間のネットワーク接続 sqlcmdLinuxシステムにインストールされているユーティリティ
New Relic OTLPエンドポイントへのネットワーク接続
プレビューに登録
このインテグレーションは、New Relicパブリックプレビュープログラムの一部として利用可能です。Previews & Trialsページからオプトインするには、組織の管理者に連絡してください。
NRDOT Collectorをインストールする
Linuxディストリビューション用のNRDOTパッケージをダウンロードし、インストールします。<NRDOT_VERSION>をnrdot-collector-releasesページの最新リリースタグに置き換えます。
ヒント
クエリパフォーマンス監視のためのインフラストラクチャレベルのメトリクスを表示するには、SQL Serverインスタンスと同じホストにNRDOT Collectorをインストールすることをお勧めします。
監視ユーザーを作成する
rootユーザーとしてこのスクリプトを実行し、newrelic監視ユーザーを作成して、SQL Serverメトリクスを収集するために必要な権限を付与します。
nr-grant-permission.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;GOsqlcmdを使用してスクリプトを実行します。<YOUR_SA_PASSWORD>をSQL Serverアドミニストレーターパスワードに置き換えます:bash$sqlcmd -S <YOUR_DB_ENDPOINT> -U sa -P '<YOUR_SA_PASSWORD>' -C -i nr-grant-permission.sql(オプション)ユーザーが正しい権限で正常に作成されたことを確認します:
bash$sqlcmd -S <YOUR_DB_ENDPOINT> -U sa -P '<YOUR_SA_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';"期待される出力:
bash$User Permission_Granted$-------------------------------------------------------------------------------------$newrelic CONNECT SQL$newrelic VIEW ANY DEFINITION$newrelic VIEW ANY DATABASE$newrelic VIEW SERVER STATEこの出力は、必要なサーバー レベルの権限を持つユーザーが正常に作成されたことを確認します。
ヒント
データベースの認証情報などの機密情報を安全に管理するには、シークレット管理ツールに保存してください。
NRDOT Collectorを構成する
監視要件に基づいて設定オプションを選択します:
mssql-config.yamlという名前の設定ファイルを作成します:bash$sudo nano /etc/nrdot-collector/mssql-config.yaml前の手順で作成した
mssql-config.yamlファイルに以下の設定を追加します:完全な設定
この最小限の設定は、ホストインフラストラクチャのメトリクスなしでデータベース監視のみに焦点を当てています。フル機能の監視を有効にするには、設定リファレンスを参照してください。
mssql-config.yaml1receivers:2nrsqlserver:3collection_interval: 15s4# Direct connection to SQL Server5username: newrelic6password: YOUR_PASSWORD7server: sqlserver.example.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 top query and query sample log collection38events:39db.server.query_sample:40enabled: true41db.server.top_query:42enabled: true4344# Top query collection configuration45top_query_collection:46lookback_time: 60s47max_query_sample_count: 100048top_query_count: 25049collection_interval: 60s5051collect_full_query_text: true52allowed_comment_keys:53- nr_service_guid5455# Query sample collection configuration56query_sample_collection:57max_rows_per_query: 1005859processors:60memory_limiter:61check_interval: ${env:NR_MEM_LIMITER_CHECK_INTERVAL:-1s}62limit_mib: ${env:NR_MEM_LIMITER_LIMIT_MIB:-200}63spike_limit_mib: ${env:NR_MEM_LIMITER_SPIKE_MIB:-50}6465batch:6667exporters:68otlp:69endpoint: https://otlp.nr-data.net:431870headers:71api-key: YOUR_LICENSE_KEY72tls:73insecure: false74compression: gzip7576service:77telemetry:78metrics:79level: none8081pipelines:82metrics:83receivers: [nrsqlserver]84processors: [memory_limiter, batch]85exporters: [otlp]8687logs:88receivers: [nrsqlserver]89processors: [memory_limiter, batch]90exporters: [otlp]
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のクエリ機能を使用して、データを探索します