ハイブリッドの可用性とパフォーマンスの監視

Azure Event Hubs
Azure Log Analytics
Azure Monitor
Azure Storage
Azure Virtual Machines

この参照アーキテクチャでは、Azure Monitor を使用して、仮想マシン (VM) で実行されているオペレーティング システム (OS) のワークロードのパフォーマンスと可用性を監視する方法を示します。 VM は、Microsoft Azure、オンプレミス環境、または Azure 以外のクラウドにあります。

アーキテクチャ

Azure、オンプレミス環境、およびサード パーティのクラウド プロバイダー Azure Monitor OS ワークロードの監視と可用性の機能を示す図。データが Log Analytics ワークスペースに送信されています。データは、Azure Monitor を構成する、Application Insights、分析、視覚化、アラート、自動スケーリングの各サービスによって使用されます。

このアーキテクチャの Visio ファイルをダウンロードします。

ワークフロー

  • オンプレミスのメイン オフィス - VM 1。 このコンポーネントは、インターネット アクセスと公開された Web ページを使用する Web アプリケーションであり、Log Analytics および Dependency の両方のエージェントがインストールされています。 エージェントの詳細については、「Log Analytics エージェントの概要」および「Azure Monitor エージェントの概要」の「依存関係エージェント」を参照してください。
  • オンプレミスのメイン オフィス - VM 2。 このビジネスロジック環境からは、インターネットにアクセスできません。 ただし、Log Analytics および Dependency エージェントがインストールされています。
  • オンプレミスのメイン オフィス - VM 3。 このコンポーネントは、インターネット アクセスはないが、Log Analytics および Dependency エージェントがインストールされているデータストアです。
  • オンプレミスのメイン オフィス - Log Analytics ゲートウェイ。 Log Analytics ゲートウェイは、3 つのオンプレミス VM からログとメトリックのデータを収集し、それらをポート 443 から伝送制御プロトコル (TCP) を介して "Log Analytics ワークスペース" に配信します。
  • オンプレミスのメインオフィス - ファイアウォール。 トラフィックは、オンプレミス環境との間でファイアウォールを経由してルーティングされます。
  • ゲートウェイ。 ゲートウェイにより、ブランチ オフィスへの接続が提供されます。
  • オンプレミスのブランチ オフィス - VM 4。 このコンポーネントは、インターネット アクセスなしで実行されているビジネス アプリケーションですが、Log Analytics および Dependency エージェントがインストールされています。 VM にインストールされている Log Analytics エージェントは、データを Log Analytics ワークスペースに直接転送するように構成されており、Log Analytics ゲートウェイは必要ありません。
  • オンプレミスのブランチ オフィス - ゲートウェイ。 このゲートウェイは、仮想プライベート ネットワーク (VPN) 経由でブランチ オフィスをオンプレミスのメイン オフィスに接続します。
  • サードパーティのクラウド プロバイダー - VM 5。 このコンポーネントは、インターネット アクセスと公開された Web ページを使用する Web アプリケーションであり、Log Analytics および Dependency の両方のエージェントがインストールされています。
  • サードパーティのクラウド プロバイダー - VM 6。 このコンポーネントは、インターネット アクセスはないが、Log Analytics および Dependency の両方のエージェントがインストールされているデータストア環境です。 サードパーティのクラウド プロバイダー環境からオンプレミス環境への直接接続はありません。
  • Azure - VMSS。 これは、Azure Virtual Machine Scale Sets を使用して作成されたスケール セットです。 これは、ログ分析と診断エージェントがインストールされたビジネス アプリケーションを実行します。
  • Azure - アプリケーション サーバー。 このサーバーには、ビジネス アプリケーションを実行する単一の VM があり、Log Analytics および診断エージェントがインストールされています。
  • Azure Monitor のメトリック。 Azure Monitor のメトリックによって収集されるデータは、タイムスタンプ付きデータの分析に最適化された時系列データベースに保存されます。 また、オンプレミスの VM と Azure VM から送信されてきたメトリックもここに格納されます。
  • Azure Monitor - Log Analytics ワークスペース。 このワークスペースには、オンプレミスの VM、Azure VM、サードパーティのクラウド プロバイダーの VM から送信されてきたログが格納されます。 このワークスペースはデータが集計される Azure リソースであり、このデータにアクセスするための管理上の境界として機能します。 次に、他の Azure Monitor サービスが Log Analytics ワークスペースに接続し、このデータをさまざまな目的に使用します。 詳細については、「Azure Monitor ログのデプロイの設計」を参照してください。
  • Azure Monitor - 分析情報 - Application Insights。 Application Insights は、アプリケーションの分析とその使用状況に関する分析情報を提供します。 このアーキテクチャの例では、使用可能性 ping テストによってオンプレミス Web アプリケーションの使用可能性がチェックされます。 アラート ルールが有効になっており、テストが失敗した場合に通知されます。 詳細については、「Application Insights とは何か?」および 任意の Web サイトの使用可能性を監視することに関する記事を参照してください。
  • Azure Monitor - 分析情報 - Azure Monitor for VMs。 Azure Monitor for VMs では、仮想マシンと仮想マシン スケール セットのパフォーマンスと正常性の監視が行われます。 それらによって実行されているプロセスと、他のリソースへの依存関係が監視に含まれます。 このシナリオでは、ご使用の仮想マシンに関する分析情報が Azure Monitor for VMs によって提供されます。 詳しくは、Azure Monitor for VMs の概要に関する記事をご覧ください。
  • Azure Monitor - 分析。 Kusto クエリ言語 (KQL) を使用して、VM からのログとメトリックのデータが Azure Monitor のメトリックおよび Log Analytics ワークスペース内で照会されます。 結果から、インフラストラクチャ、トポロジ、リソースに関する分析情報が得られます。 詳細については、Kusto の概要に関する記事と、「Azure Monitor ログ クエリの例」を参照してください。
  • Azure Monitor - 視覚化。 Azure Monitor では視覚化ツールを使用して、アプリケーションとインフラストラクチャのコンポーネント、および Azure Monitor のサービス間の通信を確認します。 視覚化ツールには、Azure Application Insight のアプリケーション マップAzure Monitor for VMs のマップ機能Azure Monitor Workbooks、Azure Monitor 内で使用できるさまざまなダッシュボード ビューがあります。 詳細については、Azure Monitor for VMs のマップ機能を使用してアプリケーション コンポーネントを把握することに関する記事、「Log Analytics データのダッシュボードを作成して共有する」、「Azure Monitor ブック」を参照してください。
  • Azure Monitor - 統合。 Azure Monitor は、パートナーおよびサードパーティのさまざまなツールや拡張機能と統合します。 これらのツールや拡張機能は、分析や視覚化などの Azure Monitor の既存の機能を拡張および強化します。
  • Azure Monitor - アクション - アラート。 メトリック データとログ データの変動は、イベントの発生を示している場合があります。 ルールでは、アラートをトリガーし、通知を行い、修復応答を開始する、データの変動を定義します。 このアーキテクチャでは、アラートがトリガーされると、Automation Runbook によってオンプレミスの VM と Azure VM が自動的に修復されます。 Webhook アクションやサービス管理統合など、他の種類のアクションも利用できます。 詳細については、「Azure Monitor を使用してメトリック アラートを作成、表示、管理する」および「Azure Monitor を使用してログ アラートを作成、表示、管理する」を参照してください。
  • Azure Monitor - アクション - 自動スケーリング。 自動スケーリングでは、需要に応じて VM インスタンスが追加または削除されます。これにより、パフォーマンスが維持され、コスト効果が向上します。 このアーキテクチャでは、自動スケーリングには平均 CPU 負荷 (パーセント) に関する条件が定義されています。 条件が満たされると、Azure Monitor の自動スケーリングによって、需要に応じてスケール セットが調整されます。 詳細については、「Microsoft Azure の自動スケールの概要」を参照してください。

