Получение использования локального диска службы приложений Azure программным способом

Службы приложений Azure имеют ограничение на объем используемого локального (временного) хранилища. Но, насколько я понимаю, ограничение распространяется на весь план обслуживания приложений.

Я хочу максимально использовать локальное хранилище, не превышая предела. Но при разделении между несколькими службами приложений в одном плане обслуживания приложений это становится непростой задачей.

Есть ли REST API, который возвращает использование локального диска плана службы приложений? Или даже лучше, каким-то образом получить это из окружающей среды?

Использование можно просмотреть на вкладке «Среда» в Kudu, но я хочу сделать это в коде в работающем веб-приложении.


person Justin Caldicott    schedule 11.07.2020    source источник
comment
Существует ответьте на этот вопрос, который утверждает, что это делает. Я не впечатлен реализацией, но если она сработает, вы можете использовать ее в качестве руководства.   -  person Crowcoder    schedule 11.07.2020
comment
Спасибо за ответ, Джейсон, у меня еще не было возможности его просмотреть. Скоро сделаю.   -  person Justin Caldicott    schedule 14.07.2020
comment
Я не видел никаких переменных среды, которые могли бы помочь. Возможно, мне придется прибегнуть к обнаружению ошибок дискового пространства и сокращению использования локального / временного хранилища (в качестве кеша), когда это произойдет. Я обновлю это, если узнаю больше.   -  person Justin Caldicott    schedule 24.07.2020


Ответы (2)


Вы можете просмотреть список использований с помощью restapi . Что-то не так, когда вы тестируете в официальном документе, вам нужно использовать такие инструменты, как Postman, чтобы проверить это.

e.g https://management.azure.com/subscriptions/{subscriptions}/resourceGroups/{resourceGroups}/providers/Microsoft.Web/sites/{webappname}/usages?api-version=2019-08-01&$filter=name.value eq 'FileSystemStorage'

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

person Jason Pan    schedule 13.07.2020
comment
Спасибо, Джейсон, но я хочу получить количество бесплатного локального / временного хранилища, а не постоянного хранилища, которым, как мне кажется, является это значение. - person Justin Caldicott; 24.07.2020

Вы можете вызвать API GetDiskFreeSpace, чтобы узнать свободное место на диске:

public static decimal GetAvailableSpaceInBytes(string path)
{
    uint sectorsPerCluster;
    uint bytesPerSector;
    uint numberOfFreeClusters;
    uint totalNumberOfClusters;

    GetDiskFreeSpace(path, out sectorsPerCluster, out bytesPerSector, out numberOfFreeClusters, out totalNumberOfClusters);
    long bytes = (long)numberOfFreeClusters * sectorsPerCluster * bytesPerSector;
    
    return bytes;
}

[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern bool GetDiskFreeSpace(
    string lpRootPathName,
    out uint lpSectorsPerCluster,
    out uint lpBytesPerSector,
    out uint lpNumberOfFreeClusters,
    out uint lpTotalNumberOfClusters);

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

Это интересно знать только для доступных для записи папок для данного веб-приложения службы приложений Azure.

person Joaquín Vano    schedule 29.07.2020