New Relic オンホストインテグレーションでMicrosoft SQL Serverを監視する
New RelicではOS単位のObservabilityを得るためのInfrastructureエージェントがあります。
https://docs.newrelic.co.jp/docs/infrastructure
さらに、OSの上で動くデータベースをはじめとする(いわゆる)ミドルウェアのObservabilityを得るためにOn-Host Integration(OHI)と呼ばれる機能があります。OHIはInfrastructureエージェントにインテグレーションごとに追加していきます。InfrastructureエージェントをインストールしているOS上のミドルウェアも監視できますし、エージェントごとに定められた方法で接続可能であればリモートにインストールされたミドルウェアも監視可能です。SQL as a Serviceのような、クラウド上のサービスとして提供されるミドルウェアでホストにアクセスできない場合でも、別のホストにインストールしたInfrastructureエージェントから監視することが可能です。
OHIはNew Relicが提供しているものと、OSSとしてコミュニティから提供されているものがあります。こちらにリストされているように様々なものがあります。
https://docs.newrelic.com/docs/integrations/host-integrations/host-integrations-list
https://docs.newrelic.com/docs/integrations/host-integrations/open-source-host-integrations-list
Integrationは今のところ、ほぼLinuxホストのInfrastrucutreエージェントのみサポートしています。この中で1つだけWindowsホストのみで動くものがあります。今回はそのMicrosoft SQL Serverのインテグレーションを紹介したいと思います。
Infrastructureエージェント本体はWindows Serverのみサポートですが、監視対象とするSQL Serverは(接続可能である限り)2008 R2 SP3以降をサポートしており、コンテナ上のSQL ServerやLinuxサーバー上のSQL Serverも監視可能です。
インストール手順も非常に簡単です。Infrastructure エージェントをインストールしていない場合はいくつかインストールの手順がありますが、インストーラーを利用する場合はこちらの手順ですぐにインストールできます。
次にデータベース監視用のログインとユーザー、および権限設定を行います。データベースに接続し、以下のコマンドを実行します。なお、日本語版(未翻訳)のドキュメントだとGRANT文の対象がuser_name
になっていますが、login_name
の誤りだと思われます。修正依頼中ですのでお待ちください。
USE master;
CREATE LOGIN <login_name> WITH PASSWORD = 'tmp_password';
CREATE USER <user_name> FOR LOGIN <login_name>;
GRANT CONNECT SQL TO <login_name>;
GRANT VIEW SERVER STATE TO <login_name>;
次に以下のSQLでREAD権限を設定します。
DECLARE @name NVARCHAR(max)
DECLARE db_cursor CURSOR FOR
SELECT NAME
FROM master.dbo.sysdatabases
WHERE NAME NOT IN ('master','msdb','tempdb','model')
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE('USE "' + @name + '"; CREATE USER user_name FOR LOGIN login_name;' );
FETCH next FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
準備ができたらインテグレーションをダウンロードしてインストールします。
Invoke-WebRequest http://download.newrelic.com/infrastructure_agent/windows/integrations/nri-mssql/nri-mssql-amd64.msi -OutFile nri-mssql-amd64.msi
msiexec.exe /qn /i nri-mssql-amd64.msi
インストールすると、C:\Program Files\New Relic\newrelic-infra\integrations.d\mssql-config.yml.sample
というサンプル設定ファイルがあるので、mssql-config.yml
にリネームして必要な内容を設定します。詳細な設定はドキュメントにありますが、例えばsqsvronwin
とsol.westus2.cloudapp.azure.com
にある2つのインスタンスを監視する場合はこのようになります。前者はInfraエージェントと同じホストにインストールしたインスタンス、後者はAKS上で動いているLinuxコンテナのインスタンスです。
integration_name: com.newrelic.mssql
instances:
- name: sqsvronwin
command: all_data
arguments:
hostname: sqsvronwin
username: nr_user
password: <password>
port: 1433
labels:
env: production
role: mssql
type: vm
- name: sol-k8s
command: all_data
arguments:
hostname: sol.westus2.cloudapp.azure.com
username: nr_user
password: <password>
port: 1433
labels:
env: production
role: mssql
type: k8s
app: contoso
設定が終わったらInfrastructureエージェントを再起動して反映させます。
Restart-Service newrelic-infra
数分するとダッシュボードで確認できます。InfrastrucutreダッシュボードのThird-party services
のActive Integrations
にMSSQL dashboard
へのリンクが表示されます。
ここのダッシュボードではこのようなメトリクスを確認できます。
デフォルトでは監視しているインスタンス全てが表示されますが、適宜フィルターすることができます。
収集している全てのメトリクスについてはドキュメント下部のMetric data
セクションを参考にしてください。大きく分けて、データベース、インスタンス、待機の3つのカテゴリに分かれています。
また、sp_configure
ストアードプロシージャとsys.configurations
テーブルから収集して設定パラメーターをインベントリ機能から参照することができます。
今の所収集できるメトリクスのカスタマイズなどはできませんが1、このような機能が用意されています。ぜひご活用ください。
-
インテグレーションSDKを使ってインテグレーションそのものを自分で作成することは可能 ↩
Author And Source
この問題について(New Relic オンホストインテグレーションでMicrosoft SQL Serverを監視する), 我々は、より多くの情報をここで見つけました https://qiita.com/takayoshitanaka/items/7455b52640c9680cb85e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .