Журналы веб-приложений Azure в контейнере учетной записи хранения

У моей команды есть веб-приложение .NET (4.7), работающее в Azure . Прямо сейчас в сети создаются три каталога на диске D - cache, temp и root . Здесь сбрасываются файлы журналов. Меня беспокоит, что эти файлы журналов займут место и приведут к сбою приложения.

Можно ли хранить эти приложения в контейнере больших двоичных объектов, а не в веб-приложении ? Я создал учетную запись хранения с тремя контейнерами (кеш, временный, корневой), использовал Storage Explorer для создания подписей общего доступа (SAS) на каждого контейнер , а затем вставил URL-адрес, сгенерированный для SAS, в настройки приложения для веб-приложения . Я перезапустил приложение , файлы не выгружаются в контейнер.

Что-то мне не хватает, чтобы это работало? Я не разработчик, поэтому не уверен, нужно ли что-то указывать в коде, чтобы это работало. Я заметил, что в web.config было указано местоположение D: \ home ......, поэтому я предположил, что добавление местоположения контейнера будет работать, но я думаю, что нет. Будем очень признательны за любые мысли или предложения.

1
задан 20 March 2019 в 21:48
1 ответ

Попробуйте сделать это с помощью PowerShell, как описано в здесь:

Конфигурация выполняется в 6 шагах.

  1. Мы получаем учетную запись хранилища, в которой хотим хранить приложение. Журналы.

$sa = Get-AzureRmStorageAccount -ResourceGroupName "loremipsumresourcegroup" -Название "loremipsumstore"

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

New-AzureStorageContainer -Контекст $sa.Context -Имя "webapp-logs" -ErrorAction Ignore

  1. Далее генерируем SAS-токен для контейнера. Мы используем тот же настройки, которые Microsoft использует при создании ссылки с помощью Azure Портал.

$sasToken = New-AzureStorageContainerSASToken - Контекст $sa.Context -Имя "webapp-logs" -FullUri -разрешительный взлом -СтартВремя (Получить дату). Дата. -ExpiryTime (Get-Date).Date.AddYears(200)

  1. Мы хотим обновить настройки AppSettings по мере хранения конфигурации. Там. Но когда вы обновляете AppSettings, любой параметр, которого нет в наличии. в обновлении будет удалено. Поэтому сначала мы хотим получить все существующие настройки AppSettings.

$webApp = Get-AzureRmWebApp -ResourceGroupName "loremipsumresourcegroup" -Имя "LoremIpsumWebApp"

  1. Странно, что команда Set-AzureRmWebApp не принимает команду SiteConfig.AppSettings мы получили от команды Get-AzureRmWebApp. Мы нужно создать Хэш-стол для этого. Чтобы убедиться, что Приложение Настройки сохраняют тот же порядок, мы определяем Хэш-таблицу как Заказанную.

$appSettings = [ordered] @{} $webapp.SiteConfig.AppSettings | % { $appSettings[$.Name] = $.Value]. $appSettings.DIAGNOSTICS_AZUREBLOBCONTAINERSASURL = [string] $sasToken

  1. Теперь мы можем обновить службу приложений с помощью Set-AzureRmWebApp команда.

Set-AzureRmWebApp -ResourceGroupName "loremipsumresourcegroup". -Имя "LoremIpsumWebApp". -AppSettings $appSettings

Все кредиты на Michaël Hompus

0
ответ дан 4 December 2019 в 03:11

Теги

Похожие вопросы