mcpField
O
otel-fastapi-style

otel-fastapi-style

github.com/superloglabs開発13378 回インストール21 週間前に更新
リポジトリ

otel-fastapi-style について

FastAPI アプリケーションに OpenTelemetry の可観測性を加えるコーディングスキルです。フレームワーク標準の計装を重視し、リクエスト、ログ、LLM トークン指標を扱います。

主な機能

  1. 01FastAPI 標準の計装
  2. 02トラフィック提供前の初期化
  3. 03モジュールスコープのトレースとメトリクス
  4. 04OTLP ログ設定
  5. 05LLM トークン計測の指針

活用シーン

  1. 01FastAPI の受信リクエストを計装
  2. 02業務ヘルパー関数にスパンを追加
  3. 03アプリケーションログの転送設定
  4. 04LLM ルートの入出力トークンを追跡

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/superloglabs/skills --skill otel-fastapi-style

インストール後、Claude Code で/otel-fastapi-styleを入力して読み込まれたか確認します。

詳細

OTel FastAPI スタイル

ネイティブの FastAPI インストルメンテーションを使用してください。スパンを作成するためだけに、リクエスト処理を手動のミドルウェアに置き換えないでください。

from fastapi import FastAPI
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor

def init_observability(app: FastAPI) -> bool:
    ...
    FastAPIInstrumentor.instrument_app(app)
    return True

FastAPIInstrumentor.instrument_app(app) は、残りのオブザーバビリティ設定と一緒に維持し、ブートストラップの動作を把握しやすくしてください。サインアップがまだ進行中で生成されたトークンが未登録の場合でも、プロバイダーを初期化して問題ありません。ブラウザのフローが完了するまでは、取り込み時にエクスポートが拒否されることがあります。

エントリーポイント

ユーザートラフィックを処理する前に初期化してください。

app = FastAPI(title="Mugline API")
init_observability(app)

有界な処理

自動インストルメンテーションされた HTTP スパンでは捕捉できないヘルパーには、モジュールスコープの OTel オブジェクトとデコレーターを使用してください。

tracer = trace.get_tracer("mugline.api")
meter = metrics.get_meter("mugline.api")

@tracer.start_as_current_span("mug.recommend")
async def recommend_mug(*, tenant_id: str, preference: str) -> dict[str, str]:
    span = trace.get_current_span()
    span.set_attribute("tenant.id", tenant_id)
    ...

ログ

OTLP に転送する標準ライブラリのログでは、以下をすべて設定してください。

  • LoggerProvider
  • set_logger_provider(logger_provider)
  • OTLPLogExporter
  • LoggingHandler
  • LoggingInstrumentor().instrument(...)

LLM 呼び出し

LLM のルートでは、トークンを計測する必要があります。

  • llm.tokens.input
  • llm.tokens.output

プロバイダーのインストルメンテーションでトークン使用量を捕捉できない場合に限り、テナント、プロバイダー、モデル、ユースケース、呼び出し元、結果を明示的なトークンカウンターのタグとして設定してください。アプリ側で LLM のコストメトリクスや料金表を追加しないでください。Superlog は、プロバイダー、モデル、トークンのデータからコストを一元的に推定します。

コメント