建立警示,以便監視邏輯分割區索引鍵的儲存體是否接近 20 GB
適用於:NoSQL MongoDB Cassandra Gremlin 桌子
Azure Cosmos DB 強制限定邏輯分割區索引鍵大小上限為 20 GB。 例如,如果您有依 UserId 分割的容器/集合,「Alice」邏輯分割區中的資料最多可以儲存 20 GB 的資料。
您可以使用警示,以便監視是否有任何邏輯分割區索引鍵接近 20 GB 的邏輯分割區限制。 觸發條件時,警示可透過電子郵件的形式傳送通知給您或執行動作,例如 Azure 函式或邏輯應用程式。
在本文中,我們將建立警示,當邏輯分割區索引鍵的儲存體超過 20 GB 限制的 70% (超過儲存體的 14 GB) 時即會觸發。 您可以從特定 Azure Cosmos DB 帳戶中的 [警示] 窗格或 Azure 入口網站中的 Azure 監視器服務來設定警示。 這兩個介面都提供相同的選項。 本文說明如何從 Azure 監視器設定警示。
必要條件
我們將使用診斷記錄中 PartitionKeyStatistics 記錄類別的資料來建立警示。 診斷記錄是選擇加入的功能,因此您必須先啟用其才能繼續。 在範例中,我們將使用建議的 [資源專屬記錄] 選項。
遵循使用 Azure 中的診斷設定來監視 Azure Cosmos DB 資料中的指示,以確保:
- 已針對要監視的 Azure Cosmos DB 帳戶啟用診斷記錄
- 您已設定 PartitionKeyStatistics 記錄類別的集合
- 診斷記錄將傳送至 Log Analytics 工作區
建立警示
登入 Azure 入口網站。
從左側導覽列選取 [監視器],然後選取 [警示]。
選取 [新增警示規則] 按鈕,開啟 [建立警示規則] 窗格。
填寫 [範圍] 區段:
開啟 [選取資源] 窗格,並設定下列各項:
選擇您的訂用帳戶名稱。
針對 [資源類型] 選取 [Azure Cosmos DB 帳戶]。
Azure Cosmos DB 帳戶的位置。
填入詳細資料之後,即會顯示所選範圍中的 Azure Cosmos DB 帳戶清單。 選擇您要設定警示的帳戶,然後選取 [完成]。
填寫 [條件] 區段:
開啟 [選取條件] 窗格以開啟 [選取訊號] 頁面,並設定下列各項:
針對 [訊號類型] 選取 [記錄]。
針對 [監視服務] 選取 [記錄分析]。
針對 [訊號名稱] 選取 [自訂記錄搜尋]。
在查詢編輯器中,新增下列查詢。 您可以執行查詢來預覽結果。
注意
若查詢目前未傳回結果,完全是正常狀況。 當邏輯分割區索引鍵的儲存體大小較為龐大時,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 訊息/推播/語音] 作為 [通知類型],然後輸入您的電子郵件、SMS、推播通知或語音資訊。
選擇性:在 [動作] 區段中,您可選取要執行的 [動作],例如:[動作] 區段中的 Azure 函式或邏輯應用程式。
選取 [檢閱 + 建立] 以建立動作群組。
填寫 [詳細資料] 區段:
- 定義警示的名稱,提供選擇性描述、警示的嚴重性層級,以及選擇是否要在建立規則時啟用規則。
- 選取 [檢閱 + 建立],然後選取 [建立] 以完成建立警示。
建立警示之後,警示會在 10 分鐘內啟用。
範例警示
若要在 Azure 入口網站中查看警示:
登入 Azure 入口網站。
從左側導覽列選取 [監視器],然後選取 [警示]。
當警示引發時,會包含:
- 資料庫帳戶名稱
- 資料庫名稱
- 集合名稱
- 邏輯分割區索引鍵
- 邏輯分割區索引鍵中的儲存體 (KB)
- 20 GB 限制使用
例如,在以下引發的警示中,我們看到「ContosoTenant」的邏輯分割區已達 20 GB 邏輯分割區儲存體限制的 0.78,在特定資料庫和集合中有 16 GB 的資料。
補救步驟
達到 20 GB 的邏輯分割區大小限制時,便無法再將任何資料寫入該邏輯分割區。 因此針對長期的解決方案,則建議使用不同的資料分割區索引鍵來重新架構應用程式。
您可要求暫時增加現有應用程式的邏輯分割區索引鍵限制,以作為權宜之計。 提出 Azure 支援票證,並選取 [暫時增加容器的邏輯分割區索引鍵大小] 配額類型。請注意,這是暫時的緩和措施,不建議做為長期解決方案,因為當限制增加時,不會接受 SLA 保證。 若要移除設定,請提出支援票證,並選取配額類型 [將容器的邏輯分割區索引鍵大小還原為預設值 (20 GB)]。 當您已刪除資料以符合 20 GB 的邏輯分割區限制,或已使用不同分割區索引鍵重新架構應用程式後,則可執行此動作。
若要了解管理工作負載 (所含分割區索引鍵需要更高儲存體或輸送量限制) 的最佳做法,請參閱建立綜合分割區索引鍵。
下一步
- 如何使用 Azure 監視器建立 Azure Cosmos DB 的警示。
- 如何在 Azure Cosmos DB 容器中監視標準化的 RU/秒計量。
- 如何在 Azure Cosmos DB 中針對作業監視輸送量或要求單位使用量。
- 如何在 Azure Cosmos DB 容器中解譯和偵錯 429 例外狀況。