你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure Monitor 监视 Azure Cosmos DB for MongoDB vCore 诊断日志

适用对象: MongoDB vCore

Azure 的诊断日志对于捕获 Azure Cosmos DB for MongoDB vCore 帐户的 Azure 资源日志至关重要。 这些日志会频繁且详细提供对该帐户的资源操作的洞察。

重要

此功能不适用于 M25(可突发)或 M30(免费层)SKU。

先决条件

创建诊断设置

会自动收集平台指标和活动日志。 若要收集资源日志并从 Azure Monitor 外部路由这些日志,必须建立诊断设置。 激活 Azure Cosmos DB 帐户的诊断设置时,必须选择将其路由到 Log Analytics 工作区或 Azure 存储帐户。

  1. clusterNameresourceGroupName 创建 shell 变量。

    # Variable for API for MongoDB vCore cluster resource
    clusterName="<resource-name>"
    
    # Variable for resource group
    resourceGroupName="<resource-group-name>"
    
  2. workspaceNamediagnosticSettingName 创建 shell 变量,

    # 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 vCore 群集的资源标识符。

    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 vCore 请求日志事件有效地引入 vCoreMongoRequests 表中,该表专门设计了一个专用架构。

    相比之下,忽略配置 --export-to-resource-specific true 会导致 API for MongoDB vCore 请求日志事件路由到常规的 AzureDiagnostics 表。

    请务必注意,通过门户创建诊断设置时,日志事件当前将流向 AzureDiagnostics 表。 对于希望将日志导出到特定于资源的 VCoreMongoRequests 表的客户,建议使用具有 --export-to-resource-specific true 选项的 Azure CLI。

管理诊断设置

有时你需要通过查找或删除设置来管理设置。 az monitor diagnostic-settings 命令组包括用于管理诊断设置的子命令。

  1. 列出与用于 MongoDB vCore 群集的 API 关联的所有诊断设置。

    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 vCore 群集中执行常见的故障排除研究。

重要

本节假定你使用的是具有特定于资源的日志的 Log Analytics 工作区。

  1. 导航到 API for MongoDB vCore 群集的“日志”部分。 观察示例查询的列表。

    Screenshot of the diagnostic queries list of sample queries.

  2. 运行此查询以统计失败的 MongoDB vCore API 请求数(按错误代码分组)

    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. 运行此查询,按操作名称 获取用于 MongoDB vCore 的 API 请求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. 运行此查询以获取按总运行时持续时间分组的 MongoDB vCore 请求的 API 计数

    // 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 vCore 请求的数量

    // 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