Azure Monitor ログを使用した Site Recovery の監視

この記事では、Azure Monitor ログLog Analytics を使用して、Azure Site Recovery によってレプリケートされたマシンを監視する方法について説明します。

Azure Monitor ログは、アクティビティ ログとリソース ログを他の監視データと共に収集するログ データ プラットフォームを提供します。 Azure Monitor ログ内で、Log Analytics を使用してログ クエリを記述し、テストすることや、ログ データを対話形式で分析することができます。 ログの結果を可視化してクエリを実行したり、監視対象データに基づいてアクションを実行するようにアラートを構成したりすることが可能です。

Site Recovery の場合は、Azure Monitor ログを使用して、次の操作を行うことができます。

  • Site Recovery の正常性と状態を監視する。 たとえば、レプリケーションの正常性、テスト フェールオーバーの状態、Site Recovery のイベント、保護対象マシンの RPO (目標復旧ポイント)、ディスク (またはデータ) の変更量を監視することができます。
  • Site Recovery のアラートを設定する。 たとえば、マシンの正常性、テスト フェールオーバーの状態、Site Recovery ジョブの状態に対するアラートを構成することができます。

Azure Monitor ログでは、 Azure から Azure への レプリケーションおよび VMware 仮想マシン/物理サーバー から Azure へのレプリケーションに対する Site Recovery の使用がサポートされます。

チャーン データ ログを取得し、VMware と物理マシンのレート ログをアップロードするには、プロセス サーバーに Microsoft 監視エージェントをインストールする必要があります。 このエージェントからワークスペースに、複製を行うコンピューターのログが送信されます。 この機能は、モビリティ エージェントのバージョン 9.30 以降でのみ利用できます。

前提条件

次のものが必要です。

  • Recovery Services コンテナー内で保護された少なくとも 1 つのマシン。
  • Site Recovery のログを格納するための Log Analytics ワークスペース。 ワークスペースの設定に関する説明を参照してください。
  • Log Analytics におけるログ クエリの記述、実行、分析の方法に関する基本的な理解。 詳細情報。

開始する前に 、監視に関する一般的な質問 を確認してください。

Azure Site Recovery で使用できるイベント ログ

Azure Site Recovery には、次のリソース固有のテーブルとレガシ テーブルが用意されています。 各イベントによって、サイトの回復関連成果物の特定のセットに関する詳細なデータが提供されます。

リソース固有のテーブル:

レガシーテーブル:

  • Azure Site Recovery イベント
  • Azure Site Recovery レプリケートされた項目
  • Azure Site Recovery レプリケーション統計
  • Azure Site Recovery ポイント
  • Azure Site Recovery のレプリケーション データ アップロード速度
  • Azure Site Recovery で保護されたディスクのデータ変更頻度
  • Azure Site Recovery でレプリケートされた項目の詳細

ログを送信するように Site Recovery を構成する

  1. ボールトで、[診断設定]>[診断設定を追加する] を選択してください。

    [診断設定の追加] オプションを示すスクリーンショット。

  2. [診断設定] で名前を入力し、[Log Analytics に送信] チェック ボックスをオンにします。

  3. Azure Monitor ログのサブスクリプションと Log Analytics ワークスペースを選択します。

  4. トグルで [Azure Diagnostics] を選択します。

  5. ログの一覧から、AzureSiteRecovery で始まるログをすべて選択します。 [OK] をクリックします。

    診断設定画面のスクリーンショット。

以後、選択したワークスペース内のテーブル (AzureDiagnostics) に Site Recovery のログが取り込まれます。

チャーンを送信し、レート ログをアップロードするように、プロセス サーバーで Microsoft 監視エージェントを構成する

