💨

[Azure] 監視サービスについてまとめてみた

2023/01/14に公開

学習資材

https://learn.microsoft.com/ja-jp/training/modules/design-implement-network-monitoring/

メトリックとログ

  • メトリック
    CPUやディスク使用率、ネットワークの利用量など、リソースに関する情報と考えればよさそう
  • ログ
    いわゆる一般的なログ。エラーだったり、OSやMWの動作履歴などが残っているもの
    といった違いで考えればよさそう。

Azure Monitor のネットワークリソースの監視

『分析情報』→『ネットワーク』より確認が可能。ネットワークリソースの正常性やメトリックを確認できる。概要としては以下の機能を持っている。

  • ネットワーク正常性とメトリック
    • 作成したネットワークリソースの正常性を確認できる。(使用に問題がないか)。警告が出ているリソースの確認ができる。
    • 依存関係の確認ができる。(後続で記載)
  • 接続
    • ソース(対象リソース)と宛先(IPとかサブネットとか)で分類されたタイルが存在
    • RTT(リクエストの送信~応答までの時間)やチェックの失敗率でフィルターを掛けて、簡易的なテストの結果を表示できる。
  • トラフィック
    • 『NSGフローログ』と『Traffic Analytics』が構成されているNSGを確認できる。未構成の場合は、警告として表示される。
  • 診断ツールキット
    • IPフロー検証
    • ネクストホップ検証
      • ルートテーブルの検証
    • VPNのトラブルシューティング
    • 接続のトラブルシューティング
      • サーバ(エージェント間)のRTTを計測。ルーティングやNSGルールの正しさをチェックするのとは用途が若干異なる。相手先に到達しているかまでも確認できる。
    • 仮想マシンのパケットキャプチャ
      といった診断機能へのアクセスを提供する(実際の設定画面にジャンプする)。機能詳細は以下が参考になる。
      https://www.cloudou.net/virtual-network/vnet013/

依存関係ビュー

資材を読んでいて、イメージできなかったところ。Application Gateway・Azure Load Balancer・Azure Virtual WANでサポートされている。
どのレベルの依存関係を表示する?と思い、実機を確認してみた。

Application Gatewayで見てみると、どうやら内部の設定を依存関係で表してくれるようである。(フロントエンドIP・リスナー・ルーティング規則・バックエンドプール)

Azure VM Insights

VMの監視は、AMAを使った監視も可能だが、VM Insightsも方法に存在する。
ただし、後者の場合はゲストOSレベルでのメトリクスしか取れず、イベントログなどのログ収集はできない。
https://learn.microsoft.com/ja-jp/azure/azure-monitor/vm/vminsights-overview
VMに特化して、CPUなどの基本メトリクスで可視化しながら詳細なパフォーマンス分析をしたいときにはいいのだろう。あまり使っているイメージはない。
実際の有効化画面を見ると、AMAのインストールとDCRの作成画面になる。DCRのルール名が指定の文字から始めるので、何かこのルールをいじってログ収集まで行おうとするとかはできないのかもしれない。(2枚目の画像)


AMAだけだとリソース使用量取得にDCRいらないけれど、VM Insightsの場合は必要になる。それだけでもルールの管理とか面倒になるし、付与されるルールが多くなるとパフォーマンスにも影響出るかもしれない。
VM Insightsの可視化用に、別途リソースが必要になってくるイメージだろう。

NSGフローログとは?

NSGを流れるIPトラフィックに関するログを記録できる機能。
インターネットにアクセスしようとしている・許可されていないVnetに存在するとか、Traffic Analyticsを使った高度な分析が可能になる。

  • 送信元(先) IPアドレス
  • プロトコル
  • ポート
  • NSGによって許可(拒否)されたかどうか
    を記録できる。
  • コプラチェック
    • 変な通信先に向いてないよね
  • 監視
    • 不正アクセスとかないよね
    • 帯域大丈夫だよね
  • 使用状況の確認
    • トップトーカー(一番トラフィックを生んでいるサーバ)の特定
    • 通信たくさん発生しているけどブロックしているNSGルールの特定(緩和もあり)

Traffic Analyticsとは?

