다음을 통해 공유


Azure Monitor 로그와 Azure Automation State Configuration 통합

참고 항목

Automation State Configuration을 사용하도록 설정하기 전에 게스트 구성이라는 Azure Policy의 기능으로 관리되는 최신 버전의 DSC가 이제 일반 공급됨을 알려드립니다. 게스트 구성 서비스는 DSC 확장, Azure Automation State Configuration 및 고객 피드백에서 가장 일반적으로 요청되는 기능을 결합합니다. 게스트 구성에는 Arc 지원 서버를 통한 하이브리드 컴퓨터 지원도 포함됩니다.

Azure Automation State Configuration은 노드 상태 데이터를 30일 동안 유지합니다. 더 오랜 기간 동안 이 데이터를 보존하려면 노드 상태 데이터를 Azure Monitor 로그로 보낼 수 있습니다. Azure Portal에서 또는 PowerShell을 사용하여 노드 및 노드 구성의 개별 DSC 리소스에 대한 준수 상태를 볼 수 있습니다.

Azure Monitor 로그는 Automation State Configuration 데이터의 작동을 보다 정확히 이해하도록 하며 인시던트를 더 빠르게 해결하도록 도와줍니다. Azure Monitor 로그를 사용하여 다음을 수행할 수 있습니다.

  • 관리되는 노드 및 개별 리소스에 대한 준수 정보를 가져옵니다.
  • 준수 상태를 기준으로 이메일 또는 경고를 트리거합니다.
  • 관리되는 노드에서 고급 쿼리를 작성합니다.
  • Automation 계정에서 준수 상태를 상호 연결합니다.
  • 사용자 지정 보기와 검색 쿼리를 사용하여 runbook 결과, runbook 작업 상태 및 기타 관련된 핵심 지표 또는 메트릭을 시각화합니다.

참고 항목

이 문서는 Log Analytics 대신 Azure Monitor 로그라는 용어를 사용하도록 최근에 업데이트되었습니다. 로그 데이터는 여전히 Log Analytics 작업 영역에 저장되며 동일한 Log Analytics 서비스에 의해 계속 수집 및 분석됩니다. Azure Monitor에서 로그의 역할을 보다 잘 반영하기 위해 용어를 업데이트하고 있습니다. 자세한 내용은 Azure Monitor 용어 변경을 참조하세요.

필수 조건

Automation State Configuration 보고서를 Azure Monitor 로그로 보내려면 다음이 필요합니다.

  • PowerShell Az 모듈이 설치되었습니다. 최신 버전이 있는지 확인합니다. 필요한 경우 Update-Module -Name Az를 실행합니다.

Azure Monitor 로그와 통합 설정

Azure Automation State Configuration에서 Azure Monitor 로그로 데이터 가져오기를 시작하려면 다음 단계를 완료합니다. 포털을 사용하는 단계는 Azure Monitor 로그에 Azure Automation 작업 데이터 전달을 참조하세요.

  1. 머신에서 PowerShell Connect-AzAccount cmdlet을 사용하여 Azure 구독에 로그인하고 화면의 지시를 따릅니다.

    # Sign in to your Azure subscription
    $sub = Get-AzSubscription -ErrorAction SilentlyContinue
    if(-not($sub))
    {
        Connect-AzAccount
    }
    
    # If you have multiple subscriptions, set the one to use
    # Select-AzSubscription -SubscriptionId "<SUBSCRIPTIONID>"
    
  2. automationAccount 변수에 대해 Automation 계정의 실제 이름을 사용하고, workspaceName 변수에 대해 Log Analytics 작업 영역의 실제 이름을 사용하여 적절한 값을 제공합니다. 그런 다음 스크립트를 실행합니다.

    $automationAccount = "automationAccount"
    $law = "workspaceName"
    
  3. 다음 PowerShell 명령을 실행하여 Automation 계정의 리소스 ID를 가져옵니다.

    # Find the ResourceId for the Automation account
    $AutomationResourceId = (Get-AzResource `
       -ResourceType 'Microsoft.Automation/automationAccounts' | 
       WHERE {$_.Name -eq $automationAccount}).ResourceId
    
  4. 다음 PowerShell 명령을 실행하여 Log Analytics 작업 영역의 리소스 ID를 가져옵니다.

     # Find the ResourceId for the Log Analytics workspace
     $WorkspaceResourceId = (Get-AzResource `
         -ResourceType 'Microsoft.OperationalInsights/workspaces' | 
         WHERE {$_.Name -eq $law}).ResourceId
    
  5. Automation 계정에서 DSC 노드 상태 로그 데이터를 Azure Monitor 로그로 전달하도록 진단 설정을 구성하려면 다음 PowerShell cmdlet은 해당 대상을 사용하여 진단 설정을 만듭니다.

     Set-AzDiagnosticSetting `
         -ResourceId $AutomationResourceId `
         -WorkspaceId $WorkspaceResourceId `
         -Enabled $true `
         -Category 'DscNodeStatus'
    

    Automation State Configuration에서 Azure Monitor 로그 데이터 전달을 중지하려면 다음 PowerShell cmdlet을 실행합니다.

     Set-AzDiagnosticSetting `
         -ResourceId $AutomationResourceId `
         -WorkspaceId $WorkspaceResourceId `
         -Enabled $false `
         -Category 'DscNodeStatus'
    

