將 Azure 自動化診斷記錄轉送至 Azure 監視器

Azure 自動化可將 Runbook 作業狀態和作業串流傳送至您的 Log Analytics 工作區。 此程序不涉及工作區連結,並且完全獨立,且能可讓您執行簡單的調查。 工作記錄和作業串流會顯示於 Azure 入口網站中,或是針對個別工作使用 PowerShell。 使用 Azure 監視器記錄來自動化帳戶,您便可以:

  • 取得自動化工作狀態的深入解析。
  • 根據您的 Runbook 作業狀態 (例如失敗或已暫止) 觸發電子郵件或警示。
  • 撰寫跨多個作業串流的進階查詢。
  • 使自動化帳戶之間的作業相互關聯。
  • 使用自訂檢視和搜尋查詢,以透過 Azure 儀表板視覺化方式呈現 Runbook 結果、Runbook 工作狀態,以及其他相關的關鍵指標或計量。
  • 取得與自動化帳戶、Runbook 和其他資產建立、修改和刪除作業相關的稽核記錄。

使用 Azure 監視器記錄後,您便可以合併相同工作區中不同資源的記錄,您可以在其中使用查詢來分析這些記錄,以快速擷取、合併和分析收集到的資料。 您可以在 Azure 入口網站中使用 Log Analytics 來建立和測試查詢,然後使用這些工具直接分析資料,或儲存查詢以便搭配視覺效果警示規則使用。

Azure 監視器會使用 Azure 資料總管所使用的 Kusto 查詢語言 (KQL) 版本,適用於簡單記錄查詢。 其中也包含彙總、聯結與智慧分析等進階功能。 您可以使用多個課程,快速了解查詢語言。

Azure 自動化診斷設定

您可以使用自動化診斷設定支援來轉送下列平台記錄和計量資料:

資料類型 描述
作業記錄 自動化帳戶中 Runbook 工作的狀態。
作業串流 自動化帳戶中所定義 Runbook 中工作串流的狀態。
DSCNodeStatus DSC 節點的狀態。
AuditEvent 記錄客戶與 Azure 自動化服務資料或服務設定互動的所有資源記錄。
計量 工作總數、更新總計、部署機器執行、更新部署執行總計。

在 Azure 入口網站中設定診斷設定

您可以在 Azure 入口網站中從功能表針對自動化帳戶資源設定診斷設定。

  1. 在自動化帳戶的功能表上,選取 [監視] 下方的 [診斷設定]

    顯示選取診斷設定選項的螢幕快照。

  2. 按一下 [新增診斷設定]

    顯示選取 [新增診斷] 設定的螢幕快照。

  3. 如果還沒有設定名稱,請在 [診斷設定名稱] 中輸入設定名稱。

    您也可以檢視記錄和計量的所有類別。

    顯示所有記錄和計量類別的螢幕快照。

    • 要路由的記錄與計量:針對記錄,請選擇類別群組,或選取您想要傳送至指定目的地的每個資料類別個別核取方塊。 若要將計量儲存至 Azure 監視器記錄中,請選擇 AllMetrics

    • 目的地詳細資料:選取每個目的地的核取方塊。 根據每個方塊的選取項目,選項會讓您新增其他資訊。

      顯示 [目的地詳細數據] 區段中選取項目的螢幕快照。

      • Log Analytics:輸入訂用帳戶與工作區名稱。 如果沒有工作區,您必須建立工作區再繼續

      • 事件中樞:指定下列準則:

        • 訂用帳戶:與事件中樞相同的訂用帳戶。
        • 事件中樞命名空間:如果您還沒有事件中樞,請建立一個。
        • 事件中樞名稱 (選擇性):若不指定名稱,則會為每個記錄類別建立事件中樞。 若要傳送多個類別,請指定名稱以限制建立的事件中樞數目。 如需詳細資料,請參閱 Azure 事件中樞配額與限制
        • 事件中樞原則 (選用) 定義串流機制所擁有權限的原則。 請參閱事件中樞功能
      • 儲存體 - 選擇訂閱、儲存體帳戶與保留原則。 顯示記憶體帳戶的螢幕快照。

      • 合作夥伴整合 - 您必須先將合作夥伴整合安裝到您的訂閱中。 設定選項會因合作夥伴而異。 如需詳細資訊,請參閱 Azure 監視器整合

  4. 按一下 [檔案] 。

