Azure Well-Architected フレームワークのオペレーショナル エクセレンスに関するチェックリストの次の推奨事項を対象とします。
| OE:07 | ワークロードのインフラストラクチャとコードの両方から運用テレメトリ、メトリック、ログをキャプチャする監視スタックを設計し、設計上の決定を検証し、将来の改善を導きます。 |
|---|
関連ガイド: アプリケーションのインストルメント化に関する推奨事項
可観測性または監視は、ワークロード チームが生成する外部データに基づいてシステムの内部状態を理解する機能を提供する主要な運用プラクティスです。 ビジネス ロジックとコア機能を実装する機能スタックとは異なり、監視スタックは並列で実行されます。 実際の状況でのワークロードの動作を示すメトリック、ログ、トレース、イベントを収集して分析します。
監視スタックを設計するには、信頼性、パフォーマンス、セキュリティ、コストなどの横断的な問題を可視化できるため、慎重な計画が必要です。 適切に設計された監視スタックにより、早期の問題検出、効果的なインシデント対応、および情報に基づく運用上の意思決定が可能になります。 プロアクティブな管理と継続的な改善の基盤となります。
このガイドでは、監視、検出、およびアラート機能をサポートする監視スタックを設計するための主要な戦略について説明します。
定義
| 用語 | 定義 |
|---|---|
| テレメトリ | ログ、メトリック、トレース、およびイベントの総称。 テレメトリは、可観測性の基礎を提供します。 |
| ログ | システムで何が起こったかをキャプチャする記録されたシステム イベント。 ログは、タイムスタンプ付きの構造化テキストまたは自由形式のテキストにすることができます。 これらは、異常の検出と調査に役立ちます。 |
| Metrics | システムのパフォーマンスを表す一定の間隔で収集される数値。 メトリックは、ワークロードのパフォーマンスと信頼性の傾向を特定するのに役立ちます。 |
| 可観測性 | 監視機能は、チームが問題を検出し、パフォーマンスの傾向を追跡し、運用上の決定を行うのに役立ちます。 |
| 関連付け ID | 複数のコンポーネント間で関連イベントを追跡し、分散システムでのトランザクションのエンドツーエンドのトレースを可能にする一意の識別子。 |
| インストルメンテーション | テレメトリをキャプチャするための監視機能をアプリケーションとインフラストラクチャに追加する。 これには、ログ記録、メトリック収集、トレースが含まれます。 |
| ヘルスモデル | ビジネス目標と運用目標を反映するインジケーター、KPI、メトリックを使用してワークロードの正常性を測定するためのフレームワーク。 |
| KPI (主要業績評価指標) | ワークロードがビジネス目標と運用目標を達成する効果を示す測定可能な値。 KPI は、テレメトリの収集と分析をガイドします。 |
| APM (アプリケーション パフォーマンス管理) | アプリケーションのパフォーマンス、可用性、ユーザー エクスペリエンスを監視するためのツールとプラクティス。 APM ツールを使用すると、重要なメトリックをリアルタイムで履歴に可視化できます。 |
| Traces | 分散システムを介した要求のパスを示すレコード。 トレースは、複数のサービスにまたがる問題の診断に役立ちます。 |
テレメトリを正常性モデルと KPI モデルに合わせる
テレメトリ収集戦略にこれらのターゲットが反映されるように、ワークロードの正常性インジケーター、KPI、パフォーマンス メトリックを定義します。 これらのインジケーターは、異常を検出して是正措置に関する決定を行うために追跡されます。
テレメトリをシステム フローとユーザー フローに関連付けます。 これは、全体的なワークロードの正常性に加えて、フローの正常性と収集されたデータを関連付けるのに役立ちます。
AI の機会: チームは KPI とテレメトリを手動で定義するのに時間を費やします。 AI 支援ツールは、アーキテクチャ、サービスの依存関係、コードに基づいて、よく使用されるテレメトリを提案できます。 GitHub Copilot や Claude Code などのツールは、インストルメンテーションを追加したり、クエリやコードとしてのインフラストラクチャ テンプレートを生成したりするのにも役立ちます。 AI 主導の可観測性が正確で標準に準拠していることを確認するために、人間による監視があることを確認します。
ワークロード全体でテレメトリを収集する
アプリケーション、インフラストラクチャ、プラットフォームを含むシステムのすべてのコンポーネントが、意味のあるテレメトリを出力し、それらのレイヤー全体でログとメトリックを一貫してキャプチャするようにします。 ログは主に異常の検出と調査に役立ちますが、メトリックは主にパフォーマンスの問題などのワークロードの傾向を特定するのに役立ちます。
可能な場合は、プラットフォームで提供される監視ツールを使用します。 最小限の構成が必要であり、詳細な分析情報を提供します。
トレードオフ: デバッグと追跡可能性を向上させるためにログの詳細を増やしますが、ストレージと処理のコストが高いことを認識してください。 このトレードオフを管理するには、開発時に詳細なログ記録を使用し、運用環境では詳細度を低下させ、相関関係 ID を使用して、過剰なログ ボリュームなしでエンドツーエンドのトランザクションの可視性を維持します。
JSON、MessagePack、Protobuf などの、マシンが読み取り可能な構造化形式でアプリケーション イベントをキャプチャします。 これにより、処理と統合が容易になります。
インフラストラクチャの場合:
- ログとメトリックの両方を収集します。
- IaaS の場合は、OS、アプリケーション、診断ログを含めます。
- PaaS の場合は、基になるインフラストラクチャ アクセスが制限されている診断ログを最大化します。
重要度に基づいてデータ転送に優先順位を付けます。 緊急度の低いデータはバッチで転送できますが、時間の機密性の高い情報は直ちに送信する必要があります。
コレクションには 2 つの基本モデルがあります。 プル モデルでは、テレメトリはクエリ コンポーネントとして収集され、プッシュ テレメトリはデータを外部に送信するコンポーネントによって出力されます。 ワークロードに適用できる要因に基づいてモデルを選択します。 たとえば、定期的なスナップショットで十分か、ほぼリアルタイムのデータが必要ですか。 予想されるテレメトリ ボリューム、データの種類:状態ベースまたはログ、イベント、トレース。
組み合わせアプローチを使用するのが一般的です。 たとえば、監視エージェントはプル モデルを使用し、各アプリケーション インスタンスと共にローカルで実行して定期的にデータを収集し、共有ストレージに書き込むことができます。 同時に、プッシュ モデルをアプリケーション テレメトリに使用できます。各インスタンスは、イベントの発生時にログ、トレース、メトリックをメッセージ キューまたはイベントストリームに出力します。
データ統合の標準化
ローカル サイロからテレメトリを移動し、中央リポジトリに統合します (組織で義務付けられている場合)。 マルチリージョン ソリューションの場合は、まずリージョンごとにデータを収集して格納し、次に一元的に集計します。 ただし、ミッション クリティカルなワークロードの場合は、データの自律ストレージが推奨されます。
分析、ダッシュボード、アラート、レポートのためにデータにアクセスできるように、一貫性のある形式と収集方法を使用します。 オーバーヘッドや不整合が発生するため、コンポーネントから手動で取得することは避けてください。
データ統合サービスを使用して、次の処理を行います。
- データの重複除去。
- 関連付け ID を使用して関連イベントをマージします。
- 不要な情報をフィルター処理します。
リスク: リージョンおよび一元化されたデータ ストアを使用することにはコストの影響があることに注意してください。
使用パターンに合わせてストレージとリテンション期間を調整する
主にクエリのニーズとアクセス パターンに基づいてストレージ ソリューションを選択します。 たとえば、アラートを生成する dta にすばやくアクセスする必要があるため、高速データ ストレージに保持し、クエリを最適化するためにインデックスを作成または構造化する必要があります
ポリグロット永続化を使用して、使用に適したテクノロジにさまざまなデータ型を格納します。
- パフォーマンス カウンター用の SQL データベース。
- トレース ログの処理には Azure Monitor Logs または Azure Data Explorer を使用します。
- セキュリティ情報用の HDFS。
また、環境ごとにデータ ストレージを分離します。 これにより、重要でない環境データが運用環境の監視を複雑にすることを防ぐことができます。
短期的な詳細データの保持計画と長期的な傾向分析を計画します。 古いテレメトリをアーカイブして、低コストのストレージに保存します。 頻繁にアクセスされるデータをより高速なストレージ システムに保持します。 リソース ロック、論理的な削除、ロールベースのアクセス制御を使用してデータ保護を実装します。
エンドツーエンドの分析情報のデータを関連付ける
すべてのコンポーネントのメトリック、ログ、トレースからのテレメトリを接続するための可観測性を設計します。 これにより、サービス間での操作の分散トレースが可能になり、複数のレベルにまたがる問題の診断に役立ちます。
関連付け ID を一貫して使用して、プレゼンテーション層、中間層、データ層を通じてトランザクションを追跡します。
アプリケーション レベルとリソース レベルのログを集計して、トラブルシューティングを向上させ、問題をすばやく検出します。 Azure Log Analytics などの統合ソリューションを検討して、レベル間でデータのクエリと分析を行います。
テレメトリをシステム フローとユーザー フローに合わせて調整し、フローの正常性とワークロードの全体的な正常性を関連付けます。 これらのフローを理解することで、監視戦略にコンポーネント レベルとエンド ツー エンドの両方のシステム動作が反映されます。
分析と視覚化を行って、実行可能な意思決定をサポートする
運用正常性モデルに関するダッシュボードとレポートを設計します。 視覚化を使用すると、チームは問題をすばやく特定し、傾向を理解し、応答に優先順位を付けることができるようにする必要があります。
カスタム実装やアドホック ソリューションではなく、実績のある監視パターンとアーキテクチャを使用します。 ダッシュボードが意味があり、実用的であることを確認します。 パラメーター化されたダッシュボードを使用すると、アナリストは基になるデータを探索できます。
AI の機会: ダッシュボードは、多くの場合、ビジネスまたはエンジニアリングのメトリックに重点を置きます。 AI は、関連するすべてのソースからのデータを分析し、適切な構成と視覚化を使用して統合ダッシュボードを設計するのに役立ちます。 これにより、手動での作業が減り、見過ごされる可能性のある分析情報が表示されます。
意味のある運用条件に関するアラートを定義する
任意の値ではなく、ワークロードの正常性に基づいてアラートを設定します。 アラートはアクション可能で、コンテキストを提供する必要があります。 所有者、アクション、スコープを定義する明確で説明責任のあるアラート プロセスを確立し、適切な粒度と詳細度でアラートを構成して、重大な問題を迅速に検出しながら、ノイズを最小限に抑えます。
過去のエクスペリエンスと定期的なテストを使用してしきい値を検証します。 アラート生成データに高速ストレージを使用して、迅速な通知を有効にします。 明確に定義されたスコープのアラートを構成し、詳細度を調整してノイズを最小限に抑えます。
アラートを自動化し、アラートをチケット システムにリンクします。 クラウド プラットフォーム サービスの正常性、停止、メンテナンス、およびアドバイザリを監視します。
AI の機会: AI を使用して、ピーク トラフィック、プロモーション、静かな期間、地域のバリエーションなどのビジネス コンテキスト全体のパターンを学習することで、"正常な" システム動作を動的に定義できます。 AI は、メトリック、ログ、インシデント データを分析して問題を予測し、しきい値を推奨することができます。
スケーラブルで永続的なテレメトリ パイプラインを設計する
監視システムでは、ボトルネックやデータ損失を伴わない高スケールの処理が必要です。 負荷の下でテレメトリ フローを維持するために、バッファリング、キュー、スケーラブルなインジェスト パスを含めます。
大規模な環境での負荷急増を処理するために、キューイングメカニズムを使用してください。 冗長性を実装して、重要なデータの損失を防ぎます。 ワークロードの需要に合わせて監視システムが拡大するように、設計時のスケーリングを計画します。
複雑なワークロードの場合は、"少なくとも 1 回" セマンティクスを持つメッセージ キューを使用します。 大量のストレージを処理するために、複数のストレージ書き込みサービスを実行します。 Event Hubs でテレメトリ処理を分散し、単一ポイント I/O のボトルネックを防ぐことを検討してください。
可観測性を使用して継続的な改善をサポートする
可観測性をフィードバック ループとして扱います。 運用データを使用して、ワークロードの設計、テレメトリ キャプチャ、監視のしきい値を調整します。
自動化と人間の監視のバランスを取り、精度を確保します。 ワークロードの変化に伴い、監視アプローチを継続的に見直し、進化させます。 テレメトリを使用して最適化の機会を特定し、アーキテクチャの決定を検証し、将来の設計をガイドします。
全体的なワークロード テストに監視とアラートを含めます。 運用上の問題を予測し、容量を計画するための傾向を分析する機能を維持しながら、関数を自動化します。
Azure ファシリテーション
Azure Monitor は、クラウド環境とオンプレミス環境からの監視データを収集し、分析して、対応するための監視ソリューションです。
Log Analytics は、Azure portal のツールであり、Log Analytics ワークスペース内のデータに対するログ クエリの編集と実行に使用できます。
複数のワークスペースを使用している場合のベスト プラクティスについては、Log Analytics ワークスペースのアーキテクチャ ガイドを参照してください。
Application Insights は、Azure Monitor の拡張機能です。 これには APM 機能があります。
Azure Monitor Insights は、特定の Azure テクノロジ (VM、アプリ サービス、コンテナーなど) のための高度な分析ツールです。 これらのツールは、Azure Monitor と Log Analytics の一部です。
Azure Monitor for SAP Solutions は、Azure で実行している SAP ランドスケープ向けの Azure の監視ツールです。
Azure Policy は、組織の標準を適用してコンプライアンスを大規模に評価するのに役立ちます。
Azure Network Watcher は、セキュリティ、コンプライアンス、パフォーマンスを確保するために、ネットワークを監視、管理、監査するツールです。
接続のトラブルシューティング は、Network Watcher の診断ツールです。 接続の問題の調査に役立つオンデマンド診断とパケット キャプチャ (PCAP) を提供します。
接続モニター は、Network Watcher の監視ツールです。 継続的な合成テストを実行し、接続とパフォーマンスの問題に関するリアルタイムアラートを送信します。
トラフィック分析 は、Network Watcher のトラフィック分析ソリューションです。 トラフィックの分布を視覚化し、上位の話者を識別し、帯域幅使用率の傾向を明らかにします。 これらの機能は、ネットワーク正常性の統合ビューを提供します。
関連リンク
コミュニティ リンク
- Azure Monitor Baseline Alerts (AMBA) はアラート定義の中央のリポジトリです。お客様とパートナーはこれを使い、Azure Monitor の導入を通じて監視エクスペリエンスを向上させることができます。
オペレーショナル エクセレンス チェックリスト
レコメンデーションの完全なセットを参照してください。