オンプレミスの VMware および物理マシンのデータ チャーン レート情報とソース データアップロードレート情報をキャプチャできます。 この機能を有効にするには、プロセス サーバーに Microsoft 監視エージェントをインストールします。

  1. [Log Analytics] ワークスペースに移動し、[詳細設定] を選択します。

  2. [ 接続されたソース] を選択し、[ Windows サーバー] を選択します。

  3. Windows エージェント (64 ビット) をプロセス サーバーにダウンロードします。

  4. ワークスペース ID とキーを取得します

  5. TLS 1.2 を使用するようにエージェントを構成します。

  6. 取得したワークスペース ID とキーを指定し、エージェントのインストールを完了します

  7. インストールが完了したら、Log Analytics ワークスペースに移動し、[ レガシ エージェント管理] を選択します。 [データ] ページに移動し、[Windows パフォーマンス カウンター] を選択します。

  8. [+] を選択して、300 秒のサンプリング間隔を使用して次の 2 つのカウンターを追加します。

    • ASRAnalytics(*)\SourceVmChurnRate
    • ASRAnalytics(*)\SourceVmThrpRate

    チャーン率とアップロード率のデータがワークスペースに流れ始めます。

  9. 現在、次の Site Recovery カウンターは検索できません。

    • ASRAnalytics(*)\SourceVmChurnRate
    • ASRAnalytics(*)\SourceVmThrpRate
      ただし、名前を完全に貼り付けることで追加できます。

    Windows パフォーマンス カウンターのスクリーンショット。

現時点では、これらのカウンターを検索することはできません。 ただし、完全な名前をコピーして貼り付けることで、それらを追加できます。

  • SourceVmThrpRate は、ソースのネットワーク スループット レートを示します。
  • SourceVmChurnRate は、ソース仮想マシンのディスク上のデータ変更率を示します。

カウンター設定画面のスクリーンショット。

ログのクエリを実行する - 例

ログからデータを取得するには、Kusto 照会言語で記述されたログ クエリを使用します。 このセクションでは、Site Recovery の監視で一般的に使用されるクエリの例をいくつか紹介します。

一部の例では、replicationProviderName_sA2A に設定しています。 この値は、Site Recovery を使用してセカンダリ Azure リージョンにレプリケートされる Azure 仮想マシンを取得します。 これらの例では、Site Recovery を使用して Azure にレプリケートされるオンプレミスの VMware 仮想マシンまたは物理サーバーを取得する場合は、 A2AInMageRcm に置き換えることができます。

レプリケーションの正常性を照会する

このクエリでは、保護されているすべての Azure 仮想マシンの現在のレプリケーション正常性の円グラフが作成されます。 グラフは、正常性を 3 つの状態 (標準、警告、または重大) に分割します。

AzureDiagnostics  
| where replicationProviderName_s == "A2A"   
| where isnotempty(name_s) and isnotnull(name_s)  
| summarize hint.strategy=partitioned arg_max(TimeGenerated, *) by name_s  
| project name_s , replicationHealth_s  
| summarize count() by replicationHealth_s  
| render piechart   

Mobility Service のバージョンを照会する

このクエリでは、Site Recovery でレプリケートされた Azure 仮想マシンの円グラフが作成されます。 このグラフでは、仮想マシンが実行されているモビリティ エージェントのバージョンによって、仮想マシンが分割されます。

AzureDiagnostics  
| where replicationProviderName_s == "A2A"   
| where isnotempty(name_s) and isnotnull(name_s)  
| summarize hint.strategy=partitioned arg_max(TimeGenerated, *) by name_s  
| project name_s , agentVersion_s  
| summarize count() by agentVersion_s  
| render piechart 

RPO 時間を照会する

このクエリでは、Site Recovery でレプリケートされた Azure 仮想マシンの棒グラフが作成されます。 このグラフでは、目標復旧ポイント (RPO) によって仮想マシンが分割されます。15 分未満、15 ~ 30 分、30 分を超えています。

AzureDiagnostics 
| where replicationProviderName_s == "A2A"   
| where isnotempty(name_s) and isnotnull(name_s)  
| extend RPO = case(rpoInSeconds_d <= 900, "<15Min",   
rpoInSeconds_d <= 1800, "15-30Min", ">30Min")  
| summarize hint.strategy=partitioned arg_max(TimeGenerated, *) by name_s  
| project name_s , RPO  
| summarize Count = count() by RPO  
| render barchart 

