Создание оповещений для отслеживания того, приближается ли хранилище для ключа логического раздела к 20 ГБ
Область применения: Nosql Mongodb Кассандра Гремлин Таблица
Azure Cosmos DB применяет максимальный размер ключа логического раздела, равный 20 ГБ. Например, если имеется контейнер или коллекция, секционированная по UserID, то в логическом разделе «Alice» может храниться до 20 ГБ данных.
С помощью оповещений можно отслеживать наличие ключей логических разделов, которые приближаются к ограничению логических разделов объемом 20 ГБ. Оповещения могут отправлять вам уведомления в виде сообщения электронной почты или выполнять действия, такие как функция Azure или приложение логики, при активации условия.
В этой статье мы создадим оповещение, которое будет активироваться, если размер хранилища для ключа логического раздела превышает 70% от ограничения в 20 ГБ (занимает более 14 ГБ емкости хранилища). Оповещения можно настроить на панели Оповещения в определенной учетной записи Azure Cosmos DB или в службе Azure Monitor на портале Azure. Оба интерфейса предлагают одинаковые параметры. В этой статье показано, как настроить оповещение в службе Azure Monitor.
Предварительные требования
Для создания оповещения мы будем использовать данные из категории журнала PartitionKeyStatistics в журналах диагностики. Журналы диагностики — это подключаемая функция. Поэтому, перед продолжением ее необходимо включить. В нашем примере мы будем использовать рекомендуемый вариант «Журналы для конкретных ресурсов».
Следуйте инструкциям в разделе Мониторинг данных Azure Cosmos DB с помощью параметров диагностики в Azure, чтобы обеспечить следующее.
- Функция журналов диагностики включена в учетных записях Azure Cosmos DB, которые необходимо отслеживать
- Вы настроили сбор данных для категории журнала PartitionKeyStatistics
- Журналы диагностики отправляются в рабочую область Log Analytics
Создание оповещения
Войдите на портал Azure.
На панели навигации слева выберите пункт Монитор, а затем — Оповещения.
Нажмите кнопку "Новое правило генерации оповещений", чтобы открыть область "Создать правило генерации оповещений".
Заполните раздел Область:
Откройте область Выбор ресурса и настройте следующие параметры:
Выберите свою подписку.
Для типа ресурса выберите учетные записи Azure Cosmos DB.
Расположение учетной записи Azure Cosmos DB.
После заполнения сведений отобразится список учетных записей Azure Cosmos DB в выбранной области. Выберите ту, для которой нужно настроить оповещения, а затем нажмите кнопку Готово.
Заполните раздел Условие:
Откройте панель Выбрать условие, чтобы перейти на страницу Выбор сигнала и настроить следующие параметры:
Для параметра Тип сигнала выберите значение Журнал.
Для параметра Мониторинг службы выберите значение Log Analytics.
Для параметра Название сигнала выберите значение Пользовательский поиск по журналам.
В редакторе запросов добавьте приведенный ниже запрос. Для предварительного просмотра результата можно выполнить этот запрос.
Примечание.
Вполне допустимо, если запрос в настоящее время не возвращает результаты. Журналы PartitionKeyStatistics отображают данные только при наличии ключей логических разделов со значительным размером хранилища. Поэтому, если результаты не возвращаются, это означает, что таких ключей нет. Если и когда такие ключи будут появляться в будущем, будет активировано оповещение.
CDBPartitionKeyStatistics // Get the latest storage size for each logical partition key value | summarize arg_max(TimeGenerated, *) by AccountName, DatabaseName, CollectionName, _ResourceId, PartitionKey | extend utilizationOf20GBLogicalPartition = SizeKb / (20.0 * 1024.0 * 1024.0) // Current storage / 20GB | project TimeGenerated, AccountName, DatabaseName, CollectionName, _ResourceId, PartitionKey, SizeKb, utilizationOf20GBLogicalPartition
Выберите Продолжить изменение оповещения.
В разделе «Измерение» выполните следующее:
Для параметра Мера выберите значение utilizationOf20GBLogicalPartition.
Для параметра Тип агрегирования выберите значение Максимум.
Выберите нужную степень детализации агрегирования в соответствии со своими требованиями. В нашем примере мы выберем значение 1 час. Это означает, что оповещение рассчитает размер хранилища логического раздела, используя самое высокое значение для хранилища в час.
В разделе «Разделение по измерениям»:
Добавьте следующие шесть измерений: AccountName, DatabaseName, CollectionName, _ResourceId, PartitionKey, SizeKb. Благодаря этому при активации оповещения вы сможете определить конкретную учетную запись Azure Cosmos DB, базу данных, коллекцию и ключ раздела, которые активировали данное оповещение.
Для измерения SizeKb выберите значение Выбрать все текущие и будущие значения для параметра Значения измерений.
Для всех других измерений:
Если вы хотите отслеживать только конкретную учетную запись Azure Cosmos DB, базу данных, коллекцию или ключ раздела, выберите нужное значение или добавьте пользовательское значение, если требуемое значение в данный момент не отображается в раскрывающемся списке.
В противном случае выберите Выбрать все текущие и будущие значения. Например, если у вашей учетной записи Azure Cosmos DB есть две базы данных и пять коллекций, то при выборе всех текущих и функциональных значений для измерения Database и CollectionName оповещение будет применяться ко всем существующим базам данных и коллекциям, а также к любым существующим базам данных и коллекциям, которые можно создать в будущем.
В разделе Логика оповещений:
Выберите значение Больше чем для параметра Оператор.
Выберите нужное пороговое значение. В зависимости от того, как был написан запрос, допустимым пороговым значением будет число от 0 до 1 (включительно). В нашем примере мы хотим активировать оповещение, если ключ логического раздела достигает 70% от разрешенного размера хранилища, поэтому мы введем значение 0,7. Это число можно указать в соответствии со своими требованиями.
Выберите нужную частоту оценки в соответствии со своими требованиями. В нашем примере мы выберем значение 1 час. Следует отметить, что это значение должно быть не больше периода оценки для оповещения.
После выполнения шага 5 раздел Условие будет выглядеть, как в примере ниже.
Заполните раздел Действия:
Выберите существующую группу действий или создайте новую. Группа действий позволяет определить действия, выполняемые при активации оповещения. Для этого примера создайте новую группу действий для получения уведомления по электронной почте при активации оповещения. Откройте панель Создание группы действий.
В разделе Основы:
Выберите подписку и группу ресурсов, где будет создана эта группа действий.
Имя группы действий. Имя группы действий должно быть уникальным в пределах группы ресурсов.
Отображаемое имя — это значение включается в сообщение электронной почты и SMS-уведомления, чтобы определить, какая группа действий является источником уведомления.
В разделе Уведомления:
Укажите имя для уведомления.
Для параметра Тип уведомления выберите значение Адрес электронной почты / SMS-сообщение / Push-уведомление / Голосовое сообщение, а затем введите адрес электронной почты, SMS-сообщение, Push-уведомление или голосовое сообщение.
(Необязательно) В разделе Действия можно выбрать действие, которое будет выполняться, например функцию Azure или приложение логики в разделе Действия.
Выберите Просмотреть и создать, чтобы создать группу действий.
Заполните раздел Сведения:
- Определите имя оповещения, введите необязательное описание, укажите уровень серьезности оповещения, а также, следует ли включать правило при его создании.
- Выберите Просмотреть и создать и нажмитеСоздать, чтобы завершить создание оповещения.
После создания оповещения оно активируется в течение 10 минут.
Пример оповещения
Чтобы просмотреть оповещения на портале Azure, выполните следующее:
Войдите на портал Azure.
На панели навигации слева выберите пункт Монитор, а затем — Оповещения.
При активации оповещение будет содержать следующие сведения:
- Имя учетной записи базы данных
- Имя базы данных
- Имя коллекции
- Ключ логического раздела
- Размер хранилища (в КБ) для ключа логического раздела
- Использование ограничения в 20 ГБ
Например, оповещение, которое было активировано ниже, содержит следующие сведения: логический раздел «ContosoTenant» достиг ограничения в 0,78 для хранилища логического раздела в 20 ГБ, 16 ГБ данных в определенной базе данных и коллекции.
Действия по исправлению
При достижении ограничения по размеру логического раздела в 20 ГБ вы не сможете записывать дополнительные данные в этот логический раздел. В результате, в качестве долгосрочного решения рекомендуется изменить архитектуру приложения и использовать другой ключ раздела.
Чтобы выделить на это достаточно времени, вы можете запросить временное увеличение предельного размера ключа логического раздела для существующего приложения. Отправьте запрос в службу поддержки Azure и выберите тип квоты Временное увеличение размера ключа логического раздела контейнера. Обратите внимание, что это решение является временным и не рекомендуется в качестве долгосрочного, так как при увеличении значения ограничения гарантии SLA не учитываются. Чтобы удалить конфигурацию, создайте запрос в службу поддержки и выберите тип квоты Восстановление размера ключа логического раздела контейнера до стандартного (20 ГБ). Это можно сделать после того, как вы либо удалите данные, чтобы соблюсти ограничение на размер логического раздела в 20 ГБ, либо перепроектируете приложение с использованием другого ключа раздела.
Рекомендации по управлению рабочими нагрузками, для которых используются ключи разделов с более высокими установленными ограничениями в плане хранения или пропускной способности, см. в разделе Создание синтетического ключа секции.
Следующие шаги
- Создание оповещений для Azure Cosmos DB с помощью Azure Monitor.
- Мониторинг нормализованной метрики ЕЗ/с в контейнере Azure Cosmos DB.
- Отслеживание пропускной способности или использования единиц запросов для операций в Azure Cosmos DB.
- Интерпретация и дебют исключений 429 в контейнере Azure Cosmos DB.