Logfire と連携する¶
Logfire と連携するときもダッシュボードから操作するだけ。アプリに Logfire のプロジェクトをつなぐと、そのプロジェクトの書き込みトークンを LOGFIRE_TOKEN 環境変数としてアプリに注入してくれる。 Logfire でやった logfire auth や logfire projects new でのトークンの準備は不要(FastAPI Cloud がやってくれる)。
FastAPI Cloud にアプリのデプロイが完了してる前提で
Logfire で作ったアプリを fastapi deploy でデプロイした状態から始める。
アプリ詳細の Integrations タブを開いて、 Connect Integration を押す。

Add Integration のダイアログが開くので、 Logfire を選ぶ。

初回はここで Logfire 側の認可画面がブラウザで開く。 FastAPI Cloud と繋ぐアカウントとプロジェクトを選んで Approve する。

認可すると FastAPI Cloud に戻って Connect to Logfire が開く。つなぐ Logfire プロジェクトを選ぶ。既存の logfire-test を選んでもいいし、新しいプロジェクト名を入れて Create で作ってもいい。

最後に Configure Logfire で、注入される環境変数名を確認する。 Logfire の書き込みトークンは LOGFIRE_TOKEN っていう名前で渡される。 Connect and Redeploy を押すと、連携が設定されて再デプロイが走る。

これで LOGFIRE_TOKEN がアプリの環境変数に入る。 Logfire の main.py はそのままでもよくて、 send_to_logfire="if-token-present" がこのトークンを見つけてクラウドに送信する。
Found propagated trace context の警告
デプロイして Logfire を見ると警告が出てた。
Found propagated trace context. See https://logfire.pydantic.dev/docs/how-to-guides/distributed-tracing/#unintentional-distributed-tracing.
FastAPI Cloud のようにアプリの前段にプロキシやロードバランサがいると、外から来たリクエストにトレースコンテキスト(traceparent ヘッダーなど)が付いてくることがある。 Logfire がそれを分散トレーシングとして拾って、本来別々のリクエストが 1 つのトレースにつながってしまう: cf. Unintentional distributed tracing - Logfire
logfire.configure() に distributed_tracing=False を渡すと、この伝播を無視するようになって警告も消える。
そもそも分散トレーシングとは? by Claude Opus 4.8
分散トレーシングは、複数のサービスにまたがるリクエストを 1 本のトレースにまとめる仕組み。呼び出し元がリクエストヘッダー(traceparent)にトレースコンテキストを載せ、呼ばれた側がそれを引き継いで同じトレースの span を作ることで実現する。
今回は自分で分散トレーシングをしてるわけじゃなく、アプリの前段にいる FastAPI Cloud 基盤のプロキシが traceparent を付けてくるのが原因。意図せず「上流トレースの続き」扱いになる(放っておくとバラバラなリクエストが 1 つの巨大トレースに合体する)ので警告が出る。 distributed_tracing=False は入ってくるコンテキストを取り込まない設定なので、各リクエストが独立したトレースになって警告も消える。