다음을 통해 공유


Azure Monitor - Log Analytics 작업 영역을 다른 지역으로 재배치

기존 Azure 리소스를 한 지역에서 다른 지역으로 이동하려는 이유는 다양합니다. 다음을 수행하려고 할 수 있습니다.

  • 새 Azure 지역 활용.
  • 특정 지역에서만 사용할 수 있는 기능 또는 서비스 배포.
  • 내부 정책 및 거버넌스 요구 사항 충족.
  • 회사 인수 합병에 부합.
  • 용량 계획 요구 사항 충족.

Log Analytics 작업 영역에 대한 재배치 계획에는 Log Analytics 작업 영역을 사용하여 데이터를 기록하는 모든 리소스의 재배치가 포함되어야 합니다.

Log Analytics 작업 영역은 한 지역에서 다른 지역 및 연결된 디바이스로 작업 영역 데이터를 마이그레이션하는 것을 기본적으로 지원하지 않습니다. 대신 대상 지역에 새 Log Analytics 작업 영역을 만들고 새 작업 영역에서 디바이스 및 설정을 다시 구성해야 합니다.

아래 다이어그램은 Log Analytics 작업 영역의 재배치 패턴을 보여 줍니다. 빨간색 흐름선은 데이터 이동, 도메인 및 엔드포인트 업데이트와 함께 대상 인스턴스의 다시 배포를 나타냅니다.

Log Analytics 작업 영역 재배치 패턴을 보여 주는 다이어그램..

가용성 영역 지원으로 재배치

Azure 가용성 영역은 각 Azure 지역 내에서 물리적으로 분리된 세 개 이상의 데이터 센터 그룹입니다. 각 영역 내의 데이터 센터에는 독립적인 전원, 냉각, 네트워킹 인프라가 장착되어 있습니다. 가용성 영역은 로컬 영역이 실패한 경우에 한 영역이 영향을 받는 경우 나머지 두 영역에서 지역 서비스, 용량 및 고가용성을 지원하도록 설계되었습니다.

오류는 소프트웨어 및 하드웨어 오류에서 지진, 홍수 및 화재와 같은 이벤트에 이르기까지 다양합니다. Azure 서비스의 중복성과 논리적 격리로 인해 오류 허용성에 도달합니다. Azure의 가용성 영역에 대한 자세한 내용은 지역 및 가용성 영역을 참조하세요.

Azure 가용성 영역 지원 서비스는 적절한 수준의 복원력과 유연성을 제공하도록 설계되었습니다. 두 가지 방법으로 구성할 수 있습니다. 영역 간 자동 복제를 사용하는 영역 중복 또는 특정 영역에 고정된 인스턴스를 사용하는 영역일 수 있습니다. 이러한 방식을 결합할 수도 있습니다. 영역 및 영역 중복 아키텍처에 대한 자세한 내용은 가용성 영역 및 지역 사용에 대한 권장 사항을 참조하세요.

Log Analytics 작업 영역을 가용성 영역을 지원하는 지역으로 재배치하려면 다음을 수행합니다.

필수 조건

  • 작업 영역 구성을 다른 지역에 배포할 수 있는 템플릿으로 내보내려면 Log Analytics 기여자 또는 모니터링 기여자 이상의 역할이 필요합니다.

  • 다음을 포함하여 현재 작업 영역과 연결된 모든 리소스를 식별합니다.

    • 연결된 에이전트: 작업 영역에서 로그를 입력하고 Heartbeat 테이블을 쿼리하여 연결된 에이전트를 나열합니다.

      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
      
    • 설치된 솔루션: 설치된 솔루션 목록을 보려면 작업 영역 탐색 창에서 레거시 솔루션을 선택합니다.

    • 데이터 수집기 API: 데이터 수집기 API를 통해 도착하는 데이터는 사용자 지정 로그 테이블에 저장됩니다. 사용자 지정 로그 테이블 목록을 보려면 작업 영역 탐색 창에서 로그를 선택한 다음 스키마 창에서 사용자 지정 로그를 선택합니다.

    • 연결된 서비스: 작업 영역에는 Azure Automation 계정, 스토리지 계정 또는 전용 클러스터와 같은 종속 리소스에 연결된 서비스가 있을 수 있습니다. 작업 영역에서 연결된 서비스를 제거합니다. 대상 작업 영역에서 수동으로 재구성합니다.

    • 경고: 경고를 나열하려면 작업 영역 탐색 창에서 경고을 선택한 다음 도구 모음에서 경고 규칙 관리를 선택합니다. 2019년 6월 1일 이후에 만들어진 작업 영역 또는 Log Analytics Alert API에서 scheduledQueryRules API로 업그레이드한 작업 영역의 경고가 템플릿에 포함될 수 있습니다.

      scheduledQueryRules API가 작업 영역의 경고에 사용되는지 확인할 수 있습니다. 또는 대상 작업 영역에서 수동으로 경고를 구성할 수 있습니다.

    • 쿼리 팩: 작업 영역을 여러 쿼리 팩과 연결할 수 있습니다. 작업 영역에서 쿼리 팩을 식별하려면 작업 영역 탐색 창에서 로그를 선택하고 왼쪽 창에서 쿼리를 선택한 다음 검색 상자 오른쪽에 있는 줄임표를 선택합니다. 선택한 쿼리 팩이 있는 대화 상자가 오른쪽에 열립니다. 쿼리 팩이 이동하는 작업 영역과 동일한 리소스 그룹에 있는 경우 이 마이그레이션에 포함할 수 있습니다.

  • Azure 구독을 통해 대상 지역에서 Log Analytics 작업 영역을 만들 수 있는지 확인합니다.

가동 중지 시간

발생할 수 있는 가동 중지 시간을 이해하려면 Azure용 클라우드 채택 프레임워크: 재배치 방법 선택을 참조하세요.

준비

다음 프로시저에서는 Resource Manager 템플릿을 사용하여 이동을 위한 작업 영역 및 리소스를 준비하는 방법을 보여 줍니다.

참고 항목

템플릿을 통해 모든 리소스를 내보낼 수 있는 것은 아닙니다. 대상 지역에서 작업 영역을 만든 후 별도로 구성해야 합니다.

  1. Azure Portal에 로그인한 다음, 리소스 그룹을 선택합니다.

  2. 작업 영역이 포함된 리소스 그룹을 찾아 선택합니다.

  3. 경고 리소스를 보려면 숨겨진 형식 표시 확인란을 선택합니다.

  4. 형식 필터를 선택합니다. Log Analytics 작업 영역, Solution, SavedSearches, microsoft.insights/scheduledqueryrules, defaultQueryPack 및 보유하고 있는 기타 작업 영역 관련 리소스(예: Automation 계정)를 선택합니다. 그런 다음 적용을 선택합니다.

  5. 작업 영역, 솔루션, 저장된 검색, 경고, 쿼리 팩 및 보유하고 있는 기타 작업 영역 관련 리소스(예: Automation 계정)를 선택합니다. 그런 다음 도구 모음에서 템플릿 내보내기를 선택합니다.

    참고 항목

    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의 데이터 보존를 참조하세요. 지역 코드는 공백이 없는 지역 이름입니다. 예를 들어, 미국 중부centralus여야 합니다.

  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. 온라인 편집기에서 저장을 선택합니다.

재배포

  1. 구독을 선택하여 대상 작업 영역을 배포할 구독을 선택합니다.

  2. 리소스 그룹을 선택하여 대상 작업 영역을 배포할 리소스 그룹을 선택합니다. 새로 만들기를 선택하여 대상 작업 영역에 대한 새 리소스 그룹을 만들 수 있습니다.

  3. 지역이 네트워크 보안 그룹을 배포할 대상 위치로 설정되어 있는지 확인합니다.

  4. 검토 + 만들기 단추를 선택하여 템플릿을 확인합니다.

  5. 만들기를 선택하여 작업 영역과 선택한 리소스를 대상 지역에 배포합니다.

  6. 선택한 리소스를 포함한 작업 영역이 이제 대상 지역에 배포되었습니다. 원래 작업 영역에 기능을 페어링하기 위해 작업 영역에서 나머지 구성을 완료할 수 있습니다.

    • 에이전트 연결: 데이터 컬렉션 규칙을 포함하여 사용 가능한 옵션을 사용하여 가상 머신 및 가상 머신 확장 집합에 필요한 에이전트를 구성하고 새 대상 작업 영역을 대상으로 지정합니다.
    • 진단 설정: 대상 작업 영역을 대상으로 하여 식별된 리소스의 진단 설정을 업데이트합니다.
    • 솔루션 설치: Microsoft Sentinel과 같은 일부 솔루션은 특정 온보딩 절차가 필요하며 템플릿에 포함되지 않았습니다. 따라서 새 작업 영역에 별도로 온보딩해야 합니다.
    • Data Collector API 구성: 데이터를 대상 작업 영역으로 보내도록 Data Collector API 인스턴스를 구성합니다.
    • 경고 규칙 구성: 템플릿에서 경고를 내보내지 않으면 대상 작업 영역에서 경고를 수동으로 구성해야 합니다.
  7. 새 데이터가 원래 작업 영역으로 수집되지 않았는지 확인합니다. 원래 작업 영역에서 다음 쿼리를 실행하고 마이그레이션 후 수집이 없는지 확인합니다.

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

데이터 원본이 대상 작업 영역에 연결되면 수집된 데이터가 대상 작업 영역에 저장됩니다. 이전 데이터는 원래 작업 영역에 유지되며 보존 정책이 적용됩니다. 교차 작업 영역 쿼리를 수행할 수 있습니다. 두 작업 영역에 동일한 이름이 할당된 경우 작업 영역 참조에서 정규화된 이름(subscriptionName/resourceGroup/componentName)을 사용합니다.

다음은 이름이 같은 두 작업 영역에 대한 쿼리의 예입니다.

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. 제거할 리소스를 선택한 다음 도구 모음에서 삭제를 선택합니다.