2017-04-06 24 views
1

Azure WebJob SDK使用AzureWebJobsStorageAzureWebJobsDashboard應用程序設置中爲其日誌記錄和儀表板定義的存儲連接字符串。WebJobs SDK在AzureWebJobsDashboard連接中創建的blob清理機制是什麼?

WebJob SDK創建在AzureWebJobsStorage以下團塊容器:

  • azure-webjobs-hosts

WebJob SDK在AzureWebJobsDashboard

  • azure-jobs-host-output
  • 創建以下團塊容器3210

WebJob運行時會創建上述Blob容器中的許多Blob。如果沒有清理機制,容器可能膨脹或飽和。

上述blob容器的清理機制是什麼?

更新

下面的答案是一個解決辦法。此時,沒有內置的機制來清理WebJobs日誌。作業長期運行時,日誌堆積得相當大。開發人員必須自行創建清理機制。 Azure函數是實現這種清理過程的好方法。下面的答案提供了一個例子。

回答

1

WebJobs SDK在AzureWebJobsDashboard連接中創建的blob的清理機制是什麼?

我還沒有找到辦法做到這一點。 GitHub上有一個與此主題相關的未解決的問題,但尚未關閉。

No way to set webjob logging retention policy

在GitHub上一個類似的問題,我們發現,天青WebJob SDK已經更改保存日誌到Azure Table中存儲的多表的方式。我們可以很容易地每月刪除表格。對於在Azure Blob存儲中寫入的日誌,至今尚未按月進行分組。

enter image description here

WebJobs.Logging needs to support log purge/retention policies

要刪除WebJob登錄上了年紀,我建議你創建一個時間觸發WebJob刪除您想要的日誌。

是否有任何AzureFunction代碼示例顯示如何執行blob清理?

以下代碼供您參考。

// Parse the connection string and return a reference to the storage account. 
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageConnectionString); 

// Create the table client. 
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 

// Retrieve a reference to a container. 
var container = blobClient.GetContainerReference("azure-webjobs-hosts"); 
// Query out all the blobs which created after 30 days 
var blobs = container.GetDirectoryReference("output-logs").ListBlobs().OfType<CloudBlob>() 
    .Where(b => b.Properties.LastModified < new DateTimeOffset(DateTime.Now.AddDays(-30))); 
// Delete these blobs 
foreach (var item in blobs) 
{ 
    item.DeleteIfExists(); 
} 
+0

喜奧馬爾,感謝你的幫助。是否有任何AzureFunction代碼示例顯示如何執行blob清理? –

+0

我根據您的評論更新了我的回覆。 – Amor

相關問題