-
Notifications
You must be signed in to change notification settings - Fork 0
MS_AzureMonitoring
Azure の監視と管理
アプリケーション・レイヤ
- クラウド ≒ 同じ物理サーバーに同居するマルチ・テナントなので、
原則としてはアプリ・レベルでの監視を基本に考える。 - 「業務処理として正しく動いているかどうか」を監視
Application Insights
(高機能アプリ監視ツール(Deep Application Monitoring))
補足(「アプリ・レベルの監視を基本に」が本ページの主張): この方針には
クラウド特有の理由がある。オンプレミスでは、自分のサーバのハードウェア指標を見れば
性能が分かった。しかしクラウドでは、
- 物理サーバは他テナントと共有されており、
自分から見える指標が必ずしも実態を表さない(ノイジー ネイバー)、- インスタンスが勝手に入れ替わる(サービス ヒーリング、スケール、メンテナンス)、
- PaaS ではそもそも OS の指標が見えない
ため、インフラ指標だけでは「遅い」の原因に辿り着けない。
したがって、
問い 答えを持つ層 業務は成立しているか アプリ層(Application Insights) 応答時間はどうか アプリ層(分散トレース) なぜ遅いのか 両方(アプリ層で当たりを付け、インフラ層で確認) リソースは足りているか インフラ層(Metrics) という役割分担になる。
「まずアプリ層」というのは、
利用者から見た事実を最初に押さえるという意味であり、
オンプレでの障害分析
(因果関係の分析例)とも整合する考え方である。
ミドル、インフラ・レイヤ
- 障害予防や障害切り分けのための全体的な「症状」の監視
- 3rd party ミドル製品のサポートが手薄(プリセット情報が無いので)。
移行メモ(体裁): 原典の「障害切分のタメの」は
「障害切り分けのための」の略記であるため展開した。
-
アクティビティ ログ(Activity logs)
主に、インフラ・レイヤが利用する。 -
診断ログ(Diagnostic logs)
ミドル(パフォーマンス カウンタ)、インフラ・レイヤが利用する。 -
メトリック(Metrics)
パフォーマンス カウンタ
ログを以下の出力系統に出力する。
-
ストレージ
- 長期間保存に優れる。
- Storage Explorer で生ログ参照。
- お手軽だが分析は苦手。
-
Log Analytics
高機能インフラ監視ツール
(Deep Infrastructure Monitoring)- ログ分析ツール
KQL (Kusto Query Language) の利用が必要 - OMS ソリューション
定型的な保守作業の管理画面を提供 -
Azure Sentinel
特にセキュリティ・インシデントに関わる管理画面を提供
- ログ分析ツール
-
Azure Event Hubs
外部連携へ。
2 系統以上の出力に飛ばすというケースもある。
補足(3 つの出力先の使い分けが設計の要): 「2 系統以上に飛ばす」という
一行が示すとおり、出力先は排他ではなく併用するのが実務的である。
出力先 得意 苦手 費用 ストレージ 長期保存、監査証跡 検索・分析 安い Log Analytics 検索・相関・アラート 長期保存(保持期間で課金) 高い(取り込み量課金) Event Hubs 外部の SIEM / 分析基盤へ流す それ自体は保存しない 中 典型的な構成は次のようになる。
┌→ Log Analytics(直近 30〜90 日。検索・アラート) ログ/メトリック ─┼→ ストレージ(1〜7 年。監査・法定保存。安価) └→ Event Hubs(既存の SIEM や Splunk 等へ)費用の観点が重要で、Log Analytics は
取り込んだデータ量で課金される。
「全部 Log Analytics に入れる」と
監視費用がインフラ費用を上回ることがある。対策としては、
- 診断設定でカテゴリを絞る(全カテゴリを有効にしない)、
- **基本ログ(Basic Logs)**を使う(安価だが検索機能が制限される)、
- 保持期間を短くし、長期分はアーカイブ層やストレージへ、
- コミットメント レベル(従量より割安な定額枠)を検討する
といった手がある。
(今後、統合されていく予定)
- 古い機能
基本的なルートは、ストレージ → 一部は Log Analytics- ブート診断
- Azure Diagnostics 拡張機能エージェント
- WAD : Windows エージェント
- LAD : Linux エージェント
- 新しい機能
基本的なルートは、Log Analytics- Log Analytics エージェント
- MMA : Microsoft Monitoring Agent
- LAA : Log Analytics Agent
- 依存関係エージェント
- Log Analytics エージェント
補足(最新化:統合は完了した): 「今後、統合されていく予定」と
あるが、この統合は完了している。現在は
**Azure Monitor エージェント(AMA)**に一本化された。
世代 エージェント 状況 第 1 世代 WAD / LAD(Azure Diagnostics 拡張機能) 非推奨 第 2 世代 MMA / LAA(Log Analytics エージェント) 2024 年 8 月にサポート終了 現行 Azure Monitor エージェント(AMA) これに移行する AMA の利点は、
- 収集内容を「データ収集規則(DCR)」で一元管理できる
(どのマシンから何を集めて、どこへ送るかを宣言的に定義)、- 1 つのエージェントで複数の送信先に振り分けられる、
- Windows / Linux で同一の仕組み
という点にある。
旧エージェントを使っている環境は移行が必要である。なお、ブート診断は今も現役で、
VM が起動しない場合の切り分けに必須である
(Azure上に素早く環境を構築する)。
Azure Resource Manager (ARM)の
CREATE、UPDATE、および DELETE 操作の可視性を提供。
Azure リソース使用の一環として発生するイベントの可視性を提供。
ユーザーに代わって処理された分析済みのイベント / アラートに関する情報を提供。
補足(コントロール プレーンとデータ プレーンの区別): この 2 つの区別は、
障害調査で「どこを見るか」を決めるため重要である。
コントロール プレーン データ プレーン 何の記録か リソースへの操作(作った・変えた・消した) リソースの中で起きたこと 例 「誰が NSG の規則を変更したか」 「どの IP からアクセスがあったか」 ログ アクティビティ ログ 診断ログ 経路 ARM API(Azureの管理ポータルとARM API) 各サービス 実務での使い分けは明快で、
- 「昨日まで動いていたのに今日は動かない」 → アクティビティ ログ
(誰かが構成を変えた可能性。変更の切り分け)- 「特定のリクエストだけ失敗する」 → 診断ログ
(中で何が起きたか)となる。
アクティビティ ログはすべての ARM 操作が自動的に記録されるため、
何も設定しなくても残っている点も覚えておきたい。
- アプリケーションが出すログ。
- 出力先には以下がある。
- ディスク
- データディスク:不揮発
- 一時ディスク:揮発性(VM の再デプロイで消失)
- Azure Storage
- KVS, RDB
- , etc.
- ディスク
補足: 「一時ディスク(D:)は揮発性」という点は
Azureの仮想マシンでも触れたとおりで、
アプリのログを D: に書いてはいけない。
障害調査で最も必要なログが、
障害で VM が別ノードに移った瞬間に消えることになる。
- ログのタイプは、コントロール / 管理ログ。
- サブスクリプションのリソースに対して実行された操作を調査できる。
- 記録の方法
- ストレージ・アカウントに記録
- Log Analyticsへ送信
- Azure Event Hubsへ送信
- 分析の方法
- 保存期間:19 日間
- 取得方法
- Azure ポータル
- Azure CLI
- Azure PowerShell
- Azure Monitor REST API
- 連携先
補足(保存期間は恒久ではない): 「19 日間」は執筆当時の値で、
現在の既定保持は約 90 日である。
いずれにせよ恒久的ではない点が要点である。監査要件で長期保存が必要な場合、
診断設定でストレージまたは Log Analytics に転送する必要がある。
「後から去年の変更履歴を調べたい」となっても、
転送設定をしていなければ残っていない。
サブスクリプション作成直後に設定しておくべき項目である。
- ログのタイプは、データ プレーン ログ。
- 定期イベントおよびスポット・イベントが
ネットワーク リソースにより作成される。 - ログの内容は、リソースのタイプによって異なる。
- 記録の方法
- ストレージ・アカウントに記録
- Log Analyticsへ送信
- Azure Event Hubsへ送信
- 分析の方法
- 保存期間:?
- 取得方法
- Azure ポータル
- Azure CLI
- Azure PowerShell
- Azure Monitor REST API
補足(保存期間「?」への回答): 診断ログは既定では
どこにも保存されない。これが本文の「?」の答えである。アクティビティ ログが自動的に記録されるのに対し、
診断ログは「診断設定」を有効にして初めて出力が始まる。
設定しなければ、そもそもログが存在しない。したがって保存期間は転送先の設定次第になる。
転送先 保存期間 ストレージ ライフサイクル管理で任意(年単位も可) Log Analytics ワークスペースの保持期間(既定 30 日、最大 730 日、アーカイブでさらに長期) Event Hubs 保持しない(転送のみ。最大 7 日のバッファ) **「障害が起きてからログを有効にしても、その障害のログは無い」**という
当たり前だが痛い事態を避けるため、
本番リソースには最初から診断設定を入れておく必要がある。
Azure Policy で「診断設定を強制する」ことも可能である。
- CPU 利用率、実行数待ち時間、消費容量など、
様々な指標の Azure リソースのパフォーマンス カウンタ。 - 全てのリソースがメトリック(Metrics)を持っているわけではない。
- 最初から有効で、サンプリング間隔は最短のもので 1 分、30 日間保存。
補足(メトリックとログの違い): この 2 つは似て見えるが、
データ構造がまったく異なる。
メトリック ログ 構造 数値の時系列(固定スキーマ) 任意の構造 有効化 既定で有効 診断設定が必要 保持 93 日(現在) 転送先次第 応答速度 速い(専用の時系列 DB) 遅い(検索) 用途 アラート、ダッシュボード 原因調査 実務では、
メトリックでアラート(速い・安い)→ 異常を検知 ↓ ログで原因を調査(詳細・重い)という組み合わせになる。
アラートをログ ベースで組むと、遅延と費用が増えるため、
メトリックで表現できる条件はメトリックで組むのが定石である。
なんとなく、ストレージ+分析機能みたいなモノか。
(Shared Capabilities)
メトリック(Metrics)を Log Analytics に送信して、他のソースから収集されたデータと合わせて分析できる。
(Core Monitoring)
- リソース構成と使用状況に関するテレメトリを常に監視、リスクと潜在的な問題を検知。
- ベスト プラクティスに基づいて、ユーザの環境に合わせた推奨事項、最善の解決策を提示。
- これにより、リソースのコスト / パフォーマンス / セキュリティ / 可用性の最適化を図る。
補足(Advisor は「無料で効く」): Azure Advisor は
追加費用なしで使え、5 つの観点で推奨事項を出す。
観点 例 コスト 未使用のパブリック IP・アイドル状態のディスク・過剰サイズの VMの検出、予約インスタンスの提案 信頼性 単一 VM の可用性セット未構成、バックアップ未設定 セキュリティ Defender for Cloud の推奨事項 パフォーマンス ディスク SKU、SQL のインデックス オペレーショナル エクセレンス サービス正常性アラート未設定 Azureの課金の「VM を使ってない割に高額になる」への
実際的な対処として、まず Advisor のコスト タブを見るのが早い。
Azure Well-Architected Frameworkの
5 本の柱と観点が一致している点も、覚えやすさに繋がる。
- アプリケーションの正常性は、使用している Azure サービスの影響を受ける。
- Azure サービスでアプリケーションに影響を与える可能性のある問題を発生/特定。
- 予定メンテナンスの計画にも役立つ。
補足(Service Health のアラートは必ず設定する): 「自分のシステムは
何も変えていないのに障害が起きた」という場合、
Azure 側の障害である可能性がある。
Service Health はこれを知る唯一の手段である。3 種類の情報を扱う。
種別 内容 サービスの問題 現在発生中の Azure 側の障害 計画メンテナンス 予定された再起動等(Azureの高可用性設計) 正常性の勧告 サービスの廃止予告、構成変更の依頼 重要なのは、アラートを設定しない限り通知は来ないという点である。
ポータルを見に行かなければ気付けない。サブスクリプション作成時に必ずやるべき設定として、
- Service Health アラート(自分が使うリージョンとサービスに絞る)、
- アクション グループ(メール/Teams/PagerDuty 等への通知)
の 2 つを挙げておきたい。無料である。
(Deep Infrastructure Monitoring)
(Deep Application Monitoring)
補足(現在の全体像): 本節の分類は執筆当時のもので、
現在はAzure Monitor が上位概念として整理し直されている。【Azure Monitor】(傘となる名称) ├─ Metrics … 数値の時系列 ├─ Logs … Log Analytics ワークスペースに集約 │ └─ Application Insights も「ワークスペース ベース」に統合済み ├─ Alerts … メトリック/ログ/アクティビティ ログを条件にアラート ├─ Dashboards / Workbooks / Managed Grafana … 可視化 └─ Insights … VM / コンテナ / アプリ 向けの既製の分析ビュー主な改称・統合は次のとおり。
旧 現在 OMS(Operations Management Suite) Azure Monitor に統合 Log Analytics(製品名として) Log Analytics ワークスペース(Azure Monitor の一機能) Application Insights(独立) ワークスペース ベース(Log Analytics 上に構築) Azure Security Center Microsoft Defender for Cloud Azure Sentinel Microsoft Sentinel 特に、Application Insights と Log Analytics が
同じワークスペースに乗ったことは実務上大きい。
アプリのトレースとインフラのログを 1 つの KQL クエリで結合できるため、
本ページ冒頭の「上位/下位レイヤ」を横断した分析が容易になった。
- 入力制御(インバウンド)
本機能への入力が、IaaS から見て出力なので、経路制限(特定経路の開放)について。- 大半の監視はエージェント型なので経路開放が必要
- 隠し経路を利用するものと、明示的な経路開放が必要なものがある。
- ハードニング(クライアント or サーバ)
なし。 - 出力制御(アウトバウンド)
なし。 - 参考
- Azure Monitor で使用される IP アドレス - Azure Monitor | Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/azure-monitor/app/ip-addresses
- Azure Monitor で使用される IP アドレス - Azure Monitor | Microsoft Docs
移行メモ(体裁): 原典の「経路開放放が必要」は
「放」が重複していたため修正した。
補足(「隠し経路」=プラットフォーム エンドポイント): 本文の
「隠し経路を利用するもの」は、
Azureの仮想マシンで触れた
**基盤経路(168.63.129.16等)**を指す。
経路 対象 NSG / Firewall の設定 基盤経路(隠し経路) ブート診断、VM エージェント、Azure Backup 不要 一般経路 Log Analytics、Application Insights 必要 閉域環境で監視を成立させる手段は 2 つある。
手段 内容 サービス タグで許可 NSG / Azure Firewall で AzureMonitorサービス タグを許可(IP 直書きより保守が楽)Azure Monitor プライベート リンク スコープ(AMPLS) Private Endpoint 経由で監視データを送る。インターネットに出さない 「IP アドレスの一覧を許可する」という方法は、
IP が変動するため保守が破綻する。
参考リンクは当時のものだが、現在は
サービス タグまたは AMPLS を使うのが正しい
(Azureのアウトバウンド設計、
Azure Private Link)。
(記載なし)
- 監視と診断のガイダンス - Best practices for cloud applications
(Azure アプリケーション アーキテクチャ ガイド)
https://docs.microsoft.com/ja-jp/azure/architecture/best-practices/monitoring
- Azure のログと監査
https://docs.microsoft.com/ja-jp/azure/security/azure-log-audit- Azure アクティビティ ログの概要
https://docs.microsoft.com/ja-jp/azure/monitoring-and-diagnostics/monitoring-overview-activity-logs - Azure 診断ログの概要
https://docs.microsoft.com/ja-jp/azure/monitoring-and-diagnostics/monitoring-overview-of-diagnostic-logs- Azure 診断ログでサポートされているサービスとスキーマ
https://docs.microsoft.com/ja-jp/azure/monitoring-and-diagnostics/monitoring-diagnostic-logs-schema
- Azure 診断ログでサポートされているサービスとスキーマ
- Microsoft Azure のメトリックの概要
https://docs.microsoft.com/ja-jp/azure/monitoring-and-diagnostics/monitoring-overview-metrics- Azure Monitor のメトリック - サポートされているメトリック (リソースの種類別)
https://docs.microsoft.com/ja-jp/azure/monitoring-and-diagnostics/monitoring-supported-metrics
- Azure Monitor のメトリック - サポートされているメトリック (リソースの種類別)
- Azure アクティビティ ログの概要
- Azure のアプリケーションおよびリソースの監視
https://docs.microsoft.com/ja-jp/azure/monitoring-and-diagnostics/monitoring-overview- Azure Monitor
https://azure.microsoft.com/en-us/services/monitor/ - Log Analytics
https://docs.microsoft.com/ja-jp/azure/log-analytics/ - Application Insights
https://docs.microsoft.com/ja-jp/azure/application-insights/
- Azure Monitor
Tags: 移行, インフラストラクチャ, クラウド, Azure
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。