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

使用 Azure 中的诊断设置监视 Azure Cosmos DB 数据

适用对象: NoSQL MongoDB Cassandra Gremlin

Azure 中的诊断设置用于收集资源日志。 资源发出 Azure 资源日志,并提供与该资源操作相关的各种频繁生成的数据。 这些日志是按请求捕获的,也称为“数据平面日志”。部分数据平面操作的示例包括 delete、insert 和 readFeed。 这些日志的内容因资源类型而异。

平台指标和活动日志是自动收集的;必须创建一个诊断设置才能收集资源日志,或在 Azure Monitor 外部转发这些日志。 可以打开 Azure Cosmos DB 帐户的诊断设置,并将资源日志发送到以下源:

  • Log Analytics 工作区
    • 发送到 Log Analytics 的数据可以写入到 Azure 诊断(旧版)或特定于资源的(预览版)表中
  • 事件中心
  • 存储帐户

注意

我们建议按照通过 REST API 创建诊断设置的说明,在特定于资源的模式下(适用于除表 API 外的所有 API)创建诊断设置。 此选项通过改进的数据处理视图提供了额外的成本优化。

先决条件

创建诊断设置

我们将在此演练为帐户创建诊断设置的过程。

  1. 登录 Azure 门户

  2. 导航到 Azure Cosmos DB 帐户。 打开“监视”部分下的“诊断设置”窗格,然后选择“添加诊断设置”选项

    Sreenshot of the diagnostics selection page.

    重要

    如果帐户未启用“全文查询”功能,你可能会看到“启用全文查询 […] 以获取更详细的日志记录”提示。 如果不希望启用此功能,可以放心地忽略此警告。 有关详细信息,请参阅启用全文查询

  3. 在“诊断设置”窗格中,用你喜欢的类别填充窗体。 此处包含日志类别列表。

    类别 API 定义 键属性
    DataPlaneRequests 建议用于 API for NoSQL 将后端请求(为了创建、更新、删除或检索帐户中的数据而执行的请求)记录为数据平面操作。 RequestchargestatusCodeclientIPaddresspartitionIDresourceTokenPermissionIdresourceTokenPermissionMode
    MongoRequests 适用于 MongoDB 的 API 记录来自前端的由用户发起的请求,以处理发送到 Azure Cosmos DB for MongoDB 的请求。 在启用此类别时,请确保禁用 DataPlaneRequests。 RequestchargeopCoderetryCountpiiCommandText
    CassandraRequests API for Apache Cassandra 记录来自前端的由用户发起的请求,以处理发送到 Azure Cosmos DB for Cassandra 的请求。 operationNamerequestChargepiiCommandText
    GremlinRequests API for Apache Gremlin 记录来自前端的由用户发起的请求,以处理发送到 Azure Cosmos DB for Gremlin 的请求。 operationNamerequestChargepiiCommandTextretriedDueToRateLimiting
    QueryRuntimeStatistics API for NoSQL 此表详细介绍了针对 NoSQL API 帐户执行的查询操作。 默认情况下,会对查询文本及其参数进行模糊处理,以免记录个人数据以及可以通过请求访问的全文查询日志记录。 databasenamepartitionkeyrangeidquerytext
    PartitionKeyStatistics 所有 API 通过表示分区键的估计存储大小 (KB) 来记录逻辑分区键的统计信息。 此表在排查存储倾斜的问题时非常有用。 仅当满足以下条件时才发出此 PartitionKeyStatistics 日志:1。 物理分区中至少有 1% 的文档具有相同的逻辑分区键。 2. 在物理分区的所有键中,PartitionKeyStatistics 日志会捕获存储大小最大的前三个键。 如果不符合上述条件,分区键统计数据将不可用。 如果你的帐户不满足上述条件,也没关系,这通常表明你没有逻辑分区存储偏差。 注意:使用采样方法计算分区键的估计大小,该方法假定物理分区中的文档的大小大致相同。 如果物理分区中的文档的大小不一致,则估计的分区键大小可能不准确。 subscriptionIdregionNamepartitionKeysizeKB
    PartitionKeyRUConsumption API for NoSQL 或用于 Apache Gremlin 的 API 记录分区键的每秒 RU 聚合消耗量。 此表对于排查热分区的问题很有用。 目前,Azure Cosmos DB 仅报告 NoSQL API 帐户的分区键,以及点读取/写入、查询和存储过程操作。 subscriptionIdregionNamepartitionKeyrequestChargepartitionKeyRangeId
    ControlPlaneRequests 所有 API 记录有关控制平面操作(包括创建帐户、添加或删除区域、更新帐户复制设置等)的详细信息。 operationNamehttpstatusCodehttpMethodregion
    TableApiRequests API for Table 记录来自前端的由用户发起的请求,以处理发送到 Azure Cosmos DB for Table 的请求。 operationNamerequestChargepiiCommandText
  4. 选择“类别详细信息”后,将日志发送到首选目标。 如果要将日志发送到“Log Analytics 工作区”,请确保选择“特定于资源”作为目标表 。

    Screenshot of the option to enable resource-specific diagnostics.

启用日志记录查询文本的全文查询功能

注意

启用此功能可能会产生额外的日志记录成本,有关定价详细信息,请访问 Azure Monitor 定价。 建议在故障排除后禁用此功能。

Azure Cosmos DB 提供高级日志记录以进行详细的故障排除。 启用全文查询功能后,你将能够查看 Azure Cosmos DB 帐户中所有请求的已取消模糊处理的查询。 你还将为 Azure Cosmos DB 提供权限,以访问并在日志中显示此数据。

  1. 若要启用此功能,请导航到 Azure Cosmos DB 帐户中的 Features 页。

    Screenshot of the navigation process to the Features page.

  2. 选择Enable。 此设置将在几分钟内应用。 所有新引入的日志都具有每个请求的全文或 PIICommand 文本。

    Screenshot of the full-text feature being enabled.

查询数据

若要了解如何使用这些新启用的功能进行查询,请参阅:

后续步骤