Application Insights で Web アプリの詳細な診断を行う
このポストは、11 月 18 日に投稿された Deep Diagnostics for Web Apps with Application Insights の翻訳です。
このたびニューヨークで開催された Connect() 2015 (英語) において、以下のアプリケーション分析/診断サービスに関するいくつかの発表がありました。
- Web アプリ/サービス: Visual Studio Application Insights
- モバイル アプリ: HockeyApp (英語)
マイクロソフトは現在、上記の各製品を強化し、Visual Studio や Visual Studio Team Services を含む ALM ツールやサービスとの統合を拡張するべく取り組みを進めています。
HockeyApp は、iOS、OS X、Android、Windows デバイス向けアプリや、Xamarin、Cordova、Unity を使用したクロス プラットフォーム アプリを開発するためのモバイル DevOps ソリューションです。HockeyApp を使用すると、ベータ テスト用のビルドを配信し、クラッシュ データを収集して、ユーザーからのフィードバックを得ることができます。Visual Studio Team Services と統合されているため、ビルドのデプロイメントや作業項目の統合も簡単です。詳細については、HockeyApp のサポート ページ (英語) をご覧ください。また、最新情報については HockeyApp のブログ (英語) でご確認いただけます。
今回の記事では、Web アプリや Web サービスで利用可能な Application Insights についてご紹介します。
Visual Studio との統合
マイクロソフトの ALM および DevOps スタック全体における Application Insights の役割は、開発者が運用中の Web アプリの問題を検出、診断し、その影響度に応じて問題に優先順位を付けることを支援するというものです。開発チームが継続的デリバリを導入するうえでは、頻繁に変更されるアプリに発生している問題をすべて把握しておくことが非常に重要です。
そこで、開発プロセスに欠かせない機能として Application Insights の統合を進めています。既に Application Insights は Visual Studio 2013 と 2015 で提供されており、最小限の労力で迅速に新規または既存のアプリの配布準備を行えるようになっています。
近日リリースされる Visual Studio 2015 Update 1 では、Azure プレビュー ポータルで利用可能な Application Insights の検索エクスペリエンスを IDE 内から直接開始できます。そのため、問題の調査中やバグのトリアージ中にブラウザーを起動しなくても、運用環境のテレメトリ データを検索し、その結果を表示してイベントの詳細を確認できるようになります。これにより、Application Insights を開発ツールとして利用できるほか、カスタムのテレメトリ機能を運用環境にプッシュする前に簡単にテストすることもできます。
また、Visual Studio 2015 Update 1 からは Application Insights が Visual Studio の診断機能 (英語) と統合され、Application Insights SDK から出力されたデータを F5 キーでデバッグできるようになります。プロジェクトに SDK をインストールするだけで、F5 キーでの他の診断機能によるイベント タイムラインに Application Insights のテレメトリ イベントを一緒に表示できます。
近日中には、Visual Studio Team Services (VSTS) との統合もさらに強化され、運用前、運用後、テスト、監視の各チームが連携できるようになります。VSTS Release Management で使用したデプロイメントに関するアノテーションを Application Insights のグラフに表示すると、パフォーマンスの変化とビルドの相関関係を簡単に把握することができます。
問題の事前検出
Application Insights は開発者向けに設計されています。今日では、開発チームが運用チームにアプリケーションを丸投げすることはなくなりました。開発サイクルはスケジュールが厳しく、開発者は運用中にアプリに発生した問題を把握する必要があるためです。しかし、運用環境はデバッグまたはテスト環境とは異なり、条件がさまざまに変化します。全面的に応答時間が低下すれば気付くのは簡単ですが、一部のケースで一部のユーザーのみに影響する要因を特定することは困難です。
マイクロソフトは現在、異常なセグメントやサービスの低下を特定するために機械学習の導入を進めています。これにより、問題の性質について詳細な分析が可能になり、運用環境の問題を軽減するまでの時間を短縮することができます。たとえば、特定の時間帯に特定のサーバーからの Web アプリの応答が低下する場合などに、問題の詳細について警告が表示されます。試用を希望される場合は、AppInsightsML@microsoft.com までご連絡ください。セットアップ作業をお手伝いいたします。
Azure のアプリケーション診断機能のハブ
マイクロソフトは、Azure アプリ開発者が直面している主要な課題、具体的には、パフォーマンス低下やアプリのデプロイとアップグレードに関する不具合の診断に継続的に対処 (英語) しており、Application Insights を Azure のアプリケーション診断機能のハブとするために取り組んでいます。
Azure SDK 2.8 (英語) から、Application Insights を使用して Web ロール、Worker ロール、Windows VM の Azure Diagnostics のテレメトリにアクセスできるようになりました。今後は、Application Insights でパフォーマンス カウンター、Windows イベント ログ、アプリ トレースを収集し、アプリから送信された応答時間、依存関係、カスタム イベントと関連付けることができます。これにより必要なすべての情報が 1 か所に集約され、問題の検出、トリアージ、診断をより迅速に行えるようになります。
拡張性、オープン性、柔軟性
Application Insights の大きなメリットは事前設定不要のテレメトリ機能にありますが、インストルメンテーションをカスタマイズしてアプリケーションからトレース、例外、ページ ビュー、依存関係などを収集することもできます。データの収集をより詳細に制御できるようにするために、最近になってサンプリングという概念が導入されました。簡単に言えば、収集および保存するテレメトリの種類を限定しながらも、統計的な正確性を維持してポータル内でのアプリケーション データを分析するという考え方です。
Application Insights のすべての SDK は GitHub 上でオープン ソース化 (英語) されており、コミュニティの皆様からご協力をいただいています。現在、ASP.NET、J2EE、Ruby、PHP、JavaScript、Node.JS、Python をはじめ、さまざまなプラットフォームに対応する多数の SDK が公開されています。
ご自分のデータを他のデータ ソースとマッシュアップしたい場合は、連続エクスポートを設定すれば、SQL、Excel、Power BI などのツールでデータを分析できます。先日発表された Application Insights Content Pack for Power BI (英語) を使用すると、たとえば売上データと Web サイトの利用状況をリアルタイム Power BI ダッシュボードに一緒に表示することができます。
まとめ
Application Insights は皆様が求めていた強力なアプリケーション分析ソリューションへと成長しつつあります。事前設定することなくパフォーマンスや例外を診断できるほか、強力なログ記録や指標の分析機能をさらに組み合わせることにより、サービスに関する問題を効率的に検出、トリアージ、調査できます。
Application Insights をご利用のお客様は、こうした機能について次のように語っています。
「数日前、当社は “マイナー” な修正プログラムをデプロイしました。広範なテストは実行しませんでしたが、ペイロードに想定外の変更がマージされてしまい、フロントエンドとバックエンドで互換性の問題が生じました。瞬時にサーバーで例外の発生が急増し警告が表示されたため、その事態に気付いたのですが、Application Insights ポータルで数回クリックしただけで、例外のコール スタックから十分な情報を入手し問題を絞り込むことができました。すぐにロールバックを実施したため、被害は最小限に留まりました。Application Insights のおかげで、DevOps サイクルのこの段階での対処が非常に簡単になりました」。
新機能や機能強化のアイデアがありましたら、Application Insights の UserVoice ページ (英語) までお寄せください。ご不明な点については、Application Insights のフォーラム (英語) をご利用ください。