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

#azure-cosmosdb #azure-powershell

Вопрос:

Я хотел бы собрать информацию о выделенной в настоящее время пропускной способности для всех коллекций (Mongo API) во всех базах данных в учетной записи Cosmos. Это делается для обнаружения любых отклонений от ожидаемого базового уровня.

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

Следующее работает, но довольно медленно (я запустил его в Azure cloudshell для учетной записи с 94 коллекциями в 41 базе данных. Первая попытка заняла 4 минуты 48 секунд с некоторыми заметными длительными задержками между некоторыми результатами. Вторая попытка была на 3 минуты быстрее-1 минута 48 минут.

Хотя даже вторая попытка, на мой взгляд, слишком медленная.

 Set-AzContext -Subscription "..."

$rgName = "..."
$accountName = "..."

Get-AzCosmosDBMongoDBDatabase -ResourceGroupName $rgName -AccountName $accountName | ForEach-Object {$Dbname = $_.Name; Get-AzCosmosDBMongoDBCollection -ResourceGroupName $rgName -AccountName $accountName  -Database  $Dbname | ForEach-Object {$collName = $_.Name; Get-AzCosmosDBMongoDBCollectionThroughput -ResourceGroupName $rgName -AccountName $accountName -DatabaseName $Dbname -Name $collName |  Select-Object -Property Throughput, MinimumThroughput,@{Name = 'DatabaseName'; Expression = {$Dbname}},@{Name = 'CollectionName'; Expression = {$collName}} -ExpandProperty AutoscaleSettings}}
 

Есть ли какой-либо способ получить желаемые результаты намного быстрее, чем указано выше?

Ответ №1:

Возможно, вы могли бы попробовать использовать библиотеку управления Azure для Cosmos DB, но я не могу с уверенностью сказать, что это будет быстрее. Здесь на GitHub есть пример, который может показать вам, как перечислять объекты базы данных и коллекции и получать пропускную способность для каждого из них.

Проблема здесь в целом заключается в том, что операции на плоскости управления в Cosmos обслуживаются главным разделом в учетной записи, и у него чрезвычайно мало RU/s для запросов на обслуживание. На самом деле, если вы сделаете слишком много запросов метаданных к этому главному разделу, вы можете получить ограниченную скорость и получить 429 ответов. Тот факт, что это занимает такой длительный период времени, вероятно, хорошо в том смысле, что вы не видите 429-х годов.

Комментарии:

1. Спасибо. Другая возможность, которую я рассматриваю, — запросить у AzureMonitor ввод с помощью ProvisionedThroughput и вывод с помощью autoscalemax для всех баз данных и коллекций. Это, безусловно, будет намного быстрее для получения результатов. Однако у него есть некоторые недостатки в сложности и ненадежной оболочке имен