適用対象:
NoSQL
MongoDB
カサンドラ
グレムリン
表
Azure Cosmos DB では、論理パーティションキー の最大サイズが 20 GB に設定されています。 たとえば、UserId でパーティションされたコンテナー/コレクションがある場合、"Alice" 論理パーティション内には最大 20 GB のデータを保存できます。
アラートを使用して、20 GB の論理パーティション制限に近づいている論理パーティション キーがあるかどうかを監視できます。 アラートは、条件がトリガーされたときに、メールの形式で通知を送信したり、Azure 関数やロジック アプリなどのアクションを実行したりすることができます。
この記事では、論理パーティション キーのストレージが 20 GB の制限 (14 GB を超えるストレージ) の 70% を超えた場合にトリガーするアラートを作成します。 アラートは、特定の Azure Cosmos DB アカウントの [アラート] ペイン、または Azure portal のAzure Monitor サービスから設定できます。 両方のインターフェイスに同じオプションが用意されています。 この記事では、Azure Monitor からアラートを設定する方法について説明します。
[前提条件]
診断ログの PartitionKeyStatistics ログ カテゴリのデータを使用してアラートを作成しています。 診断ログはオプトイン機能であるため、続行する前に有効にする必要があります。 この例では、推奨される [リソース固有のログ] オプションを使用します。
「Azure の診断設定を使用して Azure Cosmos DB データを監視する」の手順に従って、次のことを確認します。
- 監視する Azure Cosmos DB アカウントで診断ログが有効になっている
- Partitionkeystatisticsログカテゴリのコレクションを構成した
- 診断ログが Log Analytics ワークスペースに送信されている
アラートを作成する
Azure portal にサインインします。
左側のナビゲーション バーから [監視] を選択し、 [アラート] を選択します。
[新しいアラート ルール] ボタンを選択して [アラート ルールの作成] ペインを開きます。
[スコープ] セクションの項目に入力します。
[リソースの選択] ペインを開き、次のように構成します。
サブスクリプション名を選択します。
[リソースの種類] に [Azure Cosmos DB アカウント] を選択します。
Azure Cosmos DB アカウントの [場所]。
詳細を入力すると、選んだスコープの Azure Cosmos DB アカウントの一覧が表示されます。 アラートを構成するアカウントを選択して、 [完了] を選択します。
[条件] セクションの項目に入力します。
[条件の選択] ペインを開いて、[シグナル ページの設定] ページを開き、次のように構成します。
シグナルの種類として [ログ] を選択します。
監視サービスとして [ Log analytics ] を選択します。
[シグナル名] で [カスタム ログ検索] を選択します。
クエリ エディターで、このクエリを追加します。 クエリを実行して結果をプレビューすることができます。
Note
クエリが現在結果を返さなくても、まったく問題ありません。 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 時間を選択します。 つまり、アラートでは、1 時間で最大のストレージ値を使用して、論理パーティションのストレージ サイズが計算されます。
[ディメンションで分割] セクションで、次の手順を実行します。
次の 6 つのディメンションを追加します。 AccountName、DatabaseName、CollectionName、_ResourceId、partitionkey、sizekb。 これにより、アラートがトリガーされたときに、アラートをトリガーした特定の Azure Cosmos DB アカウント、データベース、コレクション、パーティション キーを識別できるようになります。
[Sizekb] ディメンションには、[現在の値と将来の値をすべてディメンション値として選択する] を選択します。
その他すべてのディメンション:
特定の Azure Cosmos DB アカウント、データベース、コレクション、またはパーティション キーのみを監視する場合は、特定の値を選択するか、値が現在ドロップダウンに表示されていない場合はカスタム値を追加します。
それ以外の場合は、[現在と将来の値をすべて選択]を選択します。 たとえば、Azure Cosmos DB アカウントに現在 2 つのデータベースと 5 つのコレクションがある場合、Database ディメンションと CollectionName ディメンションのすべての現在の値と機能の値を選択すると、アラートがすべての既存のデータベースとコレクション、および将来作成できるすべてのデータベースとコレクションに確実に適用されます。
[アラート ロジック] セクションでは、次の操作を実行します。
[条件] に [より大きい] を選択します。
目的のしきい値を選択します。 クエリの記述方法に基づいて、有効なしきい値は 0 ~ 1 (両端を含む) の数値です。 この例では、論理パーティション キーが許容されるストレージの 70 % に達した場合にアラートをトリガーしたいので、「0.7」と入力します。 この数値は、要件に基づいて調整できます。
要件に基づいて、目的の評価の頻度 を選択します。 この例では、 1 時間を選択します。 この数値はアラート評価期間の長さ以下にする必要があります。
手順 5 を完了すると、[ 条件] セクションは次の例のようになります。
[アクション] セクションに入力します。
既存のアクション グループを選択するか、新しいグループを作成します。 アクション グループを使用して、アラートがトリガーされたときに実行するアクションを定義できます。 この例では、新しいアクション グループを作成して、アラートがトリガーされたときに電子メール通知を受信するようにします。 [アクション グループの作成] ペインを開きます。
[基本] セクションでの設定:
このアクション グループを作成するサブスクリプションとリソース グループを選択します。
アクション グループ名 - アクション グループ名は、リソース グループ内で一意である必要があります。
表示名 - この値は、通知の送信元であるアクション グループを識別するために、メールと SMS 通知に含められます。
[通知] セクションで、次の手順を実行します。
通知の名前を指定します。
通知の種類として [メール/ SMS メッセージ/プッシュ/音声] を選択し、メール、SMS、プッシュ通知、または音声の情報を入力します。
省略可能: [アクション] セクションで、[アクション] セクションの Azure 関数やロジック アプリなど、実行するアクションを選択できます。
次に、[確認と作成] を選択してアクション グループを作成します。
[詳細] セクションに入力します。
- アラートの名前を定義し、必要に応じて説明を入力し、アラートの重大度レベルを指定して、ルールの作成時にルールを有効にするかどうかを選択します。
- [確認と作成] を選択し、[作成] を選択するとアラートの作成が完了します。
アラートを作成すると、10 分以内にアクティブになります。
アラートの例
Azure portal でアラートを表示するには:
Azure portal にサインインします。
左側のナビゲーション バーから [監視] を選択し、 [アラート] を選択します。
アラートが発生すると、次のものが含まれます。
- グローバル データベース アカウント名
- データベース名
- コレクション名
- 論理パーティション キー
- 論理パーティション キーのストレージ (KB)
- 20 GB の制限の使用率
たとえば、発生したアラートでは、"ContosoTenant" の論理パーティションが 20 GB の論理パーティションストレージ制限のうち 0.78 に達し、特定のデータベースとコレクションに 16 GB のデータが含まれていることがわかります。
修復ステップ
20 GB の論理パーティション サイズの制限に達すると、その論理パーティションにそれ以上データを書き込むことができなくなります。 そのため、長期的なソリューションとして別のパーティション キーを使用してアプリケーションを再設計することをお勧めします。
これに時間をかけられるよう、既存のアプリケーションの論理パーティション キーの制限を一時的に増やすことを要求できます。 Azure サポート チケットを提出 し、クォータの種類を選択 します。コンテナーの論理パーティション キー サイズの一時的な増加。 これは一時的な軽減策であり、長期的なソリューションとしては推奨されません。サービス レベル アグリーメント (SLA) の保証は制限を引き上げたときに受け入れられません。 構成を削除するには、サポート チケットを提出し、クォータの種類 [コンテナーの論理パーティション キー サイズを既定値 (20 GB) に復元する] を選択します。 これは、20 GB の論理パーティション制限に合わせてデータを削除した後、または別のパーティション キーを使用してアプリケーションを再設計した後に行うことができます。
ストレージまたはスループットにより高い制限が必要なパーティション キーを持つワークロードを管理するためのベスト プラクティスについては、「合成パーティション キーの作成」を参照してください。
次のステップ
- Azure Monitor を使用して Azure Cosmos DB のアラートを作成する方法
- Azure Cosmos DB コンテナーの正規化された RU/秒メトリックを監視する方法。
- Azure Cosmos DB で操作のスループットまたは要求ユニットの使用状況を監視する方法。
- Azure Cosmos DB コンテナーで 429 例外を解釈してデバッグする方法。