NSGフローログの分析サービス。

  • サブスクリプションの中で、ホットスポット(トラフィック異常)となっているリソースの特定
  • ネットワークセキュリティの脅威の特定(空いているポートに攻撃して来ているアプリの有無)
  • ネットワーク構成のトラシュー
  • (?)リージョン間の通信速度・トラフィックパターン(あまりドキュメント読んでも分からなかった)
    といった分析を行うことができる。
    分析情報はLog Analytics ワークスペースに送信される。そのため、カスタムクエリによってアラームを作成できる。
    https://learn.microsoft.com/ja-jp/azure/network-watcher/traffic-analytics-faq

(この辺は細かいしくみなので気になれば後で)
仕組みとして、頻繁に発生する類似のフローを集約してくれるらしい。(特定のホストから特定のプロトコル・ポートで100回通信が合った場合など)
ドキュメント上は、ログの削減と表現されている。

  • 使ってみた簡単まとめ

トラフィック分析が有効になっているNSGで確認ができるのが以下の画面。

大きく以下の3つが確認できる。

  • トラフィックの分布

    → ホスト、サブネット、VNet のトラフィックのIPフローが分析できる。さらに詳細はLog Analyticsのクエリ画面に飛ぶ。どういったIPがよく通信されるかも、まとめが表示されている。

  • NSG ヒット

  • アプリケーションポート

    → 環境全体で利用されているアプリケーション ポートが分析できる。https/httpやそのほかのプロトコルレベルでの集計や、各L7プロトコル毎の個別のIPフローの分析が可能になる。

接続モニターとは?

ソースとターゲットの間の通信をモニターし、分析・監視を行ってくれる。

ユースケースとしては以下の通り。詳細はドキュメントを確認すること。

  • VM間の接続の正常性を確認したい
  • VMのリージョン間の待ち時間を比較したい。(ping)
  • 異なるリージョンからM365にアクセスしたときの、両リージョンの待ち時間を比較したい
  • オンプレとAzure内から、同じAzure Storageエンドポイントにアクセスしたときの待ち時間の比較をしたい
  • オンプレ⇔Azureの接続を確認したい

接続モニターの構成要素としては以下が存在する。

  • リソース
  • エンドポイント(ターゲット)
  • テスト構成
    • プロトコル・ポート・閾値・テスト頻度などの、テスト定義と思えばOK
  • テストグループ
    • リソース/エンドポイント/テスト構成が含まれるグループ
  • テスト
    • リソース/エンドポイント/テスト構成の組み合わせ

      テストグループに属する要素の組み合わせで、テストケースを作ってくれるのだろう。
      接続モニターでもテストの結果に応じてアラートを構成することができる。Traffic Analyticsと違って、カスタムクエリを作成する必要はない。

勉強資材

https://learn.microsoft.com/ja-jp/training/modules/manage-site-reliability/

Azure Monitor アラートルールの状態遷移

新規(問題が検出されたが、まだレビューされていない)
確認済み(アラートをレビューし、対応を開始した)
クローズ(問題が解決された。一応状態は再変更が可能)

Azure Monitor アラート のスマートグループとは。

類似のアラートが発生すると、機械学習によって、特定のスマートグループに集約される。(例えばCPU高騰率のスマートグループ)
その上で、考えられる根本原因が示されるので、ある程度事象をまとめたうえでの原因分析がしやすくなるし、関連アラートを集約することで運用効率も上がるといったメリットがある。
https://github.com/MicrosoftDocs/azure-docs.ja-jp/blob/master/articles/azure-monitor/alerts/alerts-smartgroups-overview.md

エージェントレスでAzure VMの診断設定からイベントログって収集可能?

Azure Diagnostics 拡張機能は、ポータル上からもインストールが可能。それ以外にもpowershellを使うことでも可能。
https://learn.microsoft.com/ja-jp/azure/azure-monitor/agents/diagnostics-extension-overview
 → 実はこの機能は、Azure としてはレガシーエージェントになるため、将来的には廃止されるだろう。

Log Aanalyticsエージェントとの違いは、以下に記載がある。
ログの取得ができないとか、Azure Monitorのメトリックに送信されるので、細かいアラートの設定ができない?可能性があることがあげられる。
https://learn.microsoft.com/ja-jp/azure/azure-monitor/agents/diagnostics-extension-overview#comparison-to-log-analytics-agent

セキュリティログをLogAnalyticsワークスペースに送信可能?

できないらしい。
https://cloudsteady.jp/post/48983/

Azure Monitorログ専用クラスターと暗号化

https://learn.microsoft.com/ja-jp/azure/azure-monitor/logs/logs-dedicated-clusters?tabs=cli

Discussion