Site Recovery でレプリケートされた Azure 仮想マシンの棒グラフを示すスクリーンショット。

Site Recovery の「ジョブ」を照会する

このクエリでは、過去 72 時間以内にトリガーされたすべての Site Recovery ジョブ (すべてのディザスター リカバリー シナリオの場合) とその完了状態が取得されます。

AzureDiagnostics  
| where Category == "AzureSiteRecoveryJobs"  
| where TimeGenerated >= ago(72h)   
| project JobName = OperationName , VaultName = Resource , TargetName = affectedResourceName_s, State = ResultType  

Site Recovery イベントを照会する

このクエリでは、過去 72 時間以内にシステムによって発生したすべてのディザスター リカバリー シナリオのすべての Site Recovery イベントとその重大度が取得されます。

AzureDiagnostics   
| where Category == "AzureSiteRecoveryEvents"   
| where TimeGenerated >= ago(72h)   
| project AffectedObject=affectedResourceName_s , VaultName = Resource, Description_s = healthErrors_s , Severity = Level  

円グラフでテストフェールオーバーの状態を照会する

このクエリは、Site Recovery を使ってレプリケートされた Azure 仮想マシンのテスト フェールオーバーの状態を円グラフにプロットします。

AzureDiagnostics  
| where replicationProviderName_s == "A2A"   
| where isnotempty(name_s) and isnotnull(name_s)  
| where isnotempty(failoverHealth_s) and isnotnull(failoverHealth_s)  
| summarize hint.strategy=partitioned arg_max(TimeGenerated, *) by name_s  
| project name_s , Resource, failoverHealth_s  
| summarize count() by failoverHealth_s  
| render piechart 

テスト フェールオーバーの状態を照会する (表)

このクエリは、Site Recovery を使ってレプリケートされた Azure 仮想マシンのテスト フェールオーバーの状態を表にプロットします。

AzureDiagnostics   
| where replicationProviderName_s == "A2A"   
| where isnotempty(name_s) and isnotnull(name_s)   
| where isnotempty(failoverHealth_s) and isnotnull(failoverHealth_s)   
| summarize hint.strategy=partitioned arg_max(TimeGenerated, *) by name_s   
| project VirtualMachine = name_s , VaultName = Resource , TestFailoverStatus = failoverHealth_s 

マシンの RPO を照会する

このクエリは、直近 72 時間における特定の Azure 仮想マシン (ContosoVM123) の RPO を追跡した傾向グラフをプロットします。

AzureDiagnostics   
| where replicationProviderName_s == "A2A"   
| where TimeGenerated > ago(72h)  
| where isnotempty(name_s) and isnotnull(name_s)   
| where name_s == "ContosoVM123"  
| project TimeGenerated, name_s , RPO_in_seconds = rpoInSeconds_d   
| render timechart 

特定の Azure 仮想マシンの RPO を追跡する傾向グラフのスクリーンショット。

Azure 仮想マシンのデータ変更率 (チャーン) とアップロード率を照会する

このクエリでは、データ変更率 (1 秒あたりの書き込みバイト数) とデータアップロード率を表す特定の Azure 仮想マシン (ContosoVM123) の傾向グラフがプロットされます。

AzureDiagnostics   
| where Category in ("AzureSiteRecoveryProtectedDiskDataChurn", "AzureSiteRecoveryReplicationDataUploadRate")   
| extend CategoryS = case(Category contains "Churn", "DataChurn",   
Category contains "Upload", "UploadRate", "none")  
| extend InstanceWithType=strcat(CategoryS, "_", InstanceName_s)   
| where TimeGenerated > ago(24h)   
| where InstanceName_s startswith "ContosoVM123"   
| project TimeGenerated , InstanceWithType , Churn_MBps = todouble(Value_s)/1048576   
| render timechart  

