整合 Azure 自動化狀態設定與 Azure 監視器記錄

注意

啟用自動化狀態設定之前,希望您知道較新版的 DSC 現在已正式推出,由 Azure 原則的來賓設定功能所管理。 來賓設定服務結合 DSC 延伸模組、Azure 自動化狀態設定,以及客戶意見反應最常要求的功能。 來賓設定也包含透過已啟用 Arc 的伺服器的混合式電腦支援。

「Azure 自動化狀態設定」會將節點狀態資料保留 30 天。 如果想要讓節點狀態資料保留更長的時間,您可以將此資料傳送至 Azure 監視器記錄。 節點以及節點組態中個別 DSC 資源的合規性狀態會顯示在 Azure 入口網站中或使用 PowerShell 顯示。

Azure 監視器記錄讓您在「自動化狀態設定」資料上有更高的操作可見性,有利於更快處理事件。 Azure 監視器記錄可讓您:

  • 取得受控節點與個別資源的合規性資訊。
  • 根據合規性狀態觸發電子郵件或警示。
  • 撰寫受控節點之間的進階查詢。
  • 使自動化帳戶之間的合規性狀態相互關聯。
  • 使用自訂檢視和搜尋查詢,以視覺化方式呈現 Runbook 結果、Runbook 作業狀態,以及其他相關的關鍵指標或計量。

注意

本文最近有所更新,改為使用「Azure 監視器記錄」一詞,而非 Log Analytics。 記錄資料仍儲存在 Log Analytics 工作區中,並仍由相同的 Log Analytics 服務收集和分析。 我們會持續更新術語,以更精確地反映 Azure 監視器記錄的角色。 如需詳細資料,請參閱 Azure 監視器遙測變更

必要條件

若要開始將「自動化狀態設定」報告傳送至 Azure 監視器記錄,您需要:

  • 安裝 PowerShell Az 模組。 確認您擁有最新版本。 如有必要,請執行 Update-Module -Name Az

設定與 Azure 監視器記錄的整合

若要開始將資料從「Azure 自動化狀態設定」匯入 Azure 監視器記錄中,請完成下列步驟。 如需了解使用入口網站的步驟,請參閱將 Azure 自動化作業資料轉送至 Azure 監視器記錄

  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 提供適當的值,其中包含自動化帳戶的實際名稱,以及變數 workspaceName,其中包含 Log Analytics 工作區的實際名稱。 然後,執行指令碼。

    $automationAccount = "automationAccount"
    $law = "workspaceName"
    
  3. 執行下列 PowerShell 命令,以取得自動化帳戶的資源識別碼。

    # Find the ResourceId for the Automation account
    $AutomationResourceId = (Get-AzResource `
       -ResourceType 'Microsoft.Automation/automationAccounts' | 
       WHERE {$_.Name -eq $automationAccount}).ResourceId
    
  4. 執行下列 PowerShell 命令,以取得 Log Analytics 工作區的資源識別碼。

     # Find the ResourceId for the Log Analytics workspace
     $WorkspaceResourceId = (Get-AzResource `
         -ResourceType 'Microsoft.OperationalInsights/workspaces' | 
         WHERE {$_.Name -eq $law}).ResourceId
    
  5. 為在自動化帳戶上進行診斷設定,以將 DSC 節點狀態記錄資料轉送至 Azure 監視器記錄,下列 PowerShell Cmdlet 會使用該目的地來建立診斷設定。

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

    當您想要停止將記錄資料從「自動化狀態設定」轉送至 Azure 監視器記錄時,請執行下列 PowerShell Cmdlet。

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

檢視 State Configuration 記錄

您可以在 Azure 監視器記錄中搜尋,從「狀態設定」記錄中尋找 DSC 作業。 針對自動化狀態設定資料設定與 Azure 監視器記錄整合之後,請瀏覽至 Azure 入口網站中的自動化帳戶。 然後在 [監視] 底下,選取 [記錄]

Logs

關閉 [查詢] 對話方塊。 [記錄搜尋] 窗格隨即開啟,其中有一個查詢區域以您的自動化帳戶資源為範圍。 DSC 作業的記錄儲存在 AzureDiagnostics 資料表中。 若要尋找不符合規範的節點,請輸入下列查詢。

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

篩選詳細資料:

  • DscNodeStatusData 篩選,以傳回每個狀態設定節點的作業。
  • DscResourceStatusData 篩選,針對套用至該資源的節點設定中呼叫的每個 DSC 資源,傳回其作業。
  • DscResourceStatusData 篩選,針對任何失敗的 DSC 資源,傳回錯誤資訊。

