#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 для всех баз данных и коллекций. Это, безусловно, будет намного быстрее для получения результатов. Однако у него есть некоторые недостатки в сложности и ненадежной оболочке имен