Share via


建立警示,以便監視邏輯分割區索引鍵的儲存體是否接近 20 GB

適用於:NoSQL MongoDB Cassandra Gremlin Table

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 工作區

建立警示

  1. 登入 Azure 入口網站

  2. 從左側導覽列選取 [監視器],然後選取 [警示]

  3. 選取 [新增警示規則] 按鈕,開啟 [建立警示規則] 窗格。

  4. 填寫 [範圍] 區段:

    • 開啟 [選取資源] 窗格,並設定下列各項:

    • 選擇您的訂用帳戶名稱。

    • 針對 [資源類型] 選取 [Azure Cosmos DB 帳戶]

    • Azure Cosmos DB 帳戶的位置

    • 填入詳細資料之後,即會顯示所選範圍中的 Azure Cosmos DB 帳戶清單。 選擇您要設定警示的帳戶,然後選取 [完成]

  5. 填寫 [條件] 區段:

    • 開啟 [選取條件] 窗格以開啟 [選取訊號] 頁面,並設定下列各項:

    • 針對 [訊號類型] 選取 [記錄]

    • 針對 [監視服務] 選取 [記錄分析]

    • 針對 [訊號名稱] 選取 [自訂記錄搜尋]

    • 在查詢編輯器中,新增下列查詢。 您可以執行查詢來預覽結果。

    注意

    若查詢目前未傳回結果,完全是正常狀況。 當邏輯分割區索引鍵的儲存體大小較為龐大時,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 小時]。 這表示在該小時內,警示會使用儲存體的最高值來計算邏輯分割區的儲存體大小。

    • 在 [依維度分割] 區段中:

      • 新增下列六個維度:AccountNameDatabaseNameCollectionName_ResourceIdPartitionKeySizeKb。 這可確保當警示觸發時,將能識別觸發警示的特定 Azure Cosmos DB 帳戶、資料庫、集合和分割區索引鍵。

      • 針對 SizeKb 維度,請將 [選取所有目前及未來的值] 選取為 [維度值]

      • 針對其他所有維度:

        • 若只要監視特定的 Azure Cosmos DB 帳戶、資料庫、集合或分割區索引鍵,請選取特定的值;若下拉式清單值目前未顯示該值,則可選取 [新增自訂值]

        • 否則,請選取 [選取所有目前及未來的值]。 例如,如果您的 Azure Cosmos DB 帳戶目前有兩個資料庫和五個集合,當您選取 Database 和 CollectionName 維度的所有目前與功能值時,將確保警示會套用至所有現有的資料庫和集合,以及未來可能建立的任何資料庫和集合。

    • 在 [警示邏輯] 區段中:

      • 針對 [運算子],選取 [大於]

      • 選取您需要的閾值。 根據查詢的撰寫方式,有效閾值為介於 0 和 1 (含該值) 間的數字。 在本範例中,我們要在邏輯分割區索引鍵達到儲存體允許值 70% 時觸發警示,因此輸入 0.7。 您可視需求調整此數字。

      • 視需求選取所需的 [評估頻率]。 在本範例中,選取 [1 小時]。 請注意,此值必須小於或等於警示評估期限。

      完成步驟 5 後,[條件] 區段將如下例所示。

      Screenshot of an example configuration for signal logic

  6. 填寫 [動作] 區段:

    • 選取現有的動作群組或建立新的動作群組。 動作群組可讓您定義觸發警示時所要採取的動作。 在此範例中,請建立新的動作群組,以便在觸發警示時收到電子郵件通知。 開啟 [建立動作群組] 窗格。

    • 在 [基本] 區段中:

      • 選擇將在其中建立此動作群組的訂用帳戶和資源群組。

      • 動作群組名稱 - 動作群組名稱在資源群組內必須是唯一的。

      • 顯示名稱 - 電子郵件和 SMS 通知將包含此值,以識別通知來源的動作群組。

    • [通知] 區段中:

      • 提供通知的名稱。

      • 選取 [電子郵件/SMS 訊息/推播/語音] 作為 [通知類型],然後輸入您的電子郵件、SMS、推播通知或語音資訊。

    • 選擇性:在 [動作] 區段中,您可選取要執行的 [動作],例如:[動作] 區段中的 Azure 函式或邏輯應用程式。

    • 選取 [檢閱 + 建立] 以建立動作群組。

  7. 填寫 [詳細資料] 區段:

    • 定義警示的名稱,提供選擇性描述、警示的嚴重性層級,以及選擇是否要在建立規則時啟用規則。
    • 選取 [檢閱 + 建立],然後選取 [建立] 以完成建立警示。

建立警示之後,警示會在 10 分鐘內啟用。

範例警示

若要在 Azure 入口網站中查看警示:

  1. 登入 Azure 入口網站

  2. 從左側導覽列選取 [監視器],然後選取 [警示]

當警示引發時,會包含:

  • 資料庫帳戶名稱
  • 資料庫名稱
  • 集合名稱
  • 邏輯分割區索引鍵
  • 邏輯分割區索引鍵中的儲存體 (KB)
  • 20 GB 限制使用

例如,在以下引發的警示中,我們看到「ContosoTenant」的邏輯分割區已達 20 GB 邏輯分割區儲存體限制的 0.78,在特定資料庫和集合中有 16 GB 的資料。

Screenshot of an alert fired when logical partition key size exceeds threshold

補救步驟

達到 20 GB 的邏輯分割區大小限制時,便無法再將任何資料寫入該邏輯分割區。 因此針對長期的解決方案,則建議使用不同的資料分割區索引鍵來重新架構應用程式。

您可要求暫時增加現有應用程式的邏輯分割區索引鍵限制,以作為權宜之計。 提出 Azure 支援票證,並選取 [暫時增加容器的邏輯分割區索引鍵大小] 配額類型。請注意,這是暫時的緩和措施,不建議做為長期解決方案,因為當限制增加時,不會接受 SLA 保證。 若要移除設定,請提出支援票證,並選取配額類型 [將容器的邏輯分割區索引鍵大小還原為預設值 (20 GB)]。 當您已刪除資料以符合 20 GB 的邏輯分割區限制,或已使用不同分割區索引鍵重新架構應用程式後,則可執行此動作。

若要了解管理工作負載 (所含分割區索引鍵需要更高儲存體或輸送量限制) 的最佳做法,請參閱建立綜合分割區索引鍵

下一步