您可以使用事件、計量和記錄來監視執行的 Azure Blob 記憶體生命週期管理原則。 您可以藉由訂閱事件來判斷生命週期管理何時完成。 您可以使用事件屬性來識別問題,然後使用計量和記錄來診斷這些問題。
執行完成時接收通知
若要在生命週期管理執行完成時收到通知,請訂閱LifecyclePolicyCompleted事件。 執行生命週期管理原則所定義的動作時,會產生此事件。 原則定義中包含的每個動作都會顯示摘要區段。 下列 json 顯示原則的範例 LifecyclePolicyCompleted 事件。 針對 delete、tierToCool、tierToCold 和 tierToArchive 動作會出現摘要區段。 下列 JSON 顯示事件通知的範例。
{
"topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/contosoresourcegroup/providers/Microsoft.Storage/storageAccounts/contosostorageaccount",
"subject": "BlobDataManagement/LifeCycleManagement/SummaryReport",
"eventType": "Microsoft.Storage.LifecyclePolicyCompleted",
"eventTime": "2022-05-26T00:00:40.1880331",
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"data": {
"scheduleTime": "2022/05/24 22:57:29.3260160",
"policyRunSummary": {
"completionStatus": "Completed/CompletedWithError/Incomplete"
},
"deleteSummary": {
"totalObjectsCount": 5,
"successCount": 3,
"errorList": ["testFile4.txt", "testFile5.txt"]
},
"tierToCoolSummary": {
"totalObjectsCount": 0,
"successCount": 0,
"errorList": ""
},
"tierToColdSummary": {
"totalObjectsCount": 0,
"successCount": 0,
"errorList": ""
},
"tierToArchiveSummary": {
"totalObjectsCount": 0,
"successCount": 0,
"errorList": ""
}
},
"dataVersion": "1",
"metadataVersion": "1"
}
若要深入瞭解訂閱事件的不同方式,請參閱 Azure 事件方格中的事件處理程式。
使用計量和記錄調查錯誤
上一節的事件回應範例顯示生命週期管理原則嘗試刪除五個物件,但只成功刪除其中三個物件。 在該過程中,testFile4.txt 和 testFile5.txt 檔案未能成功刪除。 若要診斷某些物件未成功處理的原因,您可以使用 Azure 監視器中的計量總管和查詢資源記錄。
指標
若要確切判斷作業失敗 的時機 ,請使用計量瀏覽器。 您可以查看針對帳戶套用的所有交易,這些交易發生在scheduleTime到eventTime的時間範圍內,這些值顯示在LifecyclePolicyCompleted屬性中。
使用下列計量篩選,將交易縮小為原則所執行的交易:
| 篩選器 | 操作員 | 價值觀 |
|---|---|---|
| 交易類型 | 平等 | system |
| API 名稱 | 平等 | DeleteBlob |
| 回應類型 | 不等於 | Success |
下圖顯示查詢和查詢結果的範例。 出現在查詢結果中的折線圖會顯示這些作業失敗的時間。
日誌
若要了解原則未成功處理物件的原因,您可以查看資源記錄。 將記錄縮小到失敗的時間範圍。 然後,查看 UserAgentHeader 欄位設定為 ObjectLifeCycleScanner 或 OLCMScanner 的項目。 如果您將診斷設定為將記錄傳送至 Azure 監視器 Log Analytics 工作區,您可以使用 Kusto 查詢來找出這些記錄項目。 若要深入瞭解如何設定診斷設定,請參閱 監視 Blob 儲存體。
下列範例查詢會尋找由生命週期管理原則觸發的失敗刪除作業的日誌記錄。
StorageBlobLogs
| where OperationName contains "DeleteBlob" and UserAgentHeader contains "ObjectLifeCycleScanner"
| project TimeGenerated, StatusCode, StatusText
StatusCode 和 StatusText 指出造成失敗的原因。 下圖顯示該查詢的輸出。 這兩個記錄項目都會顯示 LeaseIdMissing 的 StatusText 值。 這表示這兩個物件都有一個需中斷或釋放的租用,才能使操作成功。