Удалить старые данные диагностики Windows Azure из табличного хранилища (счетчики производительности и т. Д.) - PullRequest
0 голосов
/ 05 февраля 2019

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

Все это настраивается в разделе «Параметры диагностики ...» на ресурсе виртуальной машины в портале Azure.Существует агент диагностики Windows Azure, который собирает эти данные на виртуальной машине и сохраняет их в учетной записи хранения (внутри табличного хранилища).

Все эти собранные данные (счетчики производительности, метрики, журналы и т. Д.) Не 'У него нет политики хранения, и , похоже, нет способа настроить его .Так что он просто накапливается в хранилище таблиц учетной записи навсегда.

Вот в чем моя проблема - сейчас в этих таблицах слишком много данных (несколько терабайт в моем случае), и это стоит больших денег простоОставь это.И со временем он будет только расти.

Соответствующие таблицы учетных записей хранения представляют собой такие таблицы:

  • WADMetrics* (таблица показателей диагностики Windows Azure)
  • WADPerformanceCountersTable (таблица счетчиков производительности диагностики Windows Azure)
  • WASWindowsEventLogsTable (таблица журналов событий диагностики Windows Azure)

Есть ли способ как удалить старые данные в этих таблицах, чтобы ничего не сломалось?Или, что еще лучше, есть какой-нибудь способ настроить политику хранения или настроить ее так, чтобы она не накапливалась вечно?

Ответы [ 2 ]

0 голосов
/ 17 июля 2019

Только что столкнулся с этой проблемой, когда я отслеживал, сколько стоит подписка.

Одним из полезных инструментов является Azure Storage Explorer .Вы можете просматривать таблицу, просматривать ее содержимое, использовать кнопку «Статистика таблицы» для подсчета строк таблицы, множественного выбора и удаления строк.

Для одной маленькой виртуальной машины, работающей с 2016 года, я обнаружил, что таблицы WADMetricsКажется, катится каждые 10 дней, но другие нет.Пример таблицы WADMetrics содержал 5724 записи.Таблица WASWindowsEventLogsTable содержит 10 022 записей.Я отменил счет WADPerformanceCountersTable, когда он достиг 5 миллионов записей.Хранить статистику стоит дороже, чем виртуальный жесткий диск виртуальной машины.

В этой статье обобщена полезная информация о командах PowerShell для управления таблицами.К сожалению, облачная оболочка Azure пока не поддерживает команды для работы внутри таблицы, например, Get-AzTableRow (см. этот отчет ).Я предполагаю, что это сработает, если вы настроите последние команды Az PowerShell локально.Затем вы можете выбрать с помощью фильтра и использовать Remove-AzTableRow, чтобы удалить некоторые из строк.В моем случае машина была выведена из эксплуатации, поэтому мне просто нужен был способ удалить множество таблиц без необходимости нажимать на каждую из них на панели инструментов.Вот несколько примеров команд для начала:

$location = "uswest"
$resourceGroup = "myRG"
$storageAccountName = "myData"
$storageAccount = get-AzStorageAccount -ResourceGroupName $resourceGroup -Name $storageAccountName
$ctx = $storageAccount.Context
# List all tables in storage account
Get-AzStorageTable -Context $ctx
# Count the WADMetrics tables
(Get-AzStorageTable -Context $ctx -Name "WADMetrics*").count
# Count the WADMetrics tables with "2018" in their name
(Get-AzStorageTable -Context $ctx -Name "WADMetrics*2018*").count
# Remove all WADMetrics tables with "2018" in their name without confirmation, then re-count 
# Only Get- supports wilcards, so pipe to Remove-AzStorageTable command
Get-AzStorageTable -Context $ctx -Name "WADMetrics*2018*" | Remove-AzStorageTable -Force
(Get-AzStorageTable -Context $ctx -Name "WADMetrics*2018*").count
# Remove the big tables. Confirmation takes a long time, so suppress it.
Remove-AzStorageTable -Context $ctx -Name "WADWindowsEventLogsTable" -Force
Remove-AzStorageTable -Context $ctx -Name "WADPerformanceCountersTable" -Force

# The following do NOT work in Azure Cloud Shell as of 07/16/2019.  See 
# https://github.com/MicrosoftDocs/azure-docs/issues/28608

# Count the rows in WADWindowsEventLogsTable
$tableName = "WADWindowsEventLogsTable"
$cloudTable = (Get-AzStorageTable -Context $ctx -Name $tableName).CloudTable
$cloudTableResults = Get-AzTableRow -table $cloudTable -columnName "RowKey"
$cloudTableResults.count
0 голосов
/ 05 февраля 2019

Есть ли какой-нибудь способ, как удалить старые данные в этих таблицах, чтобы они ничего не сломали?

Вам нужно будет сделать это вручную.Это сработает так, что вы сначала запросите данные, которые необходимо удалить, а затем, как только получите данные, вы удалите их.PartitionKey Атрибут сущностей, хранящихся в этих таблицах, фактически представляет значение даты / времени (в тиках с добавлением нулей, чтобы сделать его строкой равной длины), поэтому вам нужно будет взять значения from и to для даты / времени, преобразовать их вотметьте галочкой строку длиной 19 символов (добавив соответствующее количество нулей) и запросите данные.Получив данные на стороне клиента, вы отправите запрос на удаление обратно в хранилище таблиц.

Чтобы ускорить весь процесс, вы можете сделать несколько вещей:

  • Когда вы запрашиваете данные, используйте проекцию запроса, чтобы получить только атрибуты PartitionKey и RowKey, так как для удаления необходимы только эти два атрибута.
  • Для удаления вы можете использовать пакетную транзакцию объекта.Это может значительно ускорить операцию удаления.
  • Для более быстрого удаления вы можете развернуть виртуальную машину в том же регионе, что и ваша учетная запись хранения.Таким образом, вы не платите за выходные данные.

Некоторое время назад я написал сообщение в блоге, которое может оказаться вам полезным: https://gauravmantri.com/2012/02/17/effective-way-of-fetching-diagnostics-data-from-windows-azure-diagnostics-table-hint-use-partitionkey/.

Или даже лучше,Есть ли способ настроить политику хранения или настроить ее так, чтобы она не накапливалась вечно?

К сожалению, по крайней мере, на сегодняшний день нет.Там есть настройки хранения, но это только для BLOB-объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...