Attempt to instrument mongodb queries#2
Open
johngallagher wants to merge 2 commits into
Open
Conversation
johngallagher
commented
Mar 1, 2025
| @@ -0,0 +1,6 @@ | |||
| class LogEntry | |||
Contributor
Author
There was a problem hiding this comment.
LogEntry is completely arbitrary - just the simplest example I could come up with.
johngallagher
commented
Mar 1, 2025
| span_naming: :job_class | ||
| }, | ||
| "OpenTelemetry::Instrumentation::Mongo" => { | ||
| db_statement: :include |
Contributor
Author
There was a problem hiding this comment.
Turns out this is important. Without this, the instrumentation will substitute ? for attributes.
Just make sure you don't use this on PII information or secrets...
johngallagher
commented
Mar 1, 2025
| end | ||
| end | ||
| attributes | ||
| end |
Contributor
Author
There was a problem hiding this comment.
Recursive function to build up filter.message etc
johngallagher
commented
Mar 1, 2025
| require "opentelemetry/exporter/otlp" | ||
| require "opentelemetry/instrumentation/all" | ||
|
|
||
| class BatchSpanProcessorWithDbStatementFlattening < OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor |
Contributor
Author
There was a problem hiding this comment.
I don't like to subclass generally, but this works. Probably a better way to do this with delegation, but it's just a proof of concept.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
I'm interested in parsing out MongoDB queries to see if we can correlate performance to certain types of query.
How
Add a custom span processor before the span gets to OpenTelemetry.
Subclass the batch span processor but customise it so if the
db.statementattribute is there, it assumes it's in JSON format and parses out all the attributes.Test
In Honeycomb if we hit
/patterns/newwe see:It works!