Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Support CosmosDb dependency tracking#2635

Merged
cijothomas merged 14 commits into
microsoft:mainfrom
lmolkova:cosmos-poc
Oct 25, 2022
Merged

Support CosmosDb dependency tracking#2635
cijothomas merged 14 commits into
microsoft:mainfrom
lmolkova:cosmos-poc

Conversation

@lmolkova

@lmolkova lmolkova commented Jul 22, 2022

Copy link
Copy Markdown

Cosmos DB SDK (Microsoft.Azure.Cosmos v3.TODO now supports dependency tracking, even when used in Direct (TCP) mode.

You should see DependencyTelemetry reported for all public API calls (that involve network communication with the service). If you use Gateway (HTTP) mode, you would also see dependencies for underlying HTTP calls. For Direct calls, you might see a few nested HTTP dependencies too, but low-level TCP calls are not traced.

Attributes reported by Cosmos SDK can be found here: Azure/azure-cosmos-dotnet-v3#3058. They are populated as custom dimensions.

New dependencies tracing public API calls should have:

  • Target following {CosmosDB resource name} | {database name} pattern, e.g. cosmos-tracing-demo | my-store.
  • Name follows {container name} | {operation} pattern, e.g. orders | Read
  • Type matches Resource Provider namespace (Microsoft.DocumentDB)
  • And sdkversion matches rdddsaz.

You can enable distributed tracing for Cosmos with the following API: TODO, add a link to cosmos docs.

In addition to dependency calls, Cosmos DB reports extensive diagnostics when an operation fails or takes too long. You can configure it with the following settings on the Cosmos DB client - TODO.
This diagnostics is sent as a log (TraceTelemetry) with Warning severity having CosmosDiagnostics as JSON in the message. You can identify it using EventName (in custom dimensions) with the RecordDiagnosticsForRequests value.
Such TraceTelemetry should be a child of Cosmos DB dependency telemetry described above.

Changes

CosmosDB direct (TCP mode) dependency tracking (coming in future versions of Cosmos DB v3 SDK).
Uses attributes outlined here and additional cosmos diagnostics is coming from the specific event source and is tracked as TraceTelemetry.

EventSource verbosity is expected to be low - it will be controlled by CosmosDb customers on CosmosDb side. Cosmos would write it when an operation takes longer than a configurable threshold or when an error happens.

Checklist

  • CHANGELOG.md updated with one line description of the fix, and a link to the original issue if available.

Notes for reviewers:

  • We support comment build triggers
    • /AzurePipelines run will queue all builds
    • /AzurePipelines run <pipeline-name> will queue a specific build

@lmolkova

Copy link
Copy Markdown
Author

/cc @sourabh1007

@sourabh1007

sourabh1007 commented Jul 28, 2022

Copy link
Copy Markdown

Why PR headline talk about Cosmos DB "Direct Mode"? is it connection mode specific changes?

@lmolkova lmolkova changed the title [WIP] Support CosmosDb direct mode dependency tracking [WIP] Support CosmosDb dependency tracking Jul 29, 2022
@sourabh1007

sourabh1007 commented Sep 23, 2022

Copy link
Copy Markdown

Events are loosing diagnostics message while listened by appinsight..below is the log I got

Application Insights Telemetry: {"name":"AppTraces","time":"2022-09-23T17:42:26.1395222Z","iKey":"2fabff39-6a32-42da-9e8f-9fcff7d99c6b","tags":{"ai.application.ver":"1.0.0.0","ai.cloud.roleInstance":"DESKTOP-I8MO142","ai.operation.id":"2239023b88bb44b60eab840e1983cded","ai.operation.parentId":"80155111011166ad","ai.internal.sdkVersion":"dotnetc:2.22.0-14","ai.internal.nodeName":"DESKTOP-I8MO142"},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"n/a","severityLevel":"Warning","properties":{"EventName":"WriteWarningEvent","EventId":"2","AspNetCoreEnvironment":"Development","DeveloperMode":"true","CategoryName":"Azure.Cosmos"}}}}

Cosmosdb SDK doesn't send n/a.

@lmolkova

Copy link
Copy Markdown
Author

Events are loosing diagnostics message while listened by appinsight..below is the log I got

Fixed, please check

@sourabh1007

sourabh1007 commented Sep 27, 2022

Copy link
Copy Markdown

with latest changes, things are looking good except one minor thing i.e. I am seeing cosmosdb text instead of cosmosdb icon (like we were getting previously)

image

@lmolkova

Copy link
Copy Markdown
Author

with latest changes, things are looking good except one minor thing i.e. I am seeing cosmosdb text instead of cosmosdb icon (like we were getting previously)

for this we need portal team to support Azure CosmosDB (in addition to DocumentDB) - there is nothing I can do on SDK side

@sourabh1007

Copy link
Copy Markdown

with latest changes, things are looking good except one minor thing i.e. I am seeing cosmosdb text instead of cosmosdb icon (like we were getting previously)

for this we need portal team to support Azure CosmosDB (in addition to DocumentDB) - there is nothing I can do on SDK side

but previously this icon was coming. in this latest package only it is not showing up

@lmolkova lmolkova changed the title [WIP] Support CosmosDb dependency tracking Support CosmosDb dependency tracking Oct 19, 2022
@lmolkova lmolkova marked this pull request as ready for review October 19, 2022 18:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants