Application InshghtsのRuby SDKに先日出したプルリクエストが取り込まれたことにより、Ruby on RailsなどRackアプリケーションのメトリクスをApplication Insightsで取れるようになりました。
Application Insightsとは?
ウェブアプリやモバイルアプリなどのアプリケーションのパフォーマンスやエラーなどの情報を収集し、アラートや分析をするためのサービスです。
セットアップ
Application Insightsの作成
PortalからApplication Insightsを作成する
Azure Portalから、Application Insightsのブレードを開き、新規作成します。
Rubyの場合、Application TypeはGenralとして作成します。
Locationは、まだ日本が含まれていません(2017年8月1日時点)。どこを選んでも変わりが無いので、好きなところを選びましょう。
Instrumentation Keyを取得
作成したApplication Insights のブレードを開き、Propertiesを選択し、表示されるInstrumentation Keyの値をコピーしましょう。
この後に、Rackミドルウェアをインストールする際のパラメーターとして利用します。
Rackミドルウェアの追加
お使いのRackアプリケーションのgemの依存関係をbundlerで管理している場合、Gemfile
に
gem 'application_insights', github: 'Microsoft/ApplicationInsights-Ruby'
を追加します。
その後、application_insights
が提供するRackミドルウェアをインストールしましょう。
例えば、Sinatraのアプリケーションの場合は以下のようにします。上でコピーしたInstrumentation Keyは環境変数INSTRUMENTATION_KEY
として定義されているものとします。
require 'sinatra'
require 'application_insights'
use ApplicationInsights::Rack::TrackRequest, ENV['INSTRUMENTATION_KEY'], 5
get '/' do
'Hello, Application Insights!'
end
サンプルコードをGistに置いたので、参考にどうぞ。
ざっくりと使い方
Portalからチャートを見る
ポータルから該当のApplication Insightsのブレードを開くと、収集したリクエストの情報が見れます。
リクエストのパラメーターやブラウザの情報、エラー時のスタックトレースなど細かな情報まで集めており、独自のクエリを書くことで細かな分析もできるようです。
また、PowerBIと連携させたり、REST APIが提供されていたりと、外部で連携させることも可能なようです。Stream Analytics とも連携できるそうなので、機械学習含めAzure上で色々な解析ができそうですね。