Azure / Azure/data-api-builder
[Bug]: Critical! No database query trace spans
- 主要言語
- C#
- スター
- 1.5k
- フォーク
- 370
- 平均マージ
- 3日 22時間
- マージ済み PR(30日)
- 9
説明
SQL queries are logged at debug level (visible in OTEL logs and file telemetry) but are never emitted as trace spans. There is no way to see database latency in a trace waterfall or correlate slow queries back to the HTTP request that triggered them.
## Expected
Each SQL query should produce a child span under the parent HTTP request span, following the [OTEL database semantic conventions](https://opentelemetry.io/docs/specs/semconv/database/):
```
[Server] GET /api/Todo ── 220ms
└─ [Client] SELECT ... FROM dbo.Todo ── 18ms
db.system = mssql
db.name = TodoDb
db.statement = SELECT TOP 101 [dbo_Todo].[id] ...
```
This is standard for .NET apps using `AddSqlClientInstrumentation()`.
## Actual
SQL queries only appear in debug-level OTEL logs, not as trace spans:
```
InstrumentationScope Azure.DataApiBuilder.Core.Resolvers.IQueryExecutor
LogRecord #1
Body: Str( Executing query: SELECT TOP 101 [dbo_Todo].[id] AS [id], ...)
```
Zero `db.system: mssql` spans exist. The `TracerProvider` does not register `AddSqlClientInstrumentation()`.
コントリビューションガイド
調査の方向性
まず、TracerProvider のセットアップと Azure.DataApiBuilder.Core.Resolvers.IQueryExecutor のクエリパスを追跡します。この issue では、AddSqlClientInstrumentation() の登録が不足していることが示されています。出力されたテレメトリを OTEL のデータベースセマンティック規約と比較し、SQL の実行によって、mssql、データベース名、ステートメントの属性を持つ子 span が HTTP span 配下に生成されることを確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- csharp, sql
- 領域
- backend-api-design, databases, observability
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 静か
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 63/100