Published on

How to enable and view logs from Cosmos DB

Table of Contents

Create Log Analytics Workspace

We will export our logs to Log Analytics Workspace so we will need a workspace. If you already have a workspace, then you can skip this section.

Search for Log Analytics workspace and click Create to create a new resource.

Enter the required details and click Review + Create and then Create.

Create workspace

Enable logs from Cosmos DB

In order to export logs from cosmos DB we need to create a Diagnostic setting.

Creating a Diagnostic setting

In your Azure portal, go to Cosmos DB resource and click on the Diagnostic settings menu under the Monitoring section of the sidebar.

Diagnostic Settings

Click on Not now to proceed to the Diagnostic settings page.

Diagnostic Settings Page

On this page, click on the + Add diagnostic setting button.

Add Diagnostic Setting

Here we will configure how we want to export cosmos db logs.

First, enter a name for the diagnostic setting. We can have multiple diagnostic settings with different configurations.

Next, we have to select categories. Basically each category represents a different kind of log being exported.

Create Diagnostic setting
CategoryDescription
DataPlaneRequestsLogs all operations related to creation, updation, deletion or retrieval of data.
QueryRuntimeStatisticsLogs query text, container name, database name etc.
ControlPlaneRequestsLogs information regarding account level operations
MongoRequests,CassandraRequests,GremlinRequests,TableApiRequestsChoose this option if you are using any of this database API. Make sure DataPlaneRequests are disabled when you are using one of them.
PartitionKeyStatistics, PartitionKeyRUConsumptionLogs statistics regarding partition keys.

In our case, we only need DataPlaneRequests and QueryRuntimeStatistics.

Choose Destination as the Log Analytics workspace which we created.

Select, Destination table as Resource specific.

Click on Save and our Diagnostic setting will be created.

But that’s not it, we need to take one more step. Reopen the Diagnostic setting page and this time click on Go to features and enable button.

You will see that Diagnostics full-text query is set to off. Click on it and enable it. By default a query is not exported to logs but by enabling this option queries will also be exported.

Enable full text query

Now we are all set.

View Cosmos DB logs

Go to your Log Analytics Workspace and then from the sidebar click on Logs. Under the Tables tab expand LogManagement, there you will see table names starting with CDB. These all are Cosmos specific tables and all logs are stored in these tables.

Log Tables

You can expand the tables to view all the columns inside the tables.

List all queries executed in last 24 hours

CDBQueryRuntimeStatistics
| where TimeGenerated > ago(24h)
| project TimeGenerated, CollectionName, QueryText
| order by TimeGenerated desc 
Past Queries

List top 10 queries which consumes the most RUs

CDBQueryRuntimeStatistics
| where TimeGenerated > ago(24h)
| join kind=inner (
    CDBDataPlaneRequests
    | project RequestCharge, ActivityId
) on $left.ActivityId == $right.ActivityId
| distinct RequestCharge, QueryText
| order by RequestCharge desc 
| limit 10
RU consuming queries

View all queries which are taking more than 1 second to execute

CDBQueryRuntimeStatistics
| where TimeGenerated > ago(10d)
| join kind=inner (
    CDBDataPlaneRequests
    | project DurationMs, ActivityId
) on $left.ActivityId == $right.ActivityId
| where DurationMs > 1000
| distinct DurationMs, QueryText
| order by DurationMs desc 
Time taking queries

Conclusion

In conclusion, this blog post provided a step-by-step guide on how to enable and view logs from Cosmos DB. The process involved creating a Log Analytics Workspace, enabling logs from Cosmos DB by creating a Diagnostic setting. The blog also shared example queries for listing executed queries in the last 24 hours, identifying the top 10 queries consuming the most RUs, and finding queries taking more than 1 second to execute. By following this guide, users can effectively monitor and analyze the logs from their Cosmos DB deployment.