Azure / Azure/data-api-builder

[Bug]: Critical! No database query trace spans

オープン
#3,560 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
2.x telemetry
主要言語
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

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。