Components

アーキテクチャは、次のコンポーネントで構成されています。

Recommendations

以下のベスト プラクティスは、ほとんどのシナリオに当てはまる推奨事項です。 優先すべき特定の要件がない限り、これらのプラクティスに従ってください。

Log Analytics ワークスペース

Log Analytics ワークスペースを設計する際は、次の推奨事項を検討してください。

  • 待ち時間が重要な要素である場合は、ワークスペースとリソースを同じ Azure リージョンに配置します。
  • 1 つの Log Analytics ワークスペースから開始し、要件の変化に応じてワークスペースの数を増やします。
  • チームとリソースが地理的に分散している場合は、リージョンごとに 1 つのワークスペースが必要になることがあります。
  • ワークスペースは、実行しているリソースと同じサブスクリプションに配置する必要はありません。

警告

より単純なシナリオでは、ログではなくメトリックを使用してアラートを発生させることができます。 メトリック:

  • CPU 使用率、使用可能なメモリ、論理ディスク領域などのイベントについて、カウント、つまり "数値" を指定します。
  • 低遅延を維持します。
  • 秒単位または分単位の間隔など、より細かな粒度を指定します。
  • 問題について迅速に通知します。

より詳細な分析情報を得るために、カスタム パフォーマンス指標またはビジネス固有のメトリックを収集する場合は、カスタム メトリックを使用してください。 詳細については、「Azure Monitor のカスタム メトリック (プレビュー)」を参照してください。