幾分鐘之後,新的設定會隨即出現在此資源的設定清單中,並在產生新的事件資料時,將記錄串流至指定的目的地。 在 Log Analytics 工作區中發出事件與其外觀之間,可能會有 15 分鐘的時間差異。

查詢記錄檔

查詢產生的記錄:

  1. 在您的自動化帳戶中,在 [監視] 底下,選取 [記錄]

  2. 在 [所有查詢] 底下,選取 [自動化工作]

    顯示如何瀏覽以選取 [自動化作業] 的螢幕快照。

  3. 選取您要執行的其中一個查詢,然後按一下 [執行]

  4. 若要執行自訂查詢,請關閉 [查詢] 視窗,並將自訂查詢貼到新的查詢視窗中,然後按一下 [執行]

    查詢的輸出會顯示在 [結果] 窗格中。

  5. 按一下 [新增警示規則] 來設定此查詢的 Azure 監視器警示。

    顯示如何查詢記錄的螢幕快照。

Azure 監視器記錄

Azure 自動化診斷會在 Azure 監視器記錄檔中建立下列類型的記錄,並標記為 AzureDiagnostics。 下方區段中的表格是 Azure 自動化產生的記錄範例,以及記錄搜尋結果中所顯示的資料類型。

作業記錄

屬性 說明
TimeGenerated Runbook 作業的執行日期和時間。
RunbookName_s Runbook 的名稱。
Caller_s 起始作業的呼叫者。 可能的值為電子郵件地址或排程作業的系統。
Tenant_g 用來針對呼叫者識別租用戶的 GUID (全域唯一識別碼)。
JobId_g 識別 Runbook 作業的 GUID。
ResultType Runbook 工作的狀態。 可能的值包括:
- 新增
- Created (已建立)
- Started (已啟動)
- Stopped (已停止)
- Suspended (暫止)
- Failed (失敗)
- Completed (已完成)
類別 資料類型的分類。 對自動化來說,該值是 JobLogs。
OperationName 執行的作業類型。 對自動化來說,該值是 Job。
資源 自動化帳戶的名稱
SourceSystem Azure 監視器記錄檔用來收集資料的系統。 針對 Azure 診斷,該值一律為 Azure。
ResultDescription Runbook 工作的結果狀態。 可能的值包括:
- Job is started (工作已啟動)
- Job Failed (工作失敗)
- Job Completed
CorrelationId Runbook 工作的相互關聯 GUID。
ResourceId Runbook 的 Azure 自動化帳戶資源識別碼。
SubscriptionId 自動化帳戶的 Azure 訂用帳戶 GUID。
ResourceGroup 自動化帳戶的資源群組名稱。
ResourceProvider 資源提供者名稱。 該值是 MICROSOFT.AUTOMATION.
ResourceType 資源類型。 此值為 AUTOMATIONACCOUNTS。

作業串流

屬性 說明
TimeGenerated Runbook 工作的執行日期和時間。
RunbookName_s Runbook 的名稱。
Caller_s 起始作業的呼叫者。 可能的值為電子郵件地址或排程作業的系統。
StreamType_s 工作串流的類型。 可能的值包括:
-Progress (進度)
- Output
- 警告
- Error (錯誤)
- Debug (偵錯)
- Verbose
Tenant_g 識別呼叫端租用戶的 GUID。
JobId_g 識別 Runbook 作業的 GUID。
ResultType Runbook 作業的狀態。 可能的值包括:
- In Progress
類別 資料類型的分類。 對自動化來說,該值是 JobStreams。
OperationName 執行的作業類型。 對自動化來說,該值是 Job。
資源 自動化帳戶的名稱。
SourceSystem Azure 監視器記錄檔用來收集資料的系統。 針對 Azure 診斷,該值一律為 Azure。
ResultDescription 來自 Runbook 的輸出串流包含在內的描述。
CorrelationId Runbook 工作的相互關聯 GUID。
ResourceId Runbook 的 Azure 自動化帳戶資源識別碼。
SubscriptionId 自動化帳戶的 Azure 訂用帳戶 GUID。
ResourceGroup 自動化帳戶的資源群組名稱。
ResourceProvider 資源提供者。 該值是 MICROSOFT.AUTOMATION.
ResourceType 資源類型。 此值為 AUTOMATIONACCOUNTS。

注意