特定の Azure 仮想マシンの傾向グラフのスクリーンショット。

VMware または物理マシンのデータ変更率 (チャーン) とアップロード率を照会する

これらのログをフェッチするようにプロセス サーバーで監視エージェントを設定します。 監視エージェントの構成手順はこちらを参照してください。

このクエリによって、複製アイテム win-9r7sfh9qlru の特定のディスク disk0 の傾向グラフが描画されます。そのグラフは、データ変更率 (1 秒あたりの書き込みバイト数) とデータ アップロード率を表わします。 Recovery Services コンテナーの複製アイテムの [ディスク] ブレードで、ディスクの名前を見つけることができます。 クエリで使用するインスタンス名は、次の例のように、マシンの DNS 名の後に _ とディスク名が続きます。

Perf
| where ObjectName == "ASRAnalytics"
| where InstanceName contains "win-9r7sfh9qlru_disk0"
| where TimeGenerated >= ago(4h) 
| project TimeGenerated ,CounterName, Churn_MBps = todouble(CounterValue)/5242880 
| render timechart

プロセス サーバーは、このデータを 5 分ごとに Log Analytics ワークスペースにプッシュします。 これらのデータ ポイントは、5 分間に計算された平均を表します。

ディザスター リカバリーのサマリーを照会する (Azure から Azure)

このクエリは、セカンダリ Azure リージョンにレプリケートされた Azure 仮想マシンのサマリー テーブルをプロットします。 仮想マシン名、レプリケーションと保護の状態、RPO、テスト フェールオーバーの状態、モビリティ エージェントのバージョン、アクティブなレプリケーション エラー、ソースの場所が示されます。

AzureDiagnostics 
| where replicationProviderName_s == "A2A"   
| where isnotempty(name_s) and isnotnull(name_s)   
| summarize hint.strategy=partitioned arg_max(TimeGenerated, *) by name_s   
| project VirtualMachine = name_s , Vault = Resource , ReplicationHealth = replicationHealth_s, Status = protectionState_s, RPO_in_seconds = rpoInSeconds_d, TestFailoverStatus = failoverHealth_s, AgentVersion = agentVersion_s, ReplicationError = replicationHealthErrors_s, SourceLocation = primaryFabricName_s 

ディザスター リカバリーのサマリーを照会する (VMware または物理サーバー)

このクエリは、Azure にレプリケートされた VMware 仮想マシンと物理サーバーのサマリー テーブルをプロットします。 マシン名、レプリケーションと保護の状態、RPO、テスト フェールオーバーの状態、モビリティ エージェントのバージョン、アクティブなレプリケーション エラー、関連するプロセス サーバーが示されます。

AzureDiagnostics  
| where replicationProviderName_s == "InMageRcm"   
| where isnotempty(name_s) and isnotnull(name_s)   
| summarize hint.strategy=partitioned arg_max(TimeGenerated, *) by name_s   
| project VirtualMachine = name_s , Vault = Resource , ReplicationHealth = replicationHealth_s, Status = protectionState_s, RPO_in_seconds = rpoInSeconds_d, TestFailoverStatus = failoverHealth_s, AgentVersion = agentVersion_s, ReplicationError = replicationHealthErrors_s, ProcessServer = processServerName_g  

アラートを設定する - 例

Azure Monitor のデータに基づいて Site Recovery のアラートを設定できます。 ログ アラートの設定に関する詳細情報を参照してください。

一部の例では、replicationProviderName_sA2A に設定しています。 この値は、セカンダリ Azure リージョンにレプリケートされる Azure 仮想マシンのアラートを設定します。 それらの例で、Azure にレプリケートされたオンプレミスの VMware 仮想マシンまたは物理サーバーのアラートを設定したい場合は、A2AInMageRcm に置き換えてください。

複数のマシンがクリティカル状態

レプリケートされた Azure 仮想マシンのうち、クリティカル状態になった仮想マシンが 20 を超えた場合のアラートを設定します。

