使用 Azure Monitor 监视 Azure DocumentDB 诊断日志

Azure 的诊断日志对于捕获 Azure DocumentDB 帐户的 Azure 资源日志至关重要。 这些日志提供了有关操作与帐户相关的资源的频繁且详细的见解。

重要

此功能不适用于计算层M30、较低层级或免费层级的SKU。

先决条件

  • Azure 订阅服务

    • 如果没有 Azure 订阅,请创建 试用版
  • 现有的 Azure DocumentDB 群集

  • 现有的 Log Analytics 工作区或 Azure 存储帐户。

创建诊断设置

平台指标和活动日志会自动收集。 若要收集资源日志并从 Azure Monitor 外部路由这些日志,必须建立诊断设置。 若要了解如何作,请参阅 在 Azure Monitor 中创建诊断设置

管理诊断设置

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

  1. 列出与群集 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 中执行常见的故障排除研究。

重要

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

  1. 导航到群集 API 的 “日志 ”部分。 查看示例查询列表。

    诊断查询的示例查询列表屏幕截图。

  2. 运行此查询以 计算按错误代码分组的请求失败的 API 数

    VCoreMongoRequests
    // Time range filter:  | where TimeGenerated between (StartTime .. EndTime)
    // Resource id filter: | where _ResourceId == "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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. 运行此查询以按操作名称获取请求运行时持续时间的 APIP99

    // Mongo requests P99 duration by operation 
    // Mongo requests P99 runtime duration by operation name. 
    VCoreMongoRequests
    // Time range filter:  | where TimeGenerated between (StartTime .. EndTime)
    // Resource id filter: | where _ResourceId == "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group-name/providers/microsoft.documentdb/mongoclusters/my-cluster-name"
    | summarize percentile(DurationMs, 99) by bin(TimeGenerated, 1h), OperationName
    
  4. 运行此查询以获取 按总运行时持续时间分组的请求的 API 计数

    // Mongo requests binned by duration 
    // Count of Mongo requests binned by total runtime duration. 
    VCoreMongoRequests
    // Time range filter:  | where TimeGenerated between (StartTime .. EndTime)
    // Resource id filter: | where _ResourceId == "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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 计数

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