次の方法で共有


Azure Monitor - Log Analytics ワークスペースを別のリージョンに再配置する

既存の Azure リソースを、1 つのリージョンから他のリージョンに移動する理由には、さまざまが考えられます。 以下を行うことができます。

  • 新しい Azure リージョンの利点を活用する。
  • 特定のリージョンでしか利用できない機能やサービスをデプロイする。
  • 内部ポリシーやガバナンスの要件を満たす。
  • 会社の合併と買収に合わせた調整を行う
  • 容量計画の要件を満たす。

Log Analytics ワークスペースの再配置計画には、Log Analytics ワークスペースでデータをログに記録するリソースの再配置が含まれている必要があります。

Log Analytics ワークスペースで、あるリージョンから別のリージョンおよび関連付けられているデバイスへのワークスペース データの移行は、ネイティブではサポートされていません。 代わりに、ターゲット リージョンに新しい Log Analytics ワークスペースを作成し、新しいワークスペースでデバイスと設定を再構成する必要があります。

次の図は、Log Analytics ワークスペースの再配置パターンを示しています。 赤いフローの線は、ターゲット インスタンスの再デプロイと、データ移動、ドメインとエンドポイントの更新を表します。

Log Analytics ワークスペースの再配置パターンを示す図。

可用性ゾーンへの再配置のサポート

可用性ゾーンとは、各 Azure リージョン内にある、物理的に分離されたデータセンターのグループです。 1 つのゾーンで障害が発生した場合、残りのゾーンのいずれかにサービスをフェールオーバーできます。

Azure における可用性ゾーンの詳細については、「可用性ゾーンとは」を参照してください。

Log Analytics ワークスペースを可用性ゾーンをサポートするリージョンに再配置する場合:

前提条件

  • ワークスペース構成を、別のリージョンにデプロイ可能なテンプレートにエクスポートするには、Log Analytics 共同作成者または監視共同作成者ロール以上が必要です。

  • 次のような、お使いのワークスペースに現在関連付けられているすべてのリソースを特定します。

    • 接続されたエージェント: ワークスペースに「ログ」と入力し、ハートビート テーブルのクエリを実行して、接続されているエージェントを一覧表示します。

      Heartbeat
      | summarize by Computer, Category, OSType, _ResourceId
      
    • 診断設定: リソースでは、ワークスペース内の Azure Diagnostics または専用テーブルにログを送信できます。 ワークスペースに「ログ」と入力し、AzureDiagnostics テーブルにデータを送信するリソースに対して次のクエリを実行します。

      AzureDiagnostics
      | where TimeGenerated > ago(12h)
      | summarize by  ResourceProvider , ResourceType, Resource
      | sort by ResourceProvider, ResourceType
      

      専用テーブルにデータを送信するリソースに対して、次のクエリを実行します。

      search *
      | where TimeGenerated > ago(12h)
      | where isnotnull(_ResourceId)
      | extend ResourceProvider = split(_ResourceId, '/')[6]
      | where ResourceProvider !in ('microsoft.compute', 'microsoft.security')
      | extend ResourceType = split(_ResourceId, '/')[7]
      | extend Resource = split(_ResourceId, '/')[8]
      | summarize by tostring(ResourceProvider) , tostring(ResourceType), tostring(Resource)
      | sort by ResourceProvider, ResourceType
      
    • インストール済みのソリューション: インストール済みソリューションの一覧を表示するには、ワークスペース ナビゲーション ウィンドウの [Legacy solutions] (レガシ ソリューション) を選択します。

    • データ コレクター API: データ コレクター API 経由で着信したデータは、カスタム ログ テーブルに保存されます。 カスタム ログ テーブルの一覧を表示するには、ワークスペース ナビゲーション ウィンドウの [ログ] を選択してから、スキーマ ウィンドウの [カスタム ログ] を選択します。

    • リンク サービス: ワークスペースには、Azure Automation アカウント、ストレージ アカウント、専用クラスターなどの依存リソースへのリンク サービスが含まれている場合があります。 ワークスペースからリンク サービスを削除します。 ターゲット ワークスペース内にそれらを手動で再構成します。

    • アラート: アラートの一覧を表示するには、ワークスペース ナビゲーション ウィンドウの [アラート] を選択してから、ツール バーの [アラート ルールの管理] を選択します。 2019 年 6 月 1 日より後に作成されたワークスペース内、またはLog Analytics のアラート API から scheduledQueryRules API にアップグレードされたワークスペース内のアラートをテンプレートに含めることができます。

      scheduledQueryRules API がお使いのワークスペース内のアラートに使用されているかどうかを確認できます。 または、ターゲット ワークスペース内にアラートを手動で構成することもできます。

    • クエリ パック: ワークスペースは、複数のクエリ パックに関連付けることができます。 お使いのワークスペース内のクエリ パックを特定するには、ワークスペース ナビゲーション ウィンドウの [ログ] 、左側のウィンドウの [クエリ] 、検索ボックスの右側にある省略記号の順に選択します。 選択したクエリ パックを含むダイアログが右側に開きます。 移動するワークスペースが含まれているリソース グループにクエリ パックも含まれている場合は、この移動に含めることができます。

  • お使いの Azure サブスクリプションで、ターゲット リージョンに Log Analytics ワークスペースを作成できることを確認します。

ダウンタイム

発生の可能性のあるダウンタイムを理解するには、「Azure 向けのクラウド導入フレームワーク: 再配置方法を選択する」を参照してください。

準備

以下の手順では、Resource Manager テンプレートを使用して移動のためにワークスペースとリソースを準備する方法を示します。

Note

一部のリソースは、テンプレートを使用してエクスポートできません。 これらは、ターゲット リージョンにワークスペースを作成した後で個別に構成する必要があります。

  1. Azure portal にサインインし、 [リソース グループ] を選択します。

  2. お使いのワークスペースが含まれているリソース グループを探し、それを選択します。

  3. アラート リソースを表示するには、 [非表示の型の表示] を選択します。

  4. [種類] フィルターを選択します。 Log Analytics ワークスペースソリューションSavedSearchesmicrosoft.insights/scheduledqueryrulesdefaultQueryPack、およびその他の含まれているワークスペース関連リソース (Automation など) を選択します。 次に、[適用] を選択します。

  5. ワークスペース、ソリューション、保存された検索条件、アラート、クエリ パック、およびその他の含まれているワークスペース関連リソース (Automation など) を選択します。 次に、ツール バーの [テンプレートのエクスポート] を選択します。

    Note

    Microsoft Sentinel は、テンプレートを使用してエクスポートできません。 ターゲット ワークスペースに Sentinel をオンボードする必要があります。

  6. ツール バーの [デプロイ] を選択して、デプロイ用にテンプレートを編集して準備します。

  7. ツール バーの [パラメーターの編集] を選択して、オンライン エディターで parameters.json ファイルを開きます。

  8. パラメーターを編集するには、parameters の下の value プロパティを変更します。 次に例を示します。

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "workspaces_name": {
          "value": "my-workspace-name"
        },
        "workspaceResourceId": {
          "value": "/subscriptions/resource-id/resourceGroups/resource-group-name/providers/Microsoft.OperationalInsights/workspaces/workspace-name"
        },
        "alertName": {
          "value": "my-alert-name"
        },
        "querypacks_name": {
          "value": "my-default-query-pack-name"
        }
      }
    }
    
  9. エディターで [保存] を選択します。