AzureDiagnostics   
| where replicationProviderName_s == "A2A"   
| where replicationHealth_s == "Critical"  
| where isnotempty(name_s) and isnotnull(name_s)   
| summarize hint.strategy=partitioned arg_max(TimeGenerated, *) by name_s   
| summarize count() 

このアラートでは、しきい値20 に設定します。

1 つのマシンがクリティカル状態

レプリケートされた特定の Azure 仮想マシンがクリティカル状態になった場合のアラートを設定します。

AzureDiagnostics   
| where replicationProviderName_s == "A2A"   
| where replicationHealth_s == "Critical"  
| where name_s == "ContosoVM123"  
| where isnotempty(name_s) and isnotnull(name_s)   
| summarize hint.strategy=partitioned arg_max(TimeGenerated, *) by name_s   
| summarize count()  

このアラートでは、しきい値1 に設定します。

複数のマシンが RPO を超過

20 個を超える Azure 仮想マシンで RPO が 30 分を超過した場合のアラートを設定します。

AzureDiagnostics   
| where replicationProviderName_s == "A2A"   
| where isnotempty(name_s) and isnotnull(name_s)   
| where rpoInSeconds_d > 1800  
| summarize hint.strategy=partitioned arg_max(TimeGenerated, *) by name_s   
| project name_s , rpoInSeconds_d   
| summarize count()  

このアラートでは、しきい値20 に設定します。

1 つのマシンが RPO を超過

1 つの Azure 仮想マシンで RPO が 30 分を超過した場合のアラートを設定します。

AzureDiagnostics   
| where replicationProviderName_s == "A2A"   
| where isnotempty(name_s) and isnotnull(name_s)   
| where name_s == "ContosoVM123"  
| where rpoInSeconds_d > 1800  
| summarize hint.strategy=partitioned arg_max(TimeGenerated, *) by name_s   
| project name_s , rpoInSeconds_d   
| summarize count()  

このアラートでは、しきい値1 に設定します。

複数のマシンのテスト フェールオーバーが 90 日を超過

テスト フェールオーバーが最後に成功してからの経過日数が 90 日を超える仮想マシンが 20 個を超えた場合のアラートを設定します。

AzureDiagnostics  
| where replicationProviderName_s == "A2A"   
| where Category == "AzureSiteRecoveryReplicatedItems"  
| where isnotempty(name_s) and isnotnull(name_s)   
| where lastSuccessfulTestFailoverTime_t <= ago(90d)   
| summarize hint.strategy=partitioned arg_max(TimeGenerated, *) by name_s   
| summarize count()  

このアラートでは、しきい値20 に設定します。

1 つのマシンのテスト フェールオーバーが 90 日を超過

特定の仮想マシンでテスト フェールオーバーが最後に成功してからの経過日数が 90 日を超えた場合のアラートを設定します。

AzureDiagnostics  
| where replicationProviderName_s == "A2A"   
| where Category == "AzureSiteRecoveryReplicatedItems"  
| where isnotempty(name_s) and isnotnull(name_s)   
| where lastSuccessfulTestFailoverTime_t <= ago(90d)   
| where name_s == "ContosoVM123"  
| summarize hint.strategy=partitioned arg_max(TimeGenerated, *) by name_s   
| summarize count()  

このアラートでは、しきい値1 に設定します。

Site Recovery ジョブが失敗しました

Site Recovery のすべてのシナリオを対象に、直近 24 時間に Site Recovery ジョブ (このケースでは再保護ジョブ) が失敗した場合のアラートを設定します。

AzureDiagnostics   
| where Category == "AzureSiteRecoveryJobs"   
| where OperationName == "Reprotect"  
| where ResultType == "Failed"  
| summarize count()  

アラートの場合は、 しきい値 を 1 に設定し、 期間 を 1,440 分に設定して、最後の日のエラーを確認します。

次のステップ

Site Recovery のビルトインの監視機能に関する説明を参照してください。