分享方式:


建立警示,以便監視邏輯分割區索引鍵的儲存體是否接近 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 工作區

建立警示

  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 後,[條件] 區段將如下例所示。

      訊號邏輯範例設定的螢幕快照

  6. 填寫 [動作] 區段:

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

    • 在 [基本] 區段中:

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

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

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

    • [通知] 區段中:

      • 提供通知的名稱。

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

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

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

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

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

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

範例警示

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

  1. 登入 Azure 入口網站

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

當警示引發時,會包含:

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

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

邏輯分割區索引鍵大小超過閾值時引發警示的螢幕快照

補救步驟

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

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

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

下一步