目的
VM監視において、Azure MonitorやNetwork Watcherを使えば監視ができる
ということは何となく知っていましたが実際にちゃんと取り組んだことがなかったので、このブログをホストしているVMを使って整理しました。
Well-Architected Framework
Well Architected Frameworkによると、Azure VMでホストされているWebサーバーの運用体制は以下の点に着目すべきと言われています。
インフラストラクチャとOSの監視(Azure VMレベル)
Azure Diagnostics 拡張機能の導入
これはおそらくAzure Monitor Agentをインストールしてパフォーマンスデータなどを収集することだと解釈しました。
単なる死活監視だけではなく、CPU使用率、メモリ消費量、ディスクI/O、ネットワークトラフィックなどの詳細なメトリックを収集し、Azure Monitorなどに送信して分析可能にすることが必要です。
ディスクの監視
Webサーバの応答性に直結するディスクパフォーマンスを監視します。
Azure Monitor のディスクストレージメトリックを使用してディスクのスロットリング(性能制限)が発生していないかを確認し、容量不足を防ぎます。
また、Azure BackupやSite Ricovery、ディスクスナップショットなどで復旧計画が必要なことにも言及されています。
Application Insightsの活用
Webアプリの可用性、パフォーマンス、使用状況を監視するために、Application Insightsを使用することを推奨しています。
これにより、リクエスト数、応答時間、失敗率などのテレメトリデータを収集し、アプリケーションレベルのログや例外(エラー)の詳細を追跡します。
分散トレース
WebサーバーがDBやほかのAPIと通信する場合、分散トレースを有効にしてサービス間のリクエスト経路を可視化し、ボトルネックを特定できるようにします。
正常性エンドポイント監視パターン
Webサーバーが単に起動しているだけでなく、リクエストを正しく処理できているかをチェックするために、専用の正常性エンドポイント(Health Check用URLなど)を実装します。
正常性モデルの構築
収集したデータとビジネス要件に基づき、何をもって「正常」「低下」「以上」とするかを定義する正常モデルを作ります。
ネットワークの監視
Webサーバーへのアクセス経路や通信の健全性を監視します。
Azure Network Watcherの活用
接続モニター
接続モニターを使用して、継続的な合成テスト(pingやHTTPチェックなど)を行い、ネットワークの遅延やパケット損失を測定します。
トラフィック分析
トラフィック分析を使用してフローログを分析し、トラフィックのパターンや帯域幅の使用状況、潜在的なセキュリティリスク(ブロックされたトラフィック)を可視化します。
データの集約と分析
収集したデータを一元管理し、相関分析ができるようにします。
Log Analytics ワークスペースへの集約
VMからのログ、Application Insightsのデータ、ネットワークログなどをLog Analytics ワークスペースに集約します。
これにより、インフラのメトリックとアプリケーションのログを関連付けて分析することが可能になり、障害児の根本原因分析が迅速化します。
アラートと自動化
異常検知時に迅速に対応するための仕組みを構築します。
実用的なアラートの設定
定義した正常性モデルや主要なメトリックに基づき、閾値を超えた場合に通知するアラートを設定します。
アラートは単に通知するだけでなく、問題の特定と修正に役立つ十分なコンテキスト情報を含むように構成します。
自動復旧アクション
Azure Monitorアクショングループを使って、アラート発砲時に自動的なアクション(Runbookの実行、Webサイトの再起動、スケーリングなど)をトリガーし、自己修復を促進します。
脅威検出
Microsoft Defender for Cloud(EDR)を有効にして、VMやアプリケーションに対する異常なアクティビティや脆弱性を検出し、セキュリティアラートを受け取れるようにします。
まとめ
VMであれば、基本はAzure Monitor Agentを使ったログ・メトリック監視が主です。
Application InsightsやNetwork Watcherは高可用性を維持するシステムであれば検討してもよさそうですが、基本は可用性チェック程度でも問題なさそうです。
次回は実装内容と実装手順について触れていきます。


コメント