Share via


使用 Azure 監視器監視 Azure Cosmos DB for MongoDB 虛擬核心診斷記錄

適用於: MongoDB 虛擬核心

Azure 的診斷記錄對於擷取 Azure Cosmos DB for MongoDB 虛擬核心帳戶的 Azure 資源記錄而言至關重要。 這些記錄會針對該帳戶的資源作業提供詳細且頻繁的深入解析。

重要

此功能不適用於 M25 (可高載) 或 M30 (免費層) SKU。

必要條件

建立診斷設定

系統會自動收集平台計量和活動記錄。 若要收集資源記錄並從 Azure 監視器外部加以路由,您必須建立診斷設定。 在啟用 Azure Cosmos DB 帳戶的診斷設定時,您必須選擇將其路由至 Log Analytics 工作區或 Azure 儲存體帳戶。

  1. 建立 clusterNameresourceGroupName 的殼層變數。

    # Variable for API for MongoDB vCore cluster resource
    clusterName="<resource-name>"
    
    # Variable for resource group
    resourceGroupName="<resource-group-name>"
    
  2. 建立 workspaceNamediagnosticSettingName 的殼層變數。

    # Variable for workspace name
    workspaceName="<storage-account-name>"
    
    # Variable for diagnostic setting name
    diagnosticSettingName="<diagnostic-setting-name>"
    

    注意

    例如,如果 Log Analytics 工作區的名稱是 test-workspace,而診斷設定的名稱是 test-setting

    workspaceName="test-workspace"
    diagnosticSettingName:"test-setting"
    
  3. 取得 API for MongoDB 虛擬核心叢集的資源識別碼。

    az cosmosdb mongocluster show \
        --resource-group $resourceGroupName \
        --cluster-name $clusterName
    
    clusterResourceId=$(az cosmosdb mongocluster show \
        --resource-group $resourceGroupName \
        --cluster-name $clusterName \
        --query "id" \
        --output "tsv" \
    )
    
  4. 取得 Log Analytics 工作區的資源識別碼。

    az monitor log-analytics workspace show \
        --resource-group $resourceGroupName \
        --name $workspaceName
    
    workspaceResourceId=$(az monitor log-analytics workspace show \
        --resource-group $resourceGroupName \
        --name $workspaceName \
        --query "id" \
        --output "tsv" \
    )
    
  5. 使用 az monitor diagnostic-settings create 建立設定。

    az monitor diagnostic-settings create \
        --resource-group $resourceGroupName \
        --name $diagnosticSettingName \
        --resource $clusterResourceId \
        --export-to-resource-specific true \
        --logs '[{category:vCoreMongoRequests,enabled:true,retention-policy:{enabled:false,days:0}}]' \
        --workspace $workspaceResourceId
    

    重要

    藉由啟用 --export-to-resource-specific true 設定,可確保 API for MongoDB 虛擬核心要求記錄事件會有效率地擷取至特別設計了專用結構描述的 vCoreMongoRequests 資料表中。

    相對地,若忽略 --export-to-resource-specific true 設定,將會導致 API for MongoDB 虛擬核心要求記錄事件路由至一般 AzureDiagnostics 資料表。

    請務必注意,透過入口網站建立診斷設定時,記錄事件目前會流向 AzureDiagnostics 資料表。 對於偏好將記錄匯出至資源特定 VCoreMongoRequests 資料表的客戶,建議使用 Azure CLI 搭配 --export-to-resource-specific true 選項。

管理診斷設定

有時,您需要尋找或移除設定來加以管理。 az monitor diagnostic-settings 命令群組包含用來管理診斷設定的子命令。

  1. 列出所有與 API for MongoDB 虛擬核心叢集相關聯的診斷設定。

    az monitor diagnostic-settings list \
        --resource-group $resourceGroupName \
        --resource $clusterResourceId
    
  2. 使用相關聯的資源和設定的名稱,將特定設定刪除。

    az monitor diagnostic-settings delete \
        --resource-group $resourceGroupName \
        --name $diagnosticSettingName \
        --resource $clusterResourceId
    

使用進階診斷查詢

使用這些資源特定查詢,在 API for MongoDB 虛擬核心叢集中執行常見的疑難排解研究。

重要

本節假設您搭配使用 Log Analytics 工作區與資源特定記錄。

  1. 瀏覽至 API for MongoDB 虛擬核心叢集的 [記錄] 區段。 觀察範例查詢的清單。

    Screenshot of the diagnostic queries list of sample queries.

  2. 執行此查詢,以計算依錯誤碼分組的失敗 API for MongoDB 虛擬核心要求數目

    VCoreMongoRequests
    // Time range filter:  | where TimeGenerated between (StartTime .. EndTime)
    // Resource id filter: | where _ResourceId == "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group-name/providers/microsoft.documentdb/mongoclusters/my-cluster-name"
    | where ErrorCode != 0
    | summarize count() by bin(TimeGenerated, 5m), ErrorCode=tostring(ErrorCode)
    
  3. 執行此查詢,以依作業名稱取得 API for MongoDB 虛擬核心要求 P99 執行階段持續時間

    // Mongo vCore requests P99 duration by operation 
    // Mongo vCore requests P99 runtime duration by operation name. 
    VCoreMongoRequests
    // Time range filter:  | where TimeGenerated between (StartTime .. EndTime)
    // Resource id filter: | where _ResourceId == "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group-name/providers/microsoft.documentdb/mongoclusters/my-cluster-name"
    | summarize percentile(DurationMs, 99) by bin(TimeGenerated, 1h), OperationName
    
  4. 執行此查詢,以取得依執行階段持續時間總計分組的 API for MongoDB 虛擬核心要求計數

    // Mongo vCore requests binned by duration 
    // Count of Mongo vCore requests binned by total runtime duration. 
    VCoreMongoRequests
    // Time range filter:  | where TimeGenerated between (StartTime .. EndTime)
    // Resource id filter: | where _ResourceId == "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group-name/providers/microsoft.documentdb/mongoclusters/my-cluster-name"
    | project TimeGenerated, DurationBin=tostring(bin(DurationMs, 5))
    | summarize count() by bin(TimeGenerated, 1m), tostring(DurationBin)
    
  5. 執行此查詢,以依使用者代理程式取得 API for MongoDB 虛擬核心要求計數

    // Mongo vCore requests by user agent 
    // Count of Mongo vCore requests by user agent. 
    VCoreMongoRequests
    // Time range filter:  | where TimeGenerated between (StartTime .. EndTime)
    // Resource id filter: | where _ResourceId == "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group-name/providers/microsoft.documentdb/mongoclusters/my-cluster-name"
    | summarize count() by bin(TimeGenerated, 1h), UserAgent