CosmosDB 是否有一种固有的方式来记录 CRUD 请求?

Does CosmosDB have an inherent way to log CRUD requests?

我试图查明 CosmosDB 是否有任何可用作审计日志的内置功能,即现有的 Azure diagnostic/monitoring 功能之一记录了对数据库的特定更改,包括JSON 数据写入。

这是否存在,还是我必须自己编写?

目前为止我发现的最接近的是诊断日志记录,其中包含很多信息,但没有实际写入、更改或删除的内容。

根据官方doc,你提到的azure cosmos db中的Diagnostic logging可以记录DataPlaneRequestsMongoRequestsMetric Requests,但是,有没有这样的信息表示对数据库、集合、文档等的具体更改

所以,我建议你深入研究 azure cosmos 中的 change feed db.It 内置于 Azure Cosmos DB 中,使我们能够捕获对我们的集合所做的所有更改,而无需考虑到系统所做的工作,change.You 可以通过三种不同的方式读取更改提要:

1.Using Azure Functions

请在 Azure Functions 应用程序中创建 Azure Cosmos DB 触发器,您 select 要连接到的 Azure Cosmos DB 集合,每当对集合进行更改时都会触发该函数。

2.Using Azure Cosmos DB SDK

foreach (PartitionKeyRange pkRange in partitionKeyRanges){
    string continuation = null;
    checkpoints.TryGetValue(pkRange.Id, out continuation);
    IDocumentQuery<Document> query = client.CreateDocumentChangeFeedQuery(
        collectionUri,
        new ChangeFeedOptions
        {
            PartitionKeyRangeId = pkRange.Id,
            StartFromBeginning = true,
            RequestContinuation = continuation,
            MaxItemCount = -1,
            // Set reading time: only show change feed results modified since StartTime
            StartTime = DateTime.Now - TimeSpan.FromSeconds(30)
        });
    while (query.HasMoreResults)
        {
            FeedResponse<dynamic> readChangesResponse = query.ExecuteNextAsync<dynamic>().Result;

            foreach (dynamic changedDocument in readChangesResponse)
                {
                     Console.WriteLine("document: {0}", changedDocument);
                }
            checkpoints[pkRange.Id] = readChangesResponse.ResponseContinuation;
        }
}

3.Using the Azure Cosmos DB change feed processor library

希望对您有所帮助。