どのような状況でもメトリック アラートが解決策になるとは限りません。 より複雑なカスタマイズや強力な相関関係が必要な場合は、ログベースのアラートの使用が必要になることもあります。

分析と診断

分析と診断では、次の推奨事項を検討してください。

  • より詳細な分析には、ログを使用します。 ログを使用すると、次のことが可能です。

    • メトリックと比較して、イベントに関するより詳細な情報が提供されます。
    • 間欠的に行われます。
    • 最初のメトリック フラグの後で、より詳しい診断を支援します。
  • HTTP データ コレクター API を使用して、Log Analytics ワークスペースにログ データを送信することで、ログ データ コレクション (メトリックに似ています) をカスタマイズします。 詳細については、「HTTP データ コレクター API を使用した Azure Monitor へのログ データの送信 (パブリック プレビュー)」を参照してください。

  • Application Insight のスマート検出機能を使用して、アプリケーションを事前に分析します。 スマート検出では、Azure の機械学習機能と統計分析を適用して、パフォーマンスや失敗の異常、メモリ リーク、一般的なアプリケーションの機能低下などの問題を検出します。 詳細については、「Application Insights のスマート検出」を参照してください。

  • Azure Monitor for VMs - マップを使用して、サーバー間の接続、プロセス、インバウンドとアウトバウンドの接続の待ち時間、TCP 接続アーキテクチャ全体のポートを確認できます。 エージェントのインストール以外に、構成は必要ありません。 Azure Monitor for VMs - マップを使用すると、相互接続されたシステムとして、サーバーとの間で相互運用および連携することができます。

Log Analytics クエリ

KQL を使用して Log Analytics ワークスペース内のデータに対してクエリを実行すると、用語、特定のイベント、または状態を検索して、傾向の特定とパターンの分析を行うことができます。 クエリ エクスプローラーを使用すると、事前に記述されたクエリの参照と選択、クエリの変更、独自のクエリの作成を行うことができます。 ワークスペース内からクエリを実行、保存、共有、エクスポートしたり、お気に入りのクエリをダッシュボードにピン留めして再利用したりできます。

エージェントのインストール

Azure Policy、Azure PowerShell、Resource Manager テンプレート、Desired State Configuration (DSC) などの自動化オプションを使用して、エージェントを個別にではなく、自動的かつ大規模にインストールします。 詳細については、Azure Policy を使用して Azure Monitor for VMs を有効にすることに関する記事、Azure PowerShell を使用して Azure Monitor for VMs を有効にすることに関する記事、ハイブリッド仮想マシンで Azure Monitor for VMs を有効にすることに関する記事の Desired State Configuration に関するセクションを参照してください。

ダッシュボード

重要なアプリケーションの場合は、Azure ダッシュボード ビューを作成します。 重要なアプリケーション データを必要とするユーザーとダッシュボードを共有したり、共有画面でリアルタイムにダッシュボードを使用できるようにしたりします。

考慮事項

以降の考慮事項には、ワークロードの品質向上に使用できる一連の基本原則である Azure "Well-Architected Framework" の要素が組み込まれています。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。

[信頼性]

信頼性により、顧客に確約したことをアプリケーションで確実に満たせるようにします。 詳細については、「信頼性の重要な要素の概要」を参照してください。

次の考慮事項は、環境内での可用性の確保に役立ちます。

  • 可用性テスト。 このアーキテクチャで使用される URL ping テストは、最も単純な "アウトサイドイン" 可用性テストです。 ただし、次のような他のオプションを使用することもできます。
    • 複数ステップの Web テスト。 順序付けられた Web 要求の記録を再生して、複雑なシナリオをテストします。 複数ステップの Web テストは Microsoft Visual Studio Enterprise で作成され、ポータルで実行できるようにアップロードされされます。
    • カスタム可用性追跡テスト。 TrackAvailability() メソッドを使用して、テスト結果を Application Insights に送信します。
  • アラート。 Application Insights で可用性テストを作成すると、イベント アラート通知が既定で有効になります。 アラート ルールを編集するには、 [Azure Monitor]>[アラート] で通知の種類と詳細を指定します。

セキュリティ

セキュリティは、重要なデータやシステムの意図的な攻撃や悪用に対する保証を提供します。 詳細については、「セキュリティの重要な要素の概要」を参照してください。

環境をより安全にする際の考慮事項となる項目を次に示します。

  • Log Analytics ワークスペース。 アクセス モードは、次のコンテキストのいずれかとして定義されます。
    • ワークスペース コンテキスト。 ワークスペースがアクセス許可を持つすべてのログに対してクエリを実行できます。 これは垂直方向のアクセス方法です。 たとえば、セキュリティ チームは、上から下まですべてのリソース データへのアクセスを必要とする場合があります。
    • リソース コンテキスト。 特定のリソースのログに対してのみクエリを実行できます。 たとえば、アプリケーション チームには、チームが使用している特定のリソースのログへのアクセスを許可することができます。
  • Log Analytics に転送中のデータをセキュリティで保護します。 転送中のデータは、最低限、トランスポート層セキュリティ (TLS) 1.2 を使用して保護されます。 この機能を明示的に有効にする必要はありません。 詳細については、「Log Analytics データのセキュリティ」を参照してください。
  • Log Analytics の保存データをセキュリティで保護します。 Log Analytics の保存データは、Azure Storage の保護方法に従い、既定で 256 ビット Advanced Encryption Standard (AES) 暗号化を使用して保護されます。
  • スマート検出。 Application Insights でスマート検出を使用して、アプリケーションによって生成されたテレメトリを分析し、セキュリティの問題を検出します。 詳細については、「アプリケーション セキュリティ検出パック (プレビュー)」を参照してください。
  • Azure Monitor をセキュリティ情報イベント管理 (SIEM) ツールと統合します。 Azure Monitor を使用して監視データをイベント ハブにルーティングし、外部の SIEM ツールや監視ツールを統合します。 詳細については、「イベント ハブまたは外部パートナーへの Azure 監視データのストリーム配信」を参照してください。

コスト最適化

コストの最適化とは、不要な費用を削減し、運用効率を向上させる方法を検討することです。 詳しくは、コスト最適化の柱の概要に関する記事をご覧ください。

環境のコストを制御および管理する際の考慮事項となる項目を次に示します。

  • Azure Monitor。 Azure Monitor のコストは使用量ベースです。これは、多くの場合 "従量課金制" と呼ばれます。
  • Log Analytics。 データ インジェストデータ保有期間に対して課金が行われます。 VM の数と、各 VM から収集する予定のデータ量 (ギガバイト単位) を見積もったり予測したりできます。 一般的な Azure VM は、毎月 1 GB (ギガバイト) から 3 GB のデータを使用します。 Azure Monitor ログを使用してデータの使用状況を評価すると、対象の環境のデータ統計情報を使用して、容量予約による割引を受けることができます。
  • Application Insights。 このコンポーネントは、ご使用のアプリケーションから送信されるテレメトリ データの量と、実行する Web テストの数に応じて課金されます。
  • メトリック クエリ。 メトリック クエリは、行われた呼び出しの数によって課金が行われます。
  • アラート。 アラートは、監視対象の信号の種類と数に基づいて課金が行われます。
  • 通知。 通知は、送信する通知の種類と数に応じて課金が行われます。
  • Azure Monitor。 Azure Monitor の [使用量と推定コスト] セクションでは、過去 31 日間の使用量に基づいて毎月のコストを見積もります。
  • 詳細については、「Azure Monitor の価格」および「料金計算ツール」を参照してください。

オペレーショナル エクセレンス

オペレーショナル エクセレンスは、アプリケーションをデプロイし、それを運用環境で実行し続ける運用プロセスをカバーします。 詳細については、「オペレーショナル エクセレンスの重要な要素の概要」を参照してください。

管理の容易性

環境をより管理しやすくする際の考慮事項を次に示します。

  • Azure ブック。 ブックを使用して、さらなる分析を実行したり、高度なレポートを作成したりできます。 ブックでは、テキスト、ログ クエリ、メトリック、パラメーターが、対話型レポートに組み合わされます。 ブックは、同じ Azure リソースにアクセスできるチーム メンバーが編集できます。 詳細については、Azure Monitor for VMs のブックを使用した対話型レポートの作成に関する記事を参照してください。
  • パートナー統合。 Azure Monitor をパートナーやサードパーティのツールと統合して、分析、視覚化、アラート、サービス管理、Azure Pipelines に役立てることができます。 詳細については、「Azure Monitor パートナーとの統合」を参照してください。
  • Azure Monitor を Microsoft System Center と統合します。 Azure Monitor を System Center 製品スイートと統合します。 詳細については、「Operations Manager を Azure Monitor に接続する」を参照してください。
  • Azure Event Hubs にデータを送信します。 Azure Monitor を視覚化ツールや外部の監視ツールと統合する方法については、「イベント ハブまたは外部パートナーへの Azure 監視データのストリーム配信」を参照してください。
  • Log Analytics ゲートウェイ。 ブランチ オフィスなどの小規模な環境では、エージェントを使用して、ゲートウェイではなく Log Analytics ワークスペースにデータを転送します。 詳細については、「Azure Log Analytics への接続を確立」を参照してください。

