しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

New Relic を使って SQL Azure の監視も行ってみた

以前に Windows Azure Web サイトで New Relic を使ってみた - しばやん雑記 で New Relic を Windows Azure Web サイトで使う方法を紹介しましたが、今回は SQL Azure の監視も追加で行ってみます。

監視を行うためには以下のプラグインのインストールと、インストール用のマシンが必要になります。

http://newrelic.com/plugins/new-relic-inc/86

SQL Azure 用のプラグインは SQL Server 用と同じものを使う形になっています。New Relic から提供されているプラグインなので、多少の安心感はありますね。

インストールは非常に簡単なんですが、始める前に手順だけおさらいしておきます。

  1. SQL Azure に監視用のユーザー追加
  2. プラグインをダウンロード、展開
  3. 設定ファイルにライセンスキーと SQL Azure のユーザー情報を追加
  4. 設定が正しく行えているかテスト
  5. プラグインをサービスとしてインストール

ざっとこんな感じです。

プラグインのインストール前に SQL Azure に監視用のユーザーを作成しておきましょう。SSMS などで SQL Azure に接続して、master データベースに対して以下の SQL を実行します。

CREATE LOGIN NewRelic WITH password='新しいパスワード';
GO

CREATE USER NewRelicUser FROM LOGIN NewRelic;
GO

実行が完了したら、次は監視したいデータベースへの新しいクエリを作成して、以下の SQL を実行します。

CREATE USER NewRelicUser FROM LOGIN NewRelic;
GO

GRANT VIEW DATABASE STATE TO NewRelicUser
GO

はい、簡単でしたね。

データベースの切り替えだけ注意しないとエラーになって悩みます。というか、悩みました。

それでは次にプラグインのインストールを行っていきましょうか。まずは New Relic のサイトから SQL Azure 用のプラグインを落としてきましょう。

「Get Started」からダウンロードページへ進めます。

ダウンロードリンクはページの一番下に、ライセンスキーと同じく表示されてます。

ダウンロードして展開すると、以下のようなファイルが生成されます。README.md にインストール方法が書いてあります。そして、設定ファイルは NewRelic.Microsoft.SqlServer.Plugin.exe.config になります。

設定ファイルを開いて、ライセンスキーと SQL Azure の接続文字列を設定します。

<service licenseKey="YOUR_KEY_HERE" pollIntervalSeconds="60" />

<azure>
  <database name="Azure Cloud Database"
            connectionString="Server=tcp:foobar.database.windows.net,1433;Database=foobar;User ID=NewRelic@foobar;Password=p@ssword;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" />
</azure>

これで設定は完了です。

一応、設定が正しく行えたかを確認しておきましょう。プラグインのディレクトリで、管理者権限ではないコマンドプロンプトを立ち上げて、以下のコマンドを実行するだけです。

NewRelic.Microsoft.SqlServer.Plugin.exe --test

SQL Azure の設定が正しくない時には、コンソールにエラーが表示されるので対応してください。

テスト実行に成功したら、プラグインを Windows サービスとしてインストールします。今回は管理者権限でコマンドプロンプトを立ち上げて、以下のコマンドを実行します。

NewRelic.Microsoft.SqlServer.Plugin.exe --install

インストールが完了すると、サービスは自動的に開始されます。数分後に New Relic のサイドバーに「Azure SQL」という項目が追加されているはずです。

一覧にあるデータベース名をクリックすると、監視状態を確認出来ます。タブを切り替えて、いろいろな情報を確認できるのが便利ですね。

New Relic では SQL Azure を使っていると避けることのできないスロットリング周りの状態も確認できるのですが、最近は Wait States を確認することが多いですね。

内容に関してはムッシュが丁寧にまとめてくださっているので、そちらを参照してください。さすが安心と信頼のムッシュですね。

今ほどSQL Database におけるシステムの動作傾向の把握が必要とされている時代はない | ひさし の雑記

あと New Relic では SendGrid の情報も表示するようにしています。Azure のキャッシュやストレージの監視も出来れば非常に便利なんですが、現時点では出来ないので今後に期待したいです。