監視 Azure Cosmos DB

適用于: Nosql Mongodb 卡珊多拉 小鬼 Table

當您有依賴 Azure 資源的重要應用程式和商務程序時,您會想要監視這些資源的可用性、效能和操作。 本文說明 Azure Cosmos DB 資料庫所產生的監視資料,以及如何使用 Azure 監視器的功能來分析及警示此資料。

您可以使用用戶端和伺服器端的計量來監視資料。 使用伺服器端計量時,您可以使用下列選項來監視在 Azure Cosmos DB 中儲存的資料:

  • 從 Azure Cosmos DB 入口網站監視: 您可以使用 Azure Cosmos DB 帳戶的 [ 計量 ] 索引標籤內可用的計量進行監視。 此索引標籤上的計量包括輸送量、儲存體、可用性、延遲、一致性和系統等級計量。 根據預設,這些計量的保留期間為 7 天。 若要深入了解,請參閱本文 Azure Cosmos DB 一節中所收集的監視資料

  • 使用 Azure 監視器中的計量進行監視: 您可以監視 Azure Cosmos DB 帳戶的計量,並從 Azure 監視器建立儀表板。 Azure 監視器預設會收集 Azure Cosmos DB 計量,您不必明確設定任何值。 系統會以一分鐘的細微性收集這些計量,資料細微性可能會根據您選擇的計量而有所不同。 根據預設,這些計量的保留期間為 30 天。 這些計量中也提供了先前選項可用的大部分計量。 容器名稱等計量的維度值會區分大小寫。 因此,對這些維度值執行字串比較時,您必須使用不區分大小寫的比較。 若要深入了解,請參閱本文的分析計量資料一節。

  • 使用 Azure 監視器中的診斷記錄進行監視: 您可以監視 Azure Cosmos DB 帳戶的記錄,並從 Azure 監視器建立儀表板。 以第二個細微性發生的事件和追蹤之類的資料會儲存為記錄。 例如,如果容器的輸送量變更,Azure Cosmos DB 帳戶的屬性就會變更,而且這些事件會在記錄中擷取。 您可以對收集到的資料執行查詢,以分析這些記錄。 若要深入了解,請參閱本文的分析記錄資料一節。

  • 使用 SDK 以程式設計方式監視: 您可以使用 .NET、JAVA、Python、Node.js SDK,以及 REST API 中的標頭,以程式設計方式監視 Azure Cosmos DB 帳戶。 若要深入了解,請參閱本文以程式設計方式監視 Azure Cosmos DB 一節。

下圖顯示可透過 Azure 入口網站監視 Azure Cosmos DB 帳戶的不同選項:

Azure 入口網站中提供的監視選項

使用 Azure Cosmos DB 時,您可以在用戶端收集要求費用、活動識別碼、例外狀況/堆疊追蹤資訊、HTTP 狀態/子狀態碼、診斷字串的詳細資料,以偵測可能發生的任何問題。 如果您需要聯繫 Azure Cosmos DB 支援小組,也需要這項資訊。

監視概觀

每個 Azure Cosmos DB 帳戶的 Azure 入口網站中的 [概觀] 頁面包含資源使用量的簡短檢視,例如要求總數、產生特定 HTTP 狀態碼的要求,以及每小時計費。 這項資訊很有幫助,不過這個窗格中只會提供少量的監視資料。 其中有些資料會自動收集,並可在您建立資源時立即用以分析。 您可使用一些設定來啟用其他類型的資料收集。

Azure 監視器是什麼?

Azure Cosmos DB 會使用 Azure 監視器建立監視資料,Azure 監視器是 Azure 中的完整堆疊監視服務,其提供了一組完整功能以供您監視 Azure 資源,以及其他雲端和內部部署環境中的資源。

如果您還不熟悉如何監視 Azure 服務,請從使用 Azure 監視器來監視 Azure 資源一文開始著手,其中會說明下列概念:

  • Azure 監視器是什麼?
  • 與監視相關聯的成本
  • 在 Azure 中收集的監視資料
  • 設定資料收集
  • Azure 中用來分析和警示監視資料的標準工具

下列各節將以此文章為基礎來描述從 Azure Cosmos DB 收集的特定資料,並提供如何使用 Azure 工具來設定資料收集和分析此資料的範例。

Azure Cosmos DB 深入解析

Azure Cosmos DB 深入解析是以 Azure 監視器的活 頁簿功能為基礎,並使用針對下列各節所述的 Azure Cosmos DB 所收集的相同監視資料。 Azure 監視器可供您透過統一的互動式體驗,檢視所有 Azure Cosmos DB 資源的整體效能、失敗、容量及作業健康狀態,並使用 Azure 監視器的其他功能來進行詳細的分析和警示。 若要深入瞭解,請參閱 探索 Azure Cosmos DB 深入解析 一文。

注意

建立容器時,請確定您不會建立兩個名稱相同但大小寫不同的容器。 這是因為 Azure 平台的某些部分不會區分大小寫,而這可能導致在具有這類名稱的容器上發生遙測和動作的混淆/衝突。

