Slide 1

Slide 1 text

Application Insights Preview @shibayan Microsoft MVP for ASP.NET/IIS http://shibayan.jp/

Slide 2

Slide 2 text

はじめに • 今日は Azure と Visual Studio の間をフラフラしている Application Insights について話します • Visual Studio 2015 リリース記念なので、Visual Studio から扱 える範囲に絞ることにします

Slide 3

Slide 3 text

注意点 • Application Insights はまだ Preview です • 必要なものはデータが遅延しても泣かない気持ち

Slide 4

Slide 4 text

Application Insights とは • アプリケーションのパフォーマンスの解析、クラッシュの診断、 使用状況の追跡が行えるサービス • 先行する New Relic に近いサービス • データ量に基づく課金体系、無料で使用可能 • 月間 500 万データポイント、生データ保存 7 日の制限のみ • 有料版だと Blob へのデータエクスポート機能も

Slide 5

Slide 5 text

Application Insights で出来ること • Web アプリケーション • パフォーマンス、クラッシュ監視、使用状況の追跡、パフォーマンス カウンタの確認 • Web アプリケーション実行環境 • 外部サービスの呼び出し追跡、パフォーマンスカウンタの確認 • クライアントアプリケーション • クラッシュ監視、使用状況の追跡

Slide 6

Slide 6 text

対応するプラットフォーム • Web アプリケーション • ASP.NET / ASP.NET 5 / Java / JavaScript / Python / Ruby / PHP • Web アプリケーション実行環境 • Windows Server (IIS) / Azure Web Apps • クライアントアプリケーション • Android / iOS / OS X / Windows Store App / デスクトップアプリ

Slide 7

Slide 7 text

Web アプリケーション

Slide 8

Slide 8 text

Application Insights SDK • 基本的なイベントのハンドリング • アプリケーションの起動、終了など • キャッチされていない例外のハンドリング • スタックトレースなどをテレメトリとして送信 • カスタムメトリック、トレースログの送信 • TraceListener / NLog を使っている場合には、対応するパッケージを インストールするだけで対応可能

Slide 9

Slide 9 text

ASP.NET アプリケーションに組み込む • Visual Studio から簡単に SDK をインストール可能 • ASP.NET アプリケーションの作成時 • 作成済みアプリケーションへ追加 • Application Insights 自体は Web App の追加時に作られる • ポータルから単体で作成することも可能

Slide 10

Slide 10 text

ASP.NET アプリケーションの作成時 チェックを入れるだけ

Slide 11

Slide 11 text

作成済みアプリケーションへ追加 テレメトリの追加を選ぶ 右クリックして

Slide 12

Slide 12 text

対象の App Insights を選択して完了 送信先を選択して クリックすれば完了

Slide 13

Slide 13 text

Web Apps で使う場合の注意 • パフォーマンスカウンタは Web Apps では参照できないので、 Application Insights の設定から外しておく • 放置しておくとテレメトリがおかしくなる • ApplicationInsights.config の TelemetryModules に存在する PerformanceCollectorModule を削除

Slide 14

Slide 14 text

パフォーマンスカウンタを使わない コメントアウトする

Slide 15

Slide 15 text

クライアント用 JavaScript を追加 • Azure ポータルからスクリプトをコピー&ペースト の直前に貼り付ける

Slide 16

Slide 16 text

ローカル環境で動作確認 • Visual Studio でデバッグ実行を行う • 最初にテレメトリが送信されたタイミングでメッセージ表示 • 診断ツールでもテレメトリの確認が可能

Slide 17

Slide 17 text

デプロイしてポータルから確認 クライアント側の情報 アプリケーション側の情報

Slide 18

Slide 18 text

エラー画面を表示している場合 • ASP.NET MVC の場合は HandleError を変更 • http://blogs.msdn.com/b/visualstudioalm/archive/2014/12/12/appl ication-insights-exception-telemetry.aspx • 任意のタイミングで例外を通知することもできる try { // 例外を投げるかもしれない new WebClient().DownloadString("..."); } catch (WebException ex) { // App Insights に例外が投げられたことだけは伝える var ai = new TelemetryClient(); ai.TrackException(ex); }

Slide 19

Slide 19 text

アプリケーションのエラーを確認 500 エラーの原因に なった例外 例外が発生した環境 の詳細情報 スタックトレースと メッセージを確認

Slide 20

Slide 20 text

Web アプリケーション 実行環境

Slide 21

Slide 21 text

Application Insights Status Monitor • 仮想マシンへのインストール向けモニタリングサービス • Windows の管理者権限があれば利用可能 • 既存のアプリに変更を加えることなく Application Insights を 使ったパフォーマンスの監視が行える • 既に運用中のアプリケーションの監視に最適 • .NET Framework 4.5 と ASP.NET 4.5 が必須

Slide 22

Slide 22 text

Status Monitor のインストール Web PI でインストール Application Insights を追加 対象のアプリケーションを選ぶ

Slide 23

Slide 23 text

Application Insights Site Extension • Status Monitor のインストールが出来ない Azure Web Apps 用 に追加されたモニタリングサービス • Azure ポータルから 30 秒でインストール可能 • App Insights SDK を組み込んだアプリとセットで動作 • 単体での動作は想定していない

Slide 24

Slide 24 text

Site Extension のインストール Application Insights を選ぶ インストールが完了すると 表示される

Slide 25

Slide 25 text

外部サービスの呼び出し確認 SQL DB へのアクセス が表示される 実行されたクエリが 確認可能

Slide 26

Slide 26 text

Application Insights の活用

Slide 27

Slide 27 text

Web test で可用性の確認 • Azure ポータルから ping テストを作成 テストを行う リージョンを選択 テスト結果が表示される

Slide 28

Slide 28 text

テストシナリオを作成 • Visual Studio で Web パフォーマンスプロジェクトを作成 プロジェクトを作成して シナリオをレコーディング

Slide 29

Slide 29 text

作成したシナリオを使ってテスト • 作成した webtest ファイルをアップロード Multi-step を選んで 作成した webtest ファイル を選択 テスト結果が表示される

Slide 30

Slide 30 text

Stream Analytics との連携 (1) • Application Insights から継続的に Blob へイベントを書き出す 必要なイベントのみを 選択可能

Slide 31

Slide 31 text

Stream Analytics との連携 (2) • Stream Analytics でイベントをストリームデータとして処理 • 結果を SQL Database / Storage / Power BI へ出力 Azure Stream Analytics イベント単位で書き出される

Slide 32

Slide 32 text

まとめ • Application Insights はプレビューだけど使えるレベルに • データの遅延は頻繁に起こっているので注意 • 当然ながら Azure との親和性は抜群に良い • Azure ポータルを使えば GUI だけで、ほとんど設定できる • Visual Studio との連携でさらに便利に