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

适用于: SQL API Cassandra API Gremlin API 表 API Azure Cosmos DB API for MongoDB

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

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

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

备注

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

使用 Azure 门户进行创建

  1. 登录到 Azure 门户

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

  3. 在“诊断设置”窗格中,使用你的首选类别填充表单。

选择日志类别

Category API 定义 键属性
DataPlaneRequests 所有 API 将后端请求记录为数据平面操作,这些操作是所执行的用于在帐户中创建、更新、删除或检索数据的请求。 Requestcharge, statusCode, clientIPaddress, partitionID, resourceTokenPermissionId resourceTokenPermissionMode
MongoRequests Mongo 记录用户从前端发起的请求,这些请求的内容是要求处理发送给 Azure Cosmos DB API for MongoDB 的请求。 启用此类别时,请确保禁用 DataPlaneRequests。 Requestcharge, opCode, retryCount, piiCommandText
CassandraRequests Cassandra 记录用户从前端发起的请求,这些请求的内容是要求处理发送给 Azure Cosmos DB API for Cassandra 的请求。 启用此类别时,请确保禁用 DataPlaneRequests。 operationName, requestCharge, piiCommandText
GremlinRequests Gremlin 记录用户从前端发起的请求,这些请求的内容是要求处理发送给 Azure Cosmos DB API for Gremlin 的请求。 启用此类别时,请确保禁用 DataPlaneRequests。 operationName, requestCharge, piiCommandText, retriedDueToRateLimiting
QueryRuntimeStatistics SQL 下表详细说明了对 SQL API 帐户执行的查询操作。 默认情况下,会对查询文本及其参数进行模糊处理,以免记录其全文查询日志记录可以通过请求来获取的 PII 数据。 databasename, partitionkeyrangeid, querytext
PartitionKeyStatistics 所有 API 通过表示分区键的存储大小 (KB),记录逻辑分区键的统计信息。 此表可用于排查存储倾斜问题。 subscriptionId, regionName, partitionKey, sizeKB
PartitionKeyRUConsumption SQL API 记录分区键的每秒 RU 消耗量聚合值。 此表可用于排查热分区问题。 目前,Azure Cosmos DB 仅报告 SQL API 帐户的分区键,以及时点读取/写入和存储过程操作。 subscriptionId, regionName, partitionKey, requestCharge, partitionKeyRangeId
ControlPlaneRequests 所有 API 记录有关控制平面操作的详细信息,即创建帐户、添加或删除区域、更新帐户复制设置之类的信息。 operationName, httpstatusCode, httpMethod, region
TableApiRequests 表 API 记录用户从前端发起的请求,这些请求的内容是要求处理发送给 Azure Cosmos DB API for Table 的请求。 启用此类别时,请确保禁用 DataPlaneRequests。 operationName, requestCharge, piiCommandText

通过 REST API 创建诊断设置

使用 Azure Monitor REST API 通过交互式控制台创建诊断设置。

备注

如果使用的是 SQL API,建议将 logAnalyticsDestinationType 属性设置为 Dedicated 以启用特定于资源的表。

请求

PUT
https://management.chinacloudapi.cn/{resource-id}/providers/microsoft.insights/diagnosticSettings/service?api-version={api-version}

头文件

参数/标头 值/说明
name 你的诊断设置的名称。
resourceUri subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP}/providers/Microsoft.DocumentDb/databaseAccounts/{ACCOUNT_NAME}/providers/microsoft.insights/diagnosticSettings/{DIAGNOSTIC_SETTING_NAME}
api-version 2017-05-01-preview
Content-Type application/json

正文

{
    "id": "/subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP}/providers/Microsoft.DocumentDb/databaseAccounts/{ACCOUNT_NAME}/providers/microsoft.insights/diagnosticSettings/{DIAGNOSTIC_SETTING_NAME}",
    "type": "Microsoft.Insights/diagnosticSettings",
    "name": "name",
    "location": null,
    "kind": null,
    "tags": null,
    "properties": {
        "storageAccountId": null,
        "serviceBusRuleId": null,
        "workspaceId": "/subscriptions/{SUBSCRIPTION_ID}/resourcegroups/{RESOURCE_GROUP}/providers/microsoft.operationalinsights/workspaces/{WORKSPACE_NAME}",
        "eventHubAuthorizationRuleId": null,
        "eventHubName": null,
        "logs": [
            {
                "category": "DataPlaneRequests",
                "categoryGroup": null,
                "enabled": true,
                "retentionPolicy": {
                    "enabled": false,
                    "days": 0
                }
            },
            {
                "category": "QueryRuntimeStatistics",
                "categoryGroup": null,
                "enabled": true,
                "retentionPolicy": {
                    "enabled": false,
                    "days": 0
                }
            },
            {
                "category": "PartitionKeyStatistics",
                "categoryGroup": null,
                "enabled": true,
                "retentionPolicy": {
                    "enabled": false,
                    "days": 0
                }
            },
            {
                "category": "PartitionKeyRUConsumption",
                "categoryGroup": null,
                "enabled": true,
                "retentionPolicy": {
                    "enabled": false,
                    "days": 0
                }
            },
            {
                "category": "ControlPlaneRequests",
                "categoryGroup": null,
                "enabled": true,
                "retentionPolicy": {
                    "enabled": false,
                    "days": 0
                }
            }
        ],
        "logAnalyticsDestinationType": "Dedicated"
    },
    "identity": null
}

通过 Azure CLI 创建诊断设置

通过 Azure CLI 使用 az monitor diagnostic-settings create 命令创建诊断设置。 有关参数说明,请参阅此命令的文档。

备注

如果使用的是 SQL API,建议将 export-to-resource-specific 属性设置为 true。

az monitor diagnostic-settings create --resource /subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP}/providers/Microsoft.DocumentDb/databaseAccounts/ --name {DIAGNOSTIC_SETTING_NAME} --export-to-resource-specific true --logs '[{"category": "QueryRuntimeStatistics","categoryGroup": null,"enabled": true,"retentionPolicy": {"enabled": false,"days": 0}}]' --workspace /subscriptions/{SUBSCRIPTION_ID}/resourcegroups/{RESOURCE_GROUP}/providers/microsoft.operationalinsights/workspaces/{WORKSPACE_NAME}"

后续步骤