DevOps

環境を DevOps プロセスおよびソリューションと統合する際の考慮事項を次に示します。

  • Application Insights。 Application Insights を Azure Pipelines に統合すると、パフォーマンスと使いやすさを向上させることができます。 Application Insights により、パフォーマンスの異常を自動的に検出できます。 これを、Azure DevOps Services や GitHub など、さまざまな開発ツールに接続できます。
  • アプリケーションのインストルメンテーション。 Application Insights でテレメトリを有効にするようにアプリケーション コードを変更することによって、アプリケーションを "インストルメント化" します。 アプリケーションをインストルメント化するには、次の方法があります。
    • 実行時。 実行時にサーバー上の Web アプリケーションをインストルメント化する方法は、既に展開されているアプリケーションに最適です。これは、コードを更新する必要がなくなるためです。 適したシナリオとしては、以下があります。
      • Azure Web Apps でホストされる Microsoft ASP.NET または ASP.NET Core アプリケーション
      • 仮想マシンまたは仮想マシン スケール セット上の Microsoft インターネット インフォメーション サービス (IIS) でホストされる ASP.NET アプリケーション
      • オンプレミス VM 上の、IIS でホストされる ASP.NET アプリケーション
      • Java ベースの Azure Functions
      • Linux App Services の Node.js アプリ
      • AKS でホストされるマイクロサービス
    • 開発時。 Application Insights をコードに追加して、テレメトリの収集をカスタマイズし、さらに多くのデータを送信します。 サポートされている言語とプラットフォームは次のとおりです。
      • ASP.NET アプリケーション
      • ASP.NET Core アプリケーション
      • .NET コンソール アプリケーション
      • Java
      • Node.js
      • Python
  • 外部の IT サービスマネジメント (ITSM) ツールに接続するには、IT Service Management Connector (ITSMC) を使用します。 ITSMC は、サポートされている ITSM 製品およびサービスに Azure を接続します。通常、そこで問題に関連する作業項目が見つかります。 詳細については、IT Service Management Connector を使用して Azure を ITSM ツールに接続することに関する記事を参照してください。

パフォーマンス効率

パフォーマンス効率とは、ユーザーからの要求に合わせて効率的な方法でワークロードをスケーリングできることです。 詳細については、「パフォーマンス効率の柱の概要」を参照してください。

環境をスケーリングする際の考慮事項を次に示します。

  • リソースとアプリケーションのインストールおよび構成を自動化します。
  • 地理的に分散した大規模なアプリケーション。 Application Insights 内で分散トレースを使用して、複数のアプリケーション コンポーネント、バックエンド リソース、およびマイクロサービス環境全体での依存関係と呼び出しを追跡します。 分散トレースを使用すると、プロセス境界を越えてローカル スタックの外部にある呼び出し元アプリケーションをデバッグできます (分散トレースを有効にする必要はありません。Application Insights の一部として自動的に利用できます)。
    • 分散トレース データを使用するには、次の 2 つのオプションがあります。
      • トランザクションの診断エクスペリエンス。 このエクスペリエンスは、時間ディメンションが追加された呼び出し履歴に似ています。 トランザクションの診断エクスペリエンスは、単一のトランザクションまたは要求を可視化します。 これにより、信頼性に関する問題の根本原因やパフォーマンスのボトルネックを要求単位で特定できるようになります。 詳細については、「分散トレースとは」を参照してください。
      • アプリケーション マップのエクスペリエンス。 これは、システムがどのようなトポロジーに基づいて対話しているかを示すために多数のトランザクションを集計し、平均的なパフォーマンスとエラー率を提供します。 詳細については、「アプリケーション マップ: 分散アプリケーションのトリアージ」を参照してください。

次のステップ

コンポーネントのテクノロジの詳細については、次を参照してください。

次の関連するアーキテクチャを確認してください。