請確定認證不會傳送至作業數據流。 服務會在診斷記錄中顯示作業數據流之前移除認證。

稽核事件

屬性 Description
TenantID GUID,用於識別呼叫者的租用戶。
TimeGenerated (UTC) Runbook 工作的執行日期和時間。
類別 AuditEvent
ResourceGroup 自動化帳戶的資源群組名稱。
訂用帳戶識別碼 自動化帳戶的 Azure 訂用帳戶 GUID。
ResourceProvider MICROSOFT.AUTOMATION
資源 自動化帳戶名稱
ResourceType AUTOMATIONACCOUNTS
OperationName 可能的值為「更新」、「建立」、「刪除」。
ResultType Runbook 工作的狀態。 可能的值為:「已完成」。
CorrelationId Runbook 工作的相互關聯 GUID。
ResultDescription Runbook 工作的結果狀態。 可能的值為「更新」、「建立」、「刪除」。
Tenant_g GUID,用於識別呼叫者的租用戶。
SourceSystem Azure 監視器記錄檔用來收集資料的系統。 針對 Azure 診斷,該值一律為 Azure。
clientInfo_IpAddress_s {scrubbed}
clientInfo_PrincipalName_s {scrubbed}
clientInfo_TenantId_g 用戶端的租用戶識別碼。
clientInfo_Issuer_s
clientInfo_ObjectId_g 用戶端的物件識別碼。
clientInfo_AppId_g 用戶端的 AppID。
clientInfo_ClientRequestId_g 用戶端的 RequestID
targetResources_Resource_s 帳戶、工作、認證、連線、變數、Runbook。
類型 AzureDiagnostics
_ResourceId Runbook 的 Azure 自動化帳戶資源識別碼。

檢視 Azure 監視器記錄中的自動化記錄

既然您已經開始將自動化工作串流記錄傳送至 Azure 監視器記錄,讓我們來看看這些記錄在 Azure 監視器記錄中的運用方式。

若要查看記錄,請執行下列查詢:kusto AzureDiagnostics | where ResourceProvider == "MICROSOFT.AUTOMATION"

工作記錄和工作串流的範例查詢

尋找所有已完成但發生錯誤的工作

除了失敗的警示等案例,您還可以尋找 Runbook 作業發生非終止錯誤的時間。 在這些情況下,PowerShell 會產生錯誤串流,但非終止錯誤不會造成您的作業暫止或失敗。

  1. 在 Log Analytics 工作區中,按一下 [記錄]
  2. 在查詢欄位中,輸入:
    AzureDiagnostics | where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobStreams" and StreamType_s == "Error" | summarize AggregatedValue = count () by JobId_g. 
    
  3. 按一下 [搜尋]

檢視工作的工作資料流

當您在針對作業進行偵錯時,也可以深入查看作業串流。 下列查詢會顯示單一作業具有 GUID 2ebd22ea-e05e-4eb9-9d76-d73cbd4356e0 的所有資料流:

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobStreams" and JobId_g == "2ebd22ea-e05e-4eb9-9d76-d73cbd4356e0"
| sort by TimeGenerated asc
| project ResultDescription

檢視歷史工作狀態

最後,您可能會想以視覺化方式呈現一段時間的作業記錄。 您可以使用此查詢來搜尋您的工作在一段時間的狀態。

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobLogs" and ResultType != "started"
| summarize AggregatedValue = count() by ResultType, bin(TimeGenerated, 1h)

Log Analytics 歷程記錄作業狀態圖表

尋找在自動化工作中報告錯誤的記錄。

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" 
| where StreamType_s == "Error" 
| project TimeGenerated, Category, JobId_g, OperationName, RunbookName_s, ResultDescription, _ResourceId 

尋找已完成的 Azure 自動化工作

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobLogs" and ResultType == "Completed" 
| project TimeGenerated, RunbookName_s, ResultType, _ResourceId, JobId_g

尋找失敗、已暫停或已停止的Azure 自動化工作

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobLogs" and (ResultType == "Failed" or ResultType == "Stopped" or ResultType == "Suspended") 
| project TimeGenerated, RunbookName_s, ResultType, _ResourceId, JobId_g 

列出所有成功完成但發生錯誤的 Runbook 和作業

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobStreams" and StreamType_s == "Error" 
| project TimeGenerated, RunbookName_s, StreamType_s, _ResourceId, ResultDescription, JobId_g 