監視資料

Azure Cosmos DB 會收集與其他 Azure 資源相同的監視資料類型,如監視 Azure 資源中的資料中所說明。 如需 Azure Cosmos DB 所建立之記錄和計量的詳細參考,請參閱 Azure Cosmos DB 監視資料參考

每個 Azure Cosmos DB 資料庫Azure 入口網站中的 [概觀] 頁面包含資料庫的簡短檢視,包括其要求和每小時計費使用量。 此資訊很實用,但只有少量的監視資料可供使用。 當您建立資料庫時,部分這類資料會自動收集並可供分析,而您可以使用一些設定來啟用其他資料收集。

概觀分頁

收集和路由傳送

系統會自動收集和儲存平台計量和活動記錄,但是可以使用診斷設定將資料路由傳送至其他位置。

在您建立診斷設定並將其路由至一個或多個位置之前,不會收集並儲存資源記錄。

如需使用 Azure 入口網站建立診斷設定的詳細程序和一些診斷查詢範例,請參閱建立診斷設定以在 Azure 中收集平台記錄和計量。 在建立診斷設定時,您可以指定要收集的記錄類別。

下列各節將討論您可以收集的計量和記錄。

分析計量

Azure Cosmos DB 提供使用計量的自訂體驗。 您可以從 [Azure 監視器] 功能表開啟 [計量],以透過計量瀏覽器使用其他 Azure 服務中的計量來分析 Azure Cosmos DB 的計量。 如需使用此工具的詳細資訊,請參閱開始使用 Azure 計量瀏覽器。 您也可以查看如何監視 Azure Cosmos DB 資源的伺服器端延遲要求單位使用量正規化要求單位使用量

如需針對 Azure Cosmos DB 收集的平台計量清單,請參閱監視 Azure Cosmos DB 資料參考計量一文。

Azure Cosmos DB 的所有計量都位於 命名空間 Azure Cosmos DB 標準計量中。 將篩選條件新增至圖表時,您可以使用下列維度來搭配這些計量:

  • CollectionName
  • DatabaseName
  • OperationType
  • 區域
  • StatusCode

如需參考,您可以查看 Azure 監視器中支援的所有資源計量清單。

檢視 Azure Cosmos DB 的作業層級計量

  1. 登入 Azure 入口網站

  2. 從左側導覽列選取 [監視器],然後選取 [計量]。

    Azure 監視器中的 [計量] 窗格

  3. 從 [計量] 窗格 >選取資源> 選擇所需的訂用帳戶資源群組。 針對 [資源類型],選取 [Azure Cosmos DB 帳戶],選擇其中一個現有的 Azure Cosmos DB 帳戶,然後選取 [ 套用]。

    選擇 Azure Cosmos DB 帳戶以檢視計量

  4. 接下來,您可以從可用的計量清單中選取計量。 您可以選取 [要求單位]、[儲存體]、[延遲]、[可用性]、[Cassandra] 等等的專屬計量。 若要深入了解此清單中所有可用的計量,請參閱依類別區分的計量一文。 在此範例中,我們選取 [要求單位] 和 [平均] 來作為彙總值。

    除了這些詳細資料之外,您也可以選取計量的 [時間範圍] 和 [時間細微性]。 在 [最大值] 中,您可以檢視過去 30 天的計量。 套用篩選之後,圖表就會根據您的篩選條件來顯示。 您可以看到所選期間內每分鐘耗用的平均要求單位數。

    從 Azure 入口網站選擇計量

將篩選條件新增至計量

您也可以篩選計量,讓圖表依據特定的 CollectionNameDatabaseNameOperationType, RegionStatusCode 來顯示。 若要篩選計量,請選取 [新增篩選條件],然後選擇必要的屬性 (例如 OperationType),然後選取 [查詢] 之類的值。 圖形接著會顯示所選期間內,查詢作業所耗用的要求單位。 透過預存程序執行的作業並不會記錄,因此其無法在 OperationType 計量下提供。

新增篩選條件以選取計量細微性

您可以使用 [套用分割] 選項來將計量分組。 例如,您可以將每個作業類型的要求單位分組,並一次檢視所有作業的圖形,如下圖所示:

新增套用分割篩選條件

分析記錄

Azure 監視器記錄中的資料會儲存在資料表中,其中每個資料表都有一組專屬的唯一屬性。

Azure 監視器中的所有資源記錄都有相同的欄位,後面接著服務特定的欄位。 一般結構描述如 Azure 監視器資源記錄結構描述中所述。 如需針對 Azure Cosmos DB 收集的資源記錄類型清單,請參閱監視 Azure Cosmos DB 資料參考

活動記錄是一個平台,可讓您深入了解訂用帳戶等級事件。 您可以獨立檢視活動記錄,或將記錄路由至 Azure 監視器記錄,以便使用 Log Analytics 處理更為複雜的查詢作業。

Azure Cosmos DB 會將資料儲存在下列資料表中。

Table 描述
AzureDiagnostics 多個服務用來儲存資源記錄的通用資料表。 可以使用 MICROSOFT.DOCUMENTDB 來識別 Azure Cosmos DB 中的資源記錄。
AzureActivity 儲存活動記錄中所有記錄的通用資料表。

範例 Kusto 查詢

在使用 Log Analytics 發出 Kusto 查詢之前,您必須啟用控制平面作業的診斷記錄。 啟用診斷記錄時,您將選取要將資料儲存在單一 AzureDiagnostics 資料表 (舊版) 還是資源特定資料表中。

當您從 [Azure Cosmos DB] 功能表中選取 [記錄] 時,查詢範圍設定為目前 Azure Cosmos 帳戶的 Log Analytics 會隨即開啟。 記錄查詢只會包含來自該資源的資料。

重要

如果您想要執行包含其他帳戶資料或其他 Azure 服務資料的查詢,請從 [Azure 監視器] 功能表中選取 [記錄]。 如需詳細資訊,請參閱 Azure 監視器 Log Analytics 中的記錄查詢領域和時間範圍

以下是您可以在 記錄搜尋搜尋 列中輸入的一些查詢,以協助您監視 Azure Cosmos DB 資源。 查詢的確切文字取決於您在啟用診斷記錄時選取的收集模式

  • 若要查詢 Azure Cosmos DB 中的所有控制平面記錄:

    AzureDiagnostics
    | where ResourceProvider=="MICROSOFT.DOCUMENTDB"
    | where Category=="ControlPlaneRequests"
    
  • 若要查詢 Azure Cosmos DB 中的所有資料平面記錄:

    AzureDiagnostics
    | where ResourceProvider=="MICROSOFT.DOCUMENTDB"
    | where Category=="DataPlaneRequests"
    
  • 若要查詢已篩選且特定為單一資源的資料平面記錄清單:

    AzureDiagnostics
    | where ResourceProvider=="MICROSOFT.DOCUMENTDB"
    | where Category=="DataPlaneRequests"
    | where Resource=="<account-name>"
    

    重要

    AzureDiagnostics 資料表中,許多欄位會區分大小寫且為大寫,包括但不限於;ResourceIdResourceGroupResourceProviderResource

  • 若要取得資料平面記錄的計數,請依資源分組:

    AzureDiagnostics
    | where ResourceProvider=="MICROSOFT.DOCUMENTDB"
    | where Category=="DataPlaneRequests"
    | summarize count() by Resource
    
  • 若要產生資料平面記錄的圖表,請依作業類型分組:

    AzureDiagnostics
    | where ResourceProvider=="MICROSOFT.DOCUMENTDB"
    | where Category=="DataPlaneRequests"
    | summarize count() by OperationName
    | render columnchart
    

這些範例只是簡單取樣可以使用 Kusto 查詢語言在 Azure 監視器中執行的豐富查詢。 如需詳細資訊,請參閱 Kusto 查詢範例

警示

在監視資料中發現重大狀況時,Azure 監視器會主動通知您。 如此便能在您的客戶注意到之前,先在您的系統中識別問題並加以對應。 可在 [計量]、[記錄]、[活動記錄] 中設定警示。 不同類型的警示各有優缺點

例如,下表列出資源的一些警示規則。 您可以從 Azure 入口網站找到警示規則的詳細清單。 若要深入了解,請參閱如何設定警示一文。

警示類型 條件 描述
要求單位的速率限制 (計量警示) 維度名稱:StatusCode、運算子:Equals、維度值:429 如果容器或資料庫已超過佈建的輸送量限制,則會發出警示。
區域已容錯移轉 運算子:大於、彙總類型:計數、閾值:1 單一區域容錯移轉時。 如果您未啟用服務管理的容錯移轉,此警示將會很有幫助。
輪換金鑰 (活動記錄警示) 事件層級:資訊,狀態:已啟動 輪換帳戶金鑰時發出警示。 您可以使用新的金鑰來更新應用程式。

以程式設計方式監視 Azure Cosmos DB

入口網站中可用的帳戶層級計量,例如帳戶儲存體使用量和要求總數,無法透過適用于 NoSQL 的 API 取得。 不過,您可以使用適用于 NoSQL 的 API,擷取集合層級的使用方式資料。 若要擷取集合層級的資料,請執行下列動作:

若要存取其他計量,請使用 Azure 監視器 SDK。 您可以呼叫下列程式碼來擷取可用的度量定義:

https://management.azure.com/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroup}/providers/Microsoft.DocumentDb/databaseAccounts/{DocumentDBAccountName}/providers/microsoft.insights/metricDefinitions?api-version=2018-01-01

若要擷取個別計量,請使用下列格式:

https://management.azure.com/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroup}/providers/Microsoft.DocumentDb/databaseAccounts/{DocumentDBAccountName}/providers/microsoft.insights/metrics?timespan={StartTime}/{EndTime}&interval={AggregationInterval}&metricnames={MetricName}&aggregation={AggregationType}&`$filter={Filter}&api-version=2018-01-01

若要深入了解,請參閱 Azure 監視 REST API 一文。

後續步驟