Каков механизм очистки больших двоичных объектов, которые SDK веб-заданий создает в соединении AzureWebJobsDashboard?

Пакет SDK для веб-заданий Azure использует строку подключения к хранилищу, определенную в настройках приложения AzureWebJobsStorage и AzureWebJobsDashboard, для ведения журнала и панели мониторинга.

WebJob SDK создает следующий контейнер больших двоичных объектов в AzureWebJobsStorage:

  • azure-webjobs-hosts

WebJob SDK создает следующие контейнеры больших двоичных объектов в AzureWebJobsDashboard

  • azure-jobs-host-output
  • azure-webjobs-hosts

Многие большие двоичные объекты создаются в указанных выше контейнерах больших двоичных объектов во время выполнения веб-задания. Емкости могут быть раздутыми или пропитанными, если нет механизма очистки.

Каков механизм очистки для указанных выше контейнеров больших двоичных объектов?

Обновить

Ответ ниже - это обходной путь. На данный момент нет встроенного механизма для очистки журналов веб-заданий. Журналы могут накапливаться довольно большими, поскольку задание выполняется в долгосрочной перспективе. Разработчики должны создать механизм очистки самостоятельно. Функции Azure - хороший способ реализовать такой процесс очистки. Пример приведен в ответе ниже.


person Allan Xu    schedule 06.04.2017    source источник


Ответы (1)


Каков механизм очистки больших двоичных объектов, которые SDK веб-заданий создает в соединении AzureWebJobsDashboard?

Я не нашел способа сделать это. На GitHub есть открытая проблема, связанная с этой темой, но не закрытая.

Невозможно настроить политику хранения журнала веб-заданий

В аналогичной проблеме на GitHub мы обнаружили, что пакет SDK для веб-заданий Azure изменил способ сохранения журналов в нескольких таблицах хранилища таблиц Azure. Мы легко можем удалить таблицу за месяц. До сих пор журналы, записываемые в хранилище BLOB-объектов Azure, не группировались по месяцам.

введите описание изображения здесь

WebJobs.Logging должен поддерживать политики очистки / хранения журналов

Чтобы удалить старый журнал веб-заданий, я предлагаю вам создать запускаемое по времени веб-задание, чтобы удалить нужные журналы.

Есть ли какой-нибудь пример кода AzureFunction, показывающий, как выполнить очистку больших двоичных объектов?

Код ниже для справки.

// 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();
}
person Amor    schedule 07.04.2017
comment
Привет, Амор, спасибо за помощь. Есть ли какой-нибудь пример кода AzureFunction, показывающий, как выполнить очистку больших двоичных объектов? - person Allan Xu; 07.04.2017
comment
Реализовано решение на основе этого sameeraman.wordpress.com/2017/08/25/ - person GETah; 08.09.2018