公開日:2024年3月7日最終更新日:
システム運用において、パフォーマンス分析は安定稼働やユーザビリティの向上を図るために重要な業務です。パフォーマンス分析は開発、テスト、運用などの場面で行われますが、人員や工数もかかるため効率化が求められます。Azureではアプリケーション性能管理に特化したApplication Insightsが提供されており、包括的な監視サービスであるAzure Monitorの一部として機能します。
本記事では、Application Insightsの特徴と具体的な使用方法を紹介します。
目次 <Contents>
Application Insightsの概要
Application Insightsは、Azureの監視ソリューションであるAzure Monitorに含まれる機能であり、アプリケーションのパフォーマンス向上を図る洞察を得るためのデータ分析基盤を提供します。本章ではApplication Insightsの概要と位置づけを紹介していきます。
Application Insightsとは
Application Insightsは、アプリケーションの監視を担うAzureサービスの1つです。アプリケーションの性能を常時計測することで、アクセス状況、障害の予兆、アクセス集中時の性能劣化を分析できるため、機能改善や障害対策に役立ちます。
また、開発サイクルに分析フェーズを取り入れることで、リリース前からアプリケーションの改善が図れるため、ユーザにとってより良い体験を提供できます。Application Insightsでは、より簡単なフローで、視覚的にわかりやすく洞察を得られるログ分析基盤が提供されます。
Azure Monitorに内包されたサービス
Azure Monitorは、仮想マシン、コンテナ、アプリケーションなどのさまざまなリソースに対してログ収集から分析までを包括的にサポートする監視ソリューションです。Application InsightsはAzure Monitorに含まれる機能であり、アプリケーションの監視・分析を行うサービスです。
なお、本記事ではApplication Insightsを中心に話を進めていきますが、監視業務に必要なAzure Monitorの機能も含めて紹介します。
Application Insightsで監視できる項目
Webアプリケーションの監視では性能を計測するために、例えば下記の項目を収集します。
- 応答時間、エラー率
- 時間帯、アクセス元情報
- 外部サービスによる応答時間、エラー率
- ページビュー、ユーザー数、セッション数
応答時間やエラー率は性能改善に、ページビューやユーザー数は機能・サービス改善に役立ちます。上記はApplication Insightsで定義されている監視項目ですが、稼働するアプリケーション側のコードを変更して独自の項目をApplication Insightsに送り出すことも可能です。
また、監視項目は次の保存形式があります。
ログ
タイムスタンプ付きの構造化テキスト。クエリ言語(KQL)による抽出が可能。
メトリック
一定期間で自動的に収集される定量的データで、時系列のデータベースに格納される。
ログの収集はApplication Insights SDKを利用してアプリケーションのコードに組み込むことが可能です。一部の言語で書かれたアプリケーションでは、コードを変更せずにログ収集を組み込むことができます。コード変更は動作に影響を与えるため、デプロイ済みの完成したアプリケーションでは役に立ちます。
なお、メトリックやログが異常値に達したときにアラートする機能が使えるため、監視作業の負担軽減に役立ちます。
Application Insightsの活用例
Application Insightsでは、ログ分析による洞察を得られるほか、検出値をトリガーにしたアクションを起こすことが可能です。
スパイク時の自動スケーリング
パフォーマンスの監視は、過剰な負荷が観測されたときの自動スケーリングに役立ちます。負荷の増減に応じて必要なリソースが維持されるため、高いコストパフォーマンスでの運用が可能です。例えば、CPUやメモリの使用率を監視し、予め定めたしきい値やスケジュールに応じて水平自動スケーリングが可能です。
時期的なアクセス集中を見越して自動スケーリングのルールを決めておくことで、過負荷によるサーバーダウンを防止できます。また、過去のリソース利用状況から独自の機械学習アルゴリズムに基づいてピークを予測し、自動スケーリングを行う機能もあります。
スマート検出によるセキュリティ通知
スマート検出は、アプリケーションで発生した異常を自動検出し、ユーザーに報告する機能です。収集した監視データが、独自の機械学習アルゴリズムに基づいて検証され、エラー率やリクエスト要求の失敗が異常的なパターンに一致するか検出されます。これまで収集した監視データからアプリケーションの正常な動作を学習し、より精密な異常検出が行えます。正常なアクセスを見分けることで、疑わしい悪意のあるアクセスを検出できるので、セキュリティ問題の特定にも役立ちます。
オンプレミス環境の監視
Application Insightsはクラウド環境だけでなく、オンプレミスのアプリケーション監視にも利用可能です。Application Insightsエージェントを経由することで、オンプレミスからAzure 上に収集データを送信できます。
また、アプリケーションがホストされたオンプレミスサーバーから SDKを利用して独自のログを送信することも可能です。Azure上にホストされたアプリケーションでなくても、従量課金制のパフォーマンス監視ソフトウェアとして利用できます。
Webアプリケーションの可用性テスト
Application Insightsでは可用性テストの設定が可能です。可用性テストでは、複数リージョンから定期的にアプリケーションへのWeb要求を送信し、応答に異常がないかチェックします。
URL pingテスト
単純なWeb応答をテストできます。例えば、応答コードやタイムアウトを検証できます。
標準テスト
正しいWeb応答が受け取れるかテストできます。例えば、HTTP要求動詞、応答コード、カスタムヘッダ、タイムアウトを検証できます。
カスタムTrackAvailabilityテスト
アプリケーション側からAzureにテスト情報を送り出すことができます。他のテストよりも詳細な検証が可能です。
標準テストとURL pingテストは、設定が簡単で利用料金も低いため、開発段階から運用まで継続利用がしやすいです。なお、URL pingテストは2026年9月30日に廃止予定のため非推奨になっており、標準テストの利用や移行が推奨されています。
Application Insightsのサービス内容
Application Insightsは監視や分析に必要なさまざまなツールを提供しますが、課金項目が複雑になっています。ただし、主な利用料金はログの蓄積量に関係するため、無駄なログは極力排除したほうが良いでしょう。
ログ分析基盤
Aruze Monitorには分析に必要な機能が詰まっており、ログ収集から分析までサポートします。
例えば、Azureポータルでは下記の機能が提供されます。
ダッシュボード
主要ログの可視化、よく使う機能のショートカットなど、必要な機能に素早くアクセスできるようにするカスタマイズ可能なホーム画面です。
メトリックエクスプローラ
収集されたメトリックを折れ線グラフや棒グラフなどで視覚化する機能です。
ログ検索
収集されたログをクエリ(KQL)を使用して確認できる機能です。情報を集約したクエリは、異常検出するアラートのルールに組み込むことも可能です。
診断設定
App ServiceなどAzureリソースから出力するログを設定できる機能です。すべての監視データを記録すると余計なログが増えるため、分析に必要な項目に絞りましょう。
アラート
特定の監視データパターンが記録されたときのアクションや、その通知方法を設定できる機能です。アクションとしては、Webhookで外部サービスと連携したり、既存のAzure Functionsを実行したりできます。また、アラートの通知方法はメールやSMSを選べます。
利用料金
各機能ごとに課金体系が異なります。
ログ
- Basicログ:107円/GB
- 基本ログ検索クエリ:1.071円/GB ※スキャンされたデータが対象
メトリック
- プラットフォームメトリック:無料 ※容量無制限で90日保持
アラート
- アクティビティログアラート:ルール・時系列作成は無料
- ネイティブメトリック:ルール作成無料、時系列ごとに14.768円
通知
- メール:100,000通につき295.35円 ※1,000通/月は無料
- WebHook:1,000,000件につき88.605円 ※100,000件/月は無料
Webテスト
- 標準Webテスト:テスト実行ごとに0.10707円
- URL pingテスト:無料
※料金は1ドル=147円で算出しています。
ログが増えるほど保管や検索クエリ使用のコストが上がるので、規模が大きくなるほど注意が必要です。そこで、収集タイミングを調整できるサンプリング機能や、収集項目を制限できるフィルター処理を活用することで、総データ量を削減でき、結果的に利用料金をおさえられます。
Application Insightsの使い方
Azureポータルを利用したApplication Insightsの使い方を紹介します。
監視対象のリソースには、Azureのアプリケーションホスティング環境であるApp Serviceを指定します。ここでは、HTTPアクセスの監視を想定しているので、テキストを表示する簡単なWebアプリケーションを想定しています。先にアプリケーションをデプロイし、インターネット上からアクセスして動作確認しておきましょう。
ログ出力先の指定
AzureポータルからLog Analyticsワークスペースを選び、「Log Analyticsワークスペースの作成」ボタンから進みます。次の画面で下記の項目を入力します。
- リソースグループ:適当な名称
- インスタンスの詳細>名前:Log Analyticsの名前
- 地域:Japan East
正常に作成されると、「デプロイが完了しました」が表示されます。
次に、監視対象リソースのApp Serviceを開きます。「Application Insightsを有効にする」をクリックし、次の画面で同名のボタンをクリックしましょう。
次の画面で下記の項目を入力していきます。
- リソースの変更:新しいリソースの作成
- 新しいリソースの名前:適当な名称
- 場所:Japan East
- LogAnalyticsワークスペース:作成したLog Analyticsワークスペースの名前
最後に「適用」ボタンをクリックします。
またApp Serviceの画面に戻り、左のメニューから「診断設定」に進みます。「診断設定を追加する」ボタンをクリックし、次の画面に進みます。
下記の項目を入力します。
- 診断設定の名前:適当な名前を入力
- ログ>カテゴリ>HTTP logs:チェックを入れる
- メトリック>AllMetrics:チェックを入れる
- 宛先の詳細>Log Analyticsワークスペースへの送信:チェックを入れる
- 宛先の詳細>Log Analyticsワークスペース:作成したLog Analyticsの名前
最後に「保存」ボタンをクリックします。これでLog Analyticsワークスペースにログが出力されるようになります。
ログ出力と確認
ログ出力を確認するために、まずはApp ServiceのWebアプリケーションに再度アクセスしておきましょう。アクセスできたらAzureポータルからログを確認します。
Azureポータルの「ホーム」から、作成したLog Analyticsを選びましょう。左のメニューから「ログ」を選ぶと、クエリ画面が開きます。
クエリ画面の左側の「テーブル」タブ内にある「LogManagement」をクリックし、続けて「AppServiceHTTPLogs」をダブルクリックします。右側にクエリが入力されるので、「実行」ボタンをクリックしましょう。
少し待つと、右下にクエリ結果が表示されます。アクセスした日時のログが表示されていれば成功です。
まとめ
本記事では、アプリケーション監視サービスであるApplication Insightsの特徴と使い方を紹介しました。アプリケーション監視の結果をもとにパフォーマンス改善を図ることは、UXの向上やリソースの効率化につながります。また、監視業務の負担が軽減され、他の大事な運用に集中できます。Application Insightsは低コストで始められるため、まずは導入しやすい部分での利用を検討してみてください。