テンプレートの編集

  1. ツール バーの [テンプレートの編集] を選択して、オンライン エディターで template.json ファイルを開きます。

  2. Log Analytics ワークスペースをデプロイするターゲット リージョンを編集するには、オンライン エディターで resources の下の location プロパティを変更します。

    リージョンの場所コードを取得する場合は、「Azure でのデータ所在地」を参照してください。 リージョンのコードは、スペースを含まないリージョン名です。 たとえば、Central UScentralus とする必要があります。

  3. テンプレート内にリンク サービス リソース (microsoft.operationalinsights/workspaces/linkedservices) がある場合は削除します。 これらのリソースは、ターゲット ワークスペースに手動で再構成する必要があります。

    次のテンプレートの例には、ワークスペース、保存された検索、ソリューション、アラート、クエリ パックが含まれています。

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "workspaces_name": {
          "type": "String"
        },
        "workspaceResourceId": {
          "type": "String"
        },
        "alertName": {
          "type": "String"
        },
        "querypacks_name": {
          "type": "String"
        }
      },
      "variables": {},
      "resources": [
        {
          "type": "microsoft.operationalinsights/workspaces",
          "apiVersion": "2020-08-01",
          "name": "[parameters('workspaces_name')]",
          "location": "france central",
          "properties": {
            "sku": {
              "name": "pergb2018"
            },
            "retentionInDays": 30,
            "features": {
              "enableLogAccessUsingOnlyResourcePermissions": true
            },
            "workspaceCapping": {
              "dailyQuotaGb": -1
            },
            "publicNetworkAccessForIngestion": "Enabled",
            "publicNetworkAccessForQuery": "Enabled"
          }
        },
        {
          "type": "Microsoft.OperationalInsights/workspaces/savedSearches",
          "apiVersion": "2020-08-01",
          "name": "[concat(parameters('workspaces_name'), '/2b5112ec-5ad0-5eda-80e9-ad98b51d4aba')]",
          "dependsOn": [
            "[resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaces_name'))]"
          ],
          "properties": {
            "category": "VM Monitoring",
            "displayName": "List all versions of curl in use",
            "query": "VMProcess\n| where ExecutableName == \"curl\"\n| distinct ProductVersion",
            "tags": [],
            "version": 2
          }
        },
        {
          "type": "Microsoft.OperationsManagement/solutions",
          "apiVersion": "2015-11-01-preview",
          "name": "[concat('Updates(', parameters('workspaces_name'))]",
          "location": "france central",
          "dependsOn": [
            "[resourceId('microsoft.operationalinsights/workspaces', parameters('workspaces_name'))]"
          ],
          "plan": {
            "name": "[concat('Updates(', parameters('workspaces_name'))]",
            "promotionCode": "",
            "product": "OMSGallery/Updates",
            "publisher": "Microsoft"
          },
          "properties": {
            "workspaceResourceId": "[resourceId('microsoft.operationalinsights/workspaces', parameters('workspaces_name'))]",
            "containedResources": [
              "[concat(resourceId('microsoft.operationalinsights/workspaces', parameters('workspaces_name')), '/views/Updates(', parameters('workspaces_name'), ')')]"
            ]
          }
        }
        {
          "type": "Microsoft.OperationsManagement/solutions",
          "apiVersion": "2015-11-01-preview",
          "name": "[concat('VMInsights(', parameters('workspaces_name'))]",
          "location": "france central",
          "plan": {
            "name": "[concat('VMInsights(', parameters('workspaces_name'))]",
            "promotionCode": "",
            "product": "OMSGallery/VMInsights",
            "publisher": "Microsoft"
          },
          "properties": {
            "workspaceResourceId": "[resourceId('microsoft.operationalinsights/workspaces', parameters('workspaces_name'))]",
            "containedResources": [
              "[concat(resourceId('microsoft.operationalinsights/workspaces', parameters('workspaces_name')), '/views/VMInsights(', parameters('workspaces_name'), ')')]"
            ]
          }
        },
        {
          "type": "microsoft.insights/scheduledqueryrules",
          "apiVersion": "2021-08-01",
          "name": "[parameters('alertName')]",
          "location": "france central",
          "properties": {
            "displayName": "[parameters('alertName')]",
            "severity": 3,
            "enabled": true,
            "evaluationFrequency": "PT5M",
            "scopes": [
              "[parameters('workspaceResourceId')]"
            ],
            "windowSize": "PT15M",
            "criteria": {
              "allOf": [
                {
                  "query": "Heartbeat | where computer == 'my computer name'",
                  "timeAggregation": "Count",
                  "operator": "LessThan",
                  "threshold": 14,
                  "failingPeriods": {
                    "numberOfEvaluationPeriods": 1,
                    "minFailingPeriodsToAlert": 1
                  }
                }
              ]
            },
            "autoMitigate": true,
            "actions": {}
          }
        },
        {
          "type": "Microsoft.OperationalInsights/querypacks",
          "apiVersion": "2019-09-01-preview",
          "name": "[parameters('querypacks_name')]",
          "location": "francecentral",
          "properties": {}
        },
        {
          "type": "Microsoft.OperationalInsights/querypacks/queries",
          "apiVersion": "2019-09-01-preview",
          "name": "[concat(parameters('querypacks_name'), '/00000000-0000-0000-0000-000000000000')]",
          "dependsOn": [
            "[resourceId('Microsoft.OperationalInsights/querypacks', parameters('querypacks_name'))]"
          ],
          "properties": {
            "displayName": "my-query-name",
            "body": "my-query-text",
            "related": {
              "categories": [],
              "resourceTypes": [
                  "microsoft.operationalinsights/workspaces"
              ]
            },
            "tags": {
              "labels": []
            }
          }
        }
      ]
    }
    
  4. オンライン エディターで [保存] を選択します。

Redeploy

  1. [サブスクリプション] を選択して、ターゲット ワークスペースをデプロイするサブスクリプションを選択します。

  2. [リソース グループ] を選択して、ターゲット ワークスペースをデプロイするリソース グループを選択します。 [新規作成] を選択すると、ターゲット ワークスペース用の新しいリソース グループを作成できます。

  3. [リージョン] が、ネットワーク セキュリティ グループをデプロイする移動先の場所に設定されていることを確認します。

  4. [確認および作成] ボタンを選択してテンプレートを検証します。

  5. [作成] を選択して、ワークスペースと選択したリソースをターゲット リージョンにデプロイします。

  6. これで、選択したリソースを含むワークスペースがターゲット リージョンにデプロイされました。 元のワークスペースと同等の機能を持つように、ワークスペース内の残りの構成を完了できます。

    • エージェントの接続: 使用可能なオプション (データ収集ルールなど) を使用して、仮想マシンと仮想マシン スケール セット上に必要なエージェントを構成し、新しいターゲット ワークスペースを移動先として指定します。
    • 診断設定: 特定されたリソースの診断設定を、移動先に指定されたターゲット ワークスペースで更新します。
    • ソリューションのインストール: Microsoft Sentinel などの一部のソリューションには特定のオンボード手順が必要なため、テンプレートには含まれていません。 これらは、新しいワークスペースに別途オンボードする必要があります。
    • データ コレクター API の構成: ターゲット ワークスペースにデータを送信するようにデータ コレクター API インスタンスを構成します。
    • アラート ルールの構成: テンプレートにアラートがエクスポートされない場合は、ターゲット ワークスペースに手動で構成する必要があります。
  7. 新しいデータが元のワークスペースに取り込まれていないことを確認します。 元のワークスペースで次のクエリを実行し、移動後にインジェストが存在しないことを確認します。

    search *
    | where TimeGenerated > ago(12h)
    | summarize max(TimeGenerated) by Type
    

データ ソースがターゲット ワークスペースに接続されると、取り込まれたデータはターゲット ワークスペースに格納されます。 古いデータは元のワークスペースに残り、アイテム保持ポリシーの対象となります。 クロスワークスペース クエリを実行できます。 両方のワークスペースに同じ名前が割り当てられていた場合は、ワークスペースの参照で修飾名 (subscriptionName/resourceGroup/componentName) を使用できます。

同じ名前を持つ 2 つのワークスペース間のクエリの例を次に示します。

union 
  workspace('subscription-name1/<resource-group-name1/<original-workspace-name>')Update, 
  workspace('subscription-name2/<resource-group-name2/<target-workspace-name>').Update, 
| where TimeGenerated >= ago(1h)
| where UpdateState == "Needed"
| summarize dcount(Computer) by Classification

破棄

ソース ワークスペースを破棄する場合は、エクスポートしたリソース、またはこれらのリソースを含むリソース グループを削除します。

  1. Azure portal でターゲット リソース グループを選択します。

  2. [概要] ページで、次の操作を行います。

    • このデプロイ用に新しいリソース グループを作成した場合は、ツール バーの [リソース グループの削除] を選択して、そのリソース グループを削除します。
    • テンプレートが既存のリソース グループにデプロイされている場合は、テンプレートを使用してデプロイされたリソースを選択してから、ツール バーの [削除] を選択して、選択したリソースを削除します。

クリーンアップ

新しいデータは新しいワークスペースに取り込まれていますが、元のワークスペース内の古いデータは残っていてクエリに使用でき、ワークスペースで定義されているアイテム保持ポリシーの対象になります。 ワークスペースをまたいでクエリを実行するために古いデータが必要な限り、元のワークスペースを保持することをお勧めします。

元のワークスペース内の古いデータにアクセスする必要がなくなった場合は、次の操作を行います。

  1. Azure portal で元のリソース グループを選択します。
  2. 削除するリソースを選択してから、ツール バーの [削除] を選択します。