在 Runbook 工作失敗或暫停時傳送電子郵件

下列步驟說明如何在 Azure 監視器中設定電子郵件警示,以在 Runbook 工作發生錯誤時發出通知。

若要建立警示規則,請為應叫用警示的 Runbook 工作記錄建立記錄搜尋,如查詢記錄中所述。 按一下 [+新增警示規則] 來設定警示規則。

  1. 在您的自動化帳戶中,在 [監視] 底下,選取 [記錄]

  2. 在查詢欄位中輸入搜尋條件來為您的警示建立記錄搜尋查詢。

    AzureDiagnostics | where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobLogs" and (ResultType == "Failed" or ResultType == "Suspended")   
    

    您也可以使用下列方式按照 Runbook 名稱來分組:

    AzureDiagnostics | where ResourceProvider == "MICROSOFT.AUTOMATION" and     Category == "JobLogs" and (ResultType == "Failed" or ResultType == "Suspended") | summarize AggregatedValue = count() by RunbookName_s 
    
  3. 若要開啟 [建立警示規則] 畫面,按一下頁面頂端的 [+ 新增警示規則]。 如需設定警示選項的詳細資訊,請參閱 Azure 中的記錄警示

Azure 自動化診斷稽核記錄

您現在也可以將稽核記錄傳送至 Azure 監視器工作區。 這可讓企業監視重要自動化帳戶活動的安全性和合規性。 透過 Azure 診斷設定啟用時,您將能夠收集自動化 Runbook、作業和自動化資產 (例如連線、認證、變數與憑證) 的建立、更新和刪除作業相關遙測資料。 您也可以將稽核記錄條件的警示設定為安全性監視需求的一部分。

活動記錄與稽核記錄之間的差異

活動記錄是 Azure 中的平台登入,可讓您深入了解訂用帳戶等級事件。 自動化帳戶的活動記錄包含何時修改、建立或刪除自動化資源的相關資訊。 不過,記錄不會擷取資源的名稱或識別碼。

自動化帳戶的稽核記錄會擷取資源的名稱和識別碼,例如自動化變數、認證、連線等等,以及針對資源執行的作業類型,而 Azure 自動化會清除一些詳細資料,例如符合 GDPR 合規性的用戶端 IP 資料。

活動記錄會顯示用戶端 IP 等詳細資料,因為活動記錄是平台記錄,可提供 Azure 資源的詳細診斷和稽核資訊。 系統會自動針對 ARM 中發生的活動產生記錄,並推送給活動記錄資源提供者。 由於活動記錄是 Azure 監視的一部分,因此會顯示一些用戶端資料,以提供用戶端活動的深入解析。  

稽核記錄的範例查詢

查詢以檢視自動化資源稽核記錄

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "AuditEvent" 

查詢以監視任何變數更新、建立或刪除作業

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "AuditEvent" and targetResources_Resource_s == "Variable" 

查詢以監視任何 Runbook 作業,例如建立、草稿或更新

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "AuditEvent" and targetResources_Resource_s contains "Runbook" 

查詢以監視任何憑證建立、更新或刪除

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "AuditEvent" and targetResources_Resource_s contains "Certificate" 

查詢以監視任何認證建立、更新或刪除

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "AuditEvent" and targetResources_Resource_s contains "Credential" 

篩選轉換成 JSON 物件的工作狀態輸出

最近,我們已變更自動化記錄資料寫入 Log Analytics 服務中 AzureDiagnostics 資料表的行為,其中不再將 JSON 屬性細分為個別欄位。 如果您將 Runbook 設定為將 JSON 格式輸出資料流中的物件格式化為個別資料行,則必須重新設定查詢,才能將該欄位剖析為 JSON 物件以存取這些屬性。 這是使用剖析 JSON 來存取已知路徑中的特定 JSON 元素所完成。

例如,Runbook 會使用多個欄位,以 JSON 格式將輸出資料流中的 ResultDescription 屬性格式化。 若要搜尋失敗狀態的工作狀態,如名為 Status 的欄位中所指定,請使用此範例查詢來搜尋狀態為 FailedResultDescription

AzureDiagnostics
| where Category == 'JobStreams'
| extend jsonResourceDescription = parse_json(ResultDescription)
| where jsonResourceDescription.Status == 'Failed'

Log Analytics 歷程記錄作業串流 JSON 格式

下一步