SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

New Relic の SQL Server / SQL Database 向け Plugin のクエリが便利そうだったのでメモ

leave a comment

New Relic では、SQL Server / SQL Database の各種情報を取得しているようですが、どのような情報を取得しているのかが気になったので少し調べてみました。

プラグイン自体は Github で公開されており、newrelic-platform/newrelic_microsoft_sqlserver_plugin で確認ができたので、ここから SQL ファイルを見ています。

New Relic 自体についてはしばやん先生の

を見ていただければと。

しばやん先生の情報を見ている限り、Github の SQL ファイルを実行した結果を定期的に報告しているのかなという感じのクエリになっていました。

New Relic のプラグインの SQL については 18 個のファイルで構成されており、DMV から以下のような情報を取得しているようです。

IdleCPUUsage.sql

サーバー情報  
ServerDetails.SqlServer.sql SQL Server のバージョン / エディション情報を取得
データベース情報  
AllDatabasesOnInstanceAzure.sql すべてのデータベース名を取得
DatabaseDetails.SqlServer.sql すべてのデータベースの詳細情報を取得
FileIOView.sql ファイル単位の I/O の発生状態を取得
実行状態  
BatchRequests.SqlServer.sql SQL のバッチ実行数 (パフォーマンスモニターの Batch Requests/sec 相当の情報) を取得
Connections.SqlServer.sql 接続情報から接続数 / 読み取り / 書き込みの状態を取得
クエリ情報  
BlockingQueries.sql 実行中のクエリからブロッキング (ロックの競合) が発生しているクエリを取得
RecompileSummary.sql リコンパイルの発生状態を取得
リコンパイルの情報はパフォーマンスモニターではなく、キャッシュされているプランの実行状態を元に算出
SqlDMLActivity.SqlServerAndAzureSQL.sql クエリ実行情報から、リソースの使用状況 (実行 / 論理書き込み / 論理読み取り / 物理読み取り) を取得
リソース使用状況  
SQL-NonSQL-IdleCPUUsage.sql DMV (sys.dm_os_ring_buffers) から SQL Server とそれ以外の CPU 使用情報を取得
IdleCPUUsage.sql NUMA ノード単位のメモリ使用情報 (パフォーマンスモニターの Buffer Node 相当の情報) を取得
メモリの情報は NUMA ノード単位の Page life expectancy を取得
MemoryView.sql インスタンスのメモリ使用情報 (パフォーマンスモニターの Buffer Manager 相当の情報) を取得
メモリの情報はインスタンスの Page life expectancy を取得
Summary.AzureSql.sql SQL Database の接続 / リコンパイル / データベースサイズの情報を取得
待ち情報  
WaitStates.AzureSql.sql SQL Database の待ち事象の情報を sys.dm_db_wait_stats から取得
WaitStates.SqlServer.sql SQL Server の待ち事象の情報を sys.dm_os_wait_stats から首都kう
イベント発生情報  
ServiceInterruptionEvents.AzureSQL.sql SQL Database のイベント発生状態を sys.event_log から取得
導入設定用  
GrantNewRelicRightsAzure.sql ログイン / ビュー / 権限の設定
GrantNewRelicRightsNonAzure.sql ログイン / ビュー / 権限の設定

 

一通りクエリを見たのですが、「sys.dm_os_ring_buffers」の使い方がかなり面白いなと思いました。

Share

Written by Masayuki.Ozawa

6月 21st, 2015 at 8:20 pm

Leave a Reply