共用方式為


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

注意

Azure 自動化 狀態設定 將於 2027 年 9 月 30 日淘汰,請依該日期轉換至 Azure 機器組態。 如需詳細資訊,請參閱 部落格文章 公告。 Azure Machine Configuration 服務結合 DSC 延伸模組、Azure 自動化狀態設定,以及客戶意見反應最常要求的功能。 Azure Machine Configuration 也包含混合機器支援 (透過已啟用 Arc 的伺服器提供)。

警告

Azure 自動化 DSC for Linux 已於 2023 年 9 月 30 日淘汰。 如需詳細資訊,請參閱公告

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

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

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

注意

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

必要條件

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

設定與 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-Object {$_.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 會使用該目的地來建立診斷設定。

    $setAzDiagnosticSettingSplat = @{
        ResourceId = $AutomationResourceId
        WorkspaceId = $WorkspaceResourceId
        Enabled = $true
        Category = 'DscNodeStatus'
    }
    Set-AzDiagnosticSetting @setAzDiagnosticSettingSplat
    

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

    $setAzDiagnosticSettingSplat = @{
        ResourceId = $AutomationResourceId
        WorkspaceId = $WorkspaceResourceId
        Enabled = $false
        Category = 'DscNodeStatus'
    }
    Set-AzDiagnosticSetting @setAzDiagnosticSettingSplat
    

檢視 State Configuration 記錄

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

記錄

關閉 [查詢] 對話方塊。 [記錄搜尋] 窗格隨即開啟,其中有一個查詢區域以您的自動化帳戶資源為範圍。 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 的優點之一,是您可以在節點之間搜尋失敗檢查。 若要尋找所有失敗實例,請使用下列查詢:

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:D SC 會套用設定,而且不會進一步執行任何動作。 初始套用新的設定之後,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 合規性報告的相互關聯標識碼。

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 合規性報告的相互關聯標識碼。

下一步