将 Azure Automation State Configuration 与 Azure Monitor 日志集成

注意

Azure 自动化 State Configuration 将于 2027 年 9 月 30 日停用,请在该日期之前转换到 Azure 计算机配置。 有关详细信息,请参阅博客文章公告。 Azure Machine Configuration 服务结合了 DSC 扩展、Azure Automation State Configuration 以及客户反馈中最常请求的功能。 Azure Machine Configuration 还包括通过已启用 Arc 的服务器提供的混合计算机支持。

Azure Automation State Configuration 将节点状态数据保留 30 天。 如果希望将此数据保留更长一段时间,可以将节点状态数据发送到 Azure Monitor 日志。 节点和节点配置中的单个 DSC 资源的符合性状态可以通过 Azure 门户或 PowerShell 查看。

Azure Monitor 日志可以更直观地显示 Automation State Configuration 数据的运行情况,并且有助于更快地解决事件。 使用 Azure Monitor 日志,可以执行以下操作:

  • 获取托管节点和单个资源的符合性信息。
  • 基于符合性状态触发电子邮件或警报。
  • 跨托管节点编写高级查询。
  • 跨自动化帐户关联符合性状态。
  • 使用自定义视图和搜索查询直观地显示 Runbook 结果、Runbook 作业状态以及其他相关的关键指标。

注意

本文最近已更新,从使用术语“Log Analytics”改为使用术语“Azure Monitor 日志”。 日志数据仍然存储在 Log Analytics 工作区中,并仍然由同一 Log Analytics 服务收集并分析。 我们正在更新术语,以便更好地反映 Azure Monitor 中的日志的角色。 有关详细信息,请参阅 Azure Monitor 术语更改

先决条件

若要开始将 Automation State Configuration 报告发送到 Azure Monitor 日志,需要准备:

  • Az PowerShell module 模块。 确保已安装了最新版本。 如有必要,请运行 Update-Module -Name Az
  • 一个 Azure 自动化帐户。 有关详细信息,请参阅 [Azure 自动化简介][15]。
  • Log Analytics 工作区。 有关详细信息,请参阅 Azure Monitor 日志概述
  • 至少一个 Azure Automation State Configuration 节点。 有关详细信息,请参阅 [登记由 Azure Automation State Configuration 管理的计算机][13]。
  • [xDscDiagnostics][18] 模块版本2.7.0.0 或更高版本。 有关安装步骤,请参阅 Azure Automation Desired State Configuration 故障排查

设置与 Azure Monitor 日志的集成

若要开始将数据从 Azure Automation State Configuration 导入到 Azure Monitor 日志,请完成以下步骤。 有关使用门户的步骤,请参阅将 Azure 自动化作业数据转发到 Azure Monitor 日志

  1. 在计算机中,使用 PowerShell [Connect-AzAccount -Environment AzureChinaCloud][08] cmdlet 登录 Azure 订阅,然后按屏幕说明操作。

    # Sign in to your Azure subscription
    $sub = Get-AzSubscription -ErrorAction SilentlyContinue
    if (-not($sub)) {
        Connect-AzAccount -Environment AzureChinaCloud
    }
    # If you have multiple subscriptions, set the one to use
    # Select-AzSubscription -SubscriptionId "<SUBSCRIPTIONID>"
    
  2. 使用自动化帐户的实际名称为 automationAccount 变量提供相应的值,并使用 Log Analytics 工作区的实际名称为 workspaceName 提供相应的值。 然后执行脚本。

    $automationAccount = "automationAccount"
    $law = "workspaceName"
    
  3. 通过运行以下 PowerShell 命令获取自动化帐户的资源 ID。

    # Find the ResourceId for the Automation account
    $AutomationResourceId = (Get-AzResource -ResourceType 'Microsoft.Automation/automationAccounts' |
       Where-Object {$_.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. 为了在自动化帐户上配置诊断设置以将 DSC 节点状态日志数据转发到 Azure Monitor 日志,以下 PowerShell cmdlet 会使用该目标创建诊断设置。

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

    当要停止将日志数据从 Azure Automation State Configuration 转发到 Azure Monitor 日志时,请运行以下 PowerShell cmdlet。

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

查看 Automation State Configuration 日志

可以通过在 Azure Monitor 日志中进行搜索,以便搜索 DSC 操作的 State Configuration 日志。 为 Automation State Configuration 数据设置与 Azure Monitor 日志的集成后,导航到 [Azure 门户][17] 中的自动化帐户。 然后在“监视”下,选择“日志” 。

![日志][19]

关闭“查询”对话框。 此时将打开“日志搜索”窗格,其中包含一个作用域为自动化帐户资源的查询区域。 DSC 操作的记录存储在 AzureDiagnostics 表中。 若要查找不符合的节点,请键入以下查询。

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

筛选详细信息:

  • 筛选 DscNodeStatusData 可返回每个 State Configuration 节点的操作。
  • 筛选 DscResourceStatusData 可返回在应用于该资源的节点配置中调用的每个 DSC 资源的操作。
  • 筛选 DscResourceStatusData 可返回任何失败的 DSC 资源的错误信息。

若要详细了解如何构建日志查询以查找数据,请参阅 Azure Monitor 中的日志查询概述

State Configuration 符合性检查失败时发送一封电子邮件

  1. 返回到之前创建的查询。

  2. 单击“+ 新建警报规则”按钮启动警报创建流

  3. 在下面的查询中,将 NODENAME 替换为托管节点的实际名称,然后将修订后的查询粘贴到“搜索查询”文本框中

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

    如果为多个自动化帐户或订阅配置日志,则可以按订阅和自动化帐户对警报进行分组。 从 DscNodeStatusData 日志搜索结果中的 Resource 属性派生自动化帐户名称。

  4. 查看如何使用 Azure Monitor 创建、查看和管理指标警报以完成其余步骤。

在所有节点中查找失败的 DSC 资源

使用 Azure Monitor 日志的一个优点是,可以在节点中搜索失败的检查。 若要查找所有故障实例,请使用以下查询:

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 自动化诊断将在 Azure Monitor 日志中创建以下两种类别的记录:

  • 节点状态数据 (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 Monitor 日志如何收集数据的源系统。 对于 Azure 诊断,始终为 Azure
ResourceId Azure 自动化帐户的资源标识符。
ResultDescription 此操作的资源说明。
SubscriptionId 自动化帐户的 Azure 订阅 ID (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 Monitor 日志收集数据的方式。 对于 Azure 诊断,始终为 Azure
ResourceId Azure 自动化帐户的标识符。
ResultDescription 此操作的说明。
SubscriptionId 自动化帐户的 Azure 订阅 ID (GUID)。
ResourceGroup 自动化帐户的资源组的名称。
ResourceProvider MICROSOFT.AUTOMATION。
ResourceType AUTOMATIONACCOUNTS。
CorrelationId 合规性报告的相关 ID。

后续步骤

  • 有关概述,请参阅 [Azure Automation State Configuration 概述][14]。
  • 有关入门信息,请参阅 [Azure Automation State Configuration 入门][12]。
  • 若要了解如何编译 DSC 配置,以便将它们分配给目标节点,请参阅 [在 Azure Automation State Configuration 中编译 DSC 配置][11]。
  • 有关 PowerShell cmdlet 参考,请参阅 [Az.Automation][09]。
  • 有关定价信息,请参阅 [Azure Automation State Configuration 定价][16]。
  • 若要查看在持续部署管道中使用 Azure Automation State Configuration 的示例,请参阅 [使用 Chocolatey 设置持续部署][10]。
  • 若要详细了解如何使用 Azure Monitor 日志构建不同的搜索查询和查看 Automation State Configuration 日志,请参阅 Azure Monitor 中的日志搜索
  • 若要详细了解 Azure Monitor 日志和数据收集源,请参阅“在 Azure Monitor 日志中收集 Azure 存储数据”概述

[08]: https://learn.microsoft.com/powershell/module/Az.Accounts/Connect-AzAccount -Environment AzureChinaCloud [09]: https://learn.microsoft.com/powershell/module/az.automation [10]: automation-dsc-cd-chocolatey.md [11]: automation-dsc-compile.md [12]: automation-dsc-getting-started.md [13]: automation-dsc-onboarding.md [14]: automation-dsc-overview.md [15]: automation-intro.md [16]: https://www.azure.cn/pricing/details/automation/ [17]: https://portal.azure.cn/ [18]: https://www.powershellgallery.com/packages/xDscDiagnostics/2.7.0.0 [19]: media/automation-dsc-diagnostics/automation-dsc-logs-toc-item.png