상태 구성 로그 보기

Azure Monitor 로그에서 검색하여 DSC 작업에 대한 State Configuration 로그를 검색할 수 있습니다. Automation State Configuration 데이터에 대한 Azure Monitor 로그와의 통합을 설정한 후 Azure Portal에서 Automation 계정으로 이동합니다. 그런 다음, 모니터링에서 로그를 선택합니다.

로그

쿼리 대화 상자를 닫습니다. Automation 계정 리소스로 범위가 지정된 쿼리 영역으로 로그 검색 창이 열립니다. DSC 작업에 대한 레코드는 AzureDiagnostics 테이블에 저장됩니다. 호환되지 않는 노드를 찾으려면 다음 쿼리를 입력합니다.

AzureDiagnostics
| where Category == "DscNodeStatus"
| where OperationName contains "DSCNodeStatusData"
| where ResultType != "Compliant"

필터링 세부 정보:

  • DscNodeStatusData를 필터링하여 각 State Configuration 노드에 대한 작업을 반환합니다.
  • DscResourceStatusData를 필터링하여 해당 리소스에 적용된 노드 구성에서 호출된 각 DSC 리소스에 대한 작업을 반환합니다.
  • DscResourceStatusData를 필터링하여 실패한 모든 DSC 리소스에 대한 오류 정보를 반환합니다.

데이터를 찾기 위한 로그 쿼리를 구성하는 방법에 대한 자세한 내용은 Azure Monitor의 로그 쿼리 개요를 참조하세요.

상태 구성 준수 확인이 실패할 경우 이메일 보내기

  1. 이전에 만든 쿼리로 돌아갑니다.

  2. '+ 새 경고 규칙' 단추를 눌러 경고 생성 흐름을 시작합니다.

  3. 아래 쿼리에서 NODENAME을 관리형 노드의 실제 이름으로 바꾼 다음, 수정된 쿼리를 검색 쿼리 텍스트 상자에 붙여넣습니다.

    AzureDiagnostics
    | where Category == "DscNodeStatus"
    | where NodeName_s == "NODENAME"
    | where OperationName == "DscNodeStatusData"
    | where ResultType == "Failed"
    

    둘 이상의 Automation 계정 또는 구독에서 작업 영역으로의 로그를 설정한 경우 구독 또는 Automation 계정별로 경고를 그룹화할 수 있습니다. DscNodeStatusData의 로그 검색 결과에 있는 Resource 속성에서 Automation 계정 이름을 파생합니다.

  4. 나머지 단계를 완료하려면 Azure Monitor를 사용하여 메트릭 경고 만들기, 보기 및 관리를 검토합니다.

모든 노드에서 실패한 DSC 리소스 찾기

Azure Monitor 로그를 사용할 때의 한 가지 이점은 노드에서 실패한 검사를 검색할 수 있다는 것입니다. 실패한 DSC 리소스의 모든 인스턴스를 찾으려면 다음 쿼리를 사용합니다.

AzureDiagnostics 
| where Category == "DscNodeStatus"
| where OperationName == "DscResourceStatusData"
| where ResultType == "Failed"

DSC 노드 상태 기록 보기

시간별 DSC 노드 상태 기록을 시각화하려면 다음 쿼리를 사용할 수 있습니다.

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" 
| where Category == "DscNodeStatus"
| where ResultType != "started"
| summarize count() by ResultType

이 쿼리는 시간별 노드 상태 차트를 표시합니다.

Azure Monitor 로그 레코드

Azure Automation 진단은 Azure Monitor 로그에 두 가지 범주의 레코드를 만듭니다.

  • 노드 상태 데이터(DscNodeStatusData)
  • 리소스 상태 데이터(DscResourceStatusData)

DscNodeStatusData

속성 설명
TimeGenerated 준수 확인이 실행된 날짜 및 시간입니다.
OperationName DscNodeStatusData;
ResultType 노드가 준수인지 여부를 나타내는 값입니다.
NodeName_s 관리되는 노드의 이름입니다.
NodeComplianceStatus_s 노드가 준수인지 여부를 지정하는 상태 값입니다.
DscReportStatus 준수 확인이 성공적으로 실행되었는지 여부를 나타내는 상태 값입니다.
ConfigurationMode 구성을 노드에 적용하는 데 사용되는 모드입니다. 가능한 값은 다음과 같습니다.
  • ApplyOnly: DSC는 구성을 적용하며, 새 구성이 대상 노드에 푸시되지 않거나 서버에서 새 구성을 가져올 때 아무 작업도 수행하지 않습니다. 새 구성의 애플리케이션이 초기에 적용된 후 DSC는 이전에 구성된 상태에서 달라졌는지 여부를 확인하지 않습니다. DSC는 ApplyOnly 값이 적용되기 전에 성공할 때까지 구성을 적용하려고 합니다.
  • ApplyAndMonitor: 기본값입니다. LCM는 새 구성을 적용합니다. 새 구성의 애플리케이션이 초기에 적용된 후 대상 노드가 원하는 상태에서 다른 상태로 바뀌면 DSC는 불일치 상황을 로그에 보고합니다. DSC는 ApplyAndMonitor 값이 적용되기 전에 성공할 때까지 구성을 적용하려고 합니다.
  • ApplyAndAutoCorrect: DSC에서 모든 새 구성을 적용합니다. 새 구성의 애플리케이션이 초기에 적용된 후 대상 노드가 원하는 상태에서 다른 상태로 바뀌면 DSC는 불일치 상황을 로그에 보고하고 현재 구성을 다시 적용합니다.
HostName_s 관리되는 노드의 이름입니다.
IPAddress 관리되는 노드의 IPv4 주소입니다.
범주 DscNodeStatus;
리소스 Azure Automation 계정의 이름입니다.
Tenant_g 호출자에 대한 테넌트를 식별하는 GUID입니다.
NodeId_g 관리되는 노드를 식별하는 GUID입니다.
DscReportId_g 보고서를 식별하는 GUID입니다.
LastSeenTime_t 보고서를 마지막으로 본 날짜 및 시간입니다.
ReportStartTime_t 보고서가 시작된 날짜 및 시간입니다.
ReportEndTime_t 보고서가 완료된 날짜 및 시간입니다.
NumberOfResources_d 노드에 적용된 구성에서 호출된 DSC 리소스의 수입니다.
SourceSystem Azure Monitor 로그가 데이터를 수집한 방법을 식별하는 원본 시스템입니다. Azure 진단의 경우 항상 Azure입니다.
ResourceId Azure Automation 계정의 리소스 식별자입니다.
ResultDescription 이 작업에 대한 리소스 설명입니다.
SubscriptionId Automation 계정에 대한 Azure 구독 ID(GUID)입니다.
ResourceGroup Automation 계정에 대한 리소스 그룹의 이름입니다.
ResourceProvider MICROSOFT.AUTOMATION.
ResourceType AUTOMATIONACCOUNTS.
CorrelationId 준수 보고서의 상관 관계 식별자인 GUID입니다.

DscResourceStatusData

속성 설명
TimeGenerated 준수 확인이 실행된 날짜 및 시간입니다.
OperationName DscResourceStatusData;
ResultType 리소스가 규정을 준수하는지 여부입니다.
NodeName_s 관리되는 노드의 이름입니다.
범주 DscNodeStatus.
리소스 Azure Automation 계정의 이름입니다.
Tenant_g 호출자에 대한 테넌트를 식별하는 GUID입니다.
NodeId_g 관리되는 노드를 식별하는 GUID입니다.
DscReportId_g 보고서를 식별하는 GUID입니다.
DscResourceId_s DSC 리소스 인스턴스의 이름입니다.
DscResourceName_s DSC 리소스의 이름입니다.
DscResourceStatus_s DSC 리소스가 규정을 준수하는지 여부입니다.
DscModuleName_s DSC 리소스를 포함하는 PowerShell 모듈의 이름입니다.
DscModuleVersion_s DSC 리소스를 포함하는 PowerShell 모듈의 버전입니다.
DscConfigurationName_s 노드에 적용되는 구성의 이름입니다.
ErrorCode_s 리소스가 실패한 경우의 오류 코드입니다.
ErrorMessage_s 리소스가 실패한 경우의 오류 메시지입니다.
DscResourceDuration_d DSC 리소스가 실행된 시간(초)입니다.
SourceSystem Azure Monitor 로그가 데이터를 수집하는 방법입니다. Azure 진단의 경우 항상 Azure입니다.
ResourceId Azure Automation 계정의 식별자입니다.
ResultDescription 이 작업에 대한 설명입니다.
SubscriptionId Automation 계정에 대한 Azure 구독 ID(GUID)입니다.
ResourceGroup Automation 계정에 대한 리소스 그룹의 이름입니다.
ResourceProvider MICROSOFT.AUTOMATION.
ResourceType AUTOMATIONACCOUNTS.
CorrelationId 준수 보고서의 상관 관계 ID인 GUID입니다.

다음 단계