若要深入了解如何建構記錄查詢來尋找資料,請參閱 Azure 監視器中的記錄查詢概觀

State Configuration 合規性檢查失敗時傳送電子郵件

  1. 返回稍早建立的查詢。

  2. 按 [+ 新增警示規則] 按鈕,以啟動警示建立流程。

  3. 在下列查詢中,將 NODENAME 取代為受控節點的實際名稱,然後在 [搜尋查詢] 文字方塊中,貼上修訂的查詢:

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

    如果您已將來自多個自動化帳戶或訂用帳戶的記錄設定到您的工作區,就能依訂用帳戶或自動化帳戶來將警示分組。 在 DscNodeStatusData 的記錄搜尋結果中,請從 Resource 屬性衍生出自動化帳戶名稱。

  4. 檢閱使用 Azure 監視器建立、檢視及管理計量警示,以完成其餘步驟。

在所有節點間尋找失敗的 DSC 資源

使用 Log Analytics 的優點之一,是您可以在節點之間搜尋失敗檢查。 若要尋找所有失敗的 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 監視器記錄中的記錄

Azure 自動化診斷會在 Azure 監視器記錄中建立兩種類別的記錄:

  • 節點狀態資料 (DscNodeStatusData)
  • 資源狀態名稱 (DscResourceStatusData)

DscNodeStatusData

屬性 說明
TimeGenerated 執行合規性檢查的日期和時間。
OperationName DscNodeStatusData.
ResultType 此值指出節點是否符合規範。
NodeName_s 受控節點名稱。
NodeComplianceStatus_s 狀態值,指出節點是否符合規範。
DscReportStatus 狀態值,指出是否已成功執行合規性檢查。
ConfigurationMode 將設定套用至節點時採用的模式。 可能的值包括:
  • ApplyOnly:DSC 會套用設定但不執行任何進一步的動作,除非有新的設定發送到目標節點,或從伺服器提取新的設定時。 初始套用新的設定之後,DSC 不會檢查先前設定的狀態是否漂移。 在 ApplyOnly 值生效之前,DSC 會一直嘗試套用設定,直到成功為止。
  • ApplyAndMonitor︰這是預設值。 LCM 會套用任何新的設定。 初始套用新設定之後,如果目標節點從所需狀態漂移,DSC 會在記錄中報告差異。 在 ApplyAndMonitor 值生效之前,DSC 會一直嘗試套用設定,直到成功為止。
  • ApplyAndAutoCorrect:DSC 會套用任何新設定。 初始套用新設定之後,如果目標節點從所需狀態漂移,DSC 會在記錄中報告差異,然後重新套用目前的設定。
HostName_s 受控節點名稱。
IPAddress 受控節點的 IPv4 位址。
類別 DscNodeStatus.
資源 Azure 自動化帳戶的名稱。
Tenant_g GUID,用於識別呼叫者的租用戶。
NodeId_g 識別受控節點的 GUID。
DscReportId_g 識別報表的 GUID。
LastSeenTime_t 上一次檢視報表的日期和時間。
ReportStartTime_t 報表開始的日期和時間。
ReportEndTime_t 報表完成的日期和時間。
NumberOfResources_d 在節點套用的設定中呼叫的 DSC 資源數目。
SourceSystem 來源系統,識別 Azure 監視器記錄如何收集資料。 一律為 Azure,代表 Azure 診斷。
ResourceId Azure 自動化帳戶的資源識別碼。
ResultDescription 此作業的資源描述。
SubscriptionId 自動化帳戶的 Azure 訂用帳戶識別碼 (GUID)。
ResourceGroup 自動化帳戶的資源群組名稱。
ResourceProvider MICROSOFT.AUTOMATION。
ResourceType AUTOMATIONACCOUNTS。
CorrelationId GUID,代表合規性報告的相互關聯識別碼。

DscResourceStatusData

屬性 說明
TimeGenerated 執行合規性檢查的日期和時間。
OperationName DscResourceStatusData.
ResultType 資源是否符合規範。
NodeName_s 受控節點名稱。
類別 DscNodeStatus。
資源 Azure 自動化帳戶的名稱。
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 監視器記錄如何收集資料。 一律為 Azure,代表 Azure 診斷。
ResourceId Azure 自動化帳戶的識別碼。
ResultDescription 此作業的描述。
SubscriptionId 自動化帳戶的 Azure 訂用帳戶識別碼 (GUID)。
ResourceGroup 自動化帳戶的資源群組名稱。
ResourceProvider MICROSOFT.AUTOMATION。
ResourceType AUTOMATIONACCOUNTS。
CorrelationId GUID,代表合規性報告的相互關聯識別碼。

下一步