OpenTelemetry metrics support#824
Open
tewbo wants to merge 30 commits into
Open
Conversation
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.
Pull request type
Please check the type of change your PR introduces:
What is the current behavior?
The SDK supports OpenTelemetry tracing, but it does not expose client-side OpenTelemetry metrics for YDB operations, retries, or query session pools.
What is the new behavior?
This PR adds OpenTelemetry metrics support for the YDB Python SDK.
Added metrics include:
db.client.operation.durationfor client operation latencyydb.client.operation.failedfor failed client operationsydb.query.session.create_timefor query session creation latencyydb.query.session.pending_requestsfor session pool wait queue sizeydb.query.session.timeoutsfor session acquisition timeoutsydb.query.session.countfor current session pool state byidle/usedydb.query.session.maxfor configured session pool sizeydb.client.retry.durationfor total retry operation durationydb.client.retry.attemptsfor number of retry attempts per logical operationThe public OpenTelemetry API now includes:
enable_metrics(meter_provider=None)disable_metrics()Metrics are independent from tracing, but both can be enabled together. YDB operation telemetry now uses a composite operation object so tracing spans and metrics can be recorded for the same SDK operation without adding an extra span level.
This PR also updates the OpenTelemetry example to export both traces and metrics through OTLP, and documents the metrics setup, emitted instruments, and metric attributes.
Other information
The OpenTelemetry tests were moved from
tests/tracingtotests/opentelemetry, and metrics tests were added using OpenTelemetry SDK in-memory metric readers.