Langflow に Traceloop を組み込んで Instana にトレース可視化してみた

2025年6月時点で、InstanaメンバーがLangflow に Traceloop による OpenTelemetry トレース対応を追加する Pull Request #8209 が提出されたが、まだ main ブランチにはマージされていませんので、今回はこの PR を手動でマージして Langflow + Traceloop + Instana によるトレース可視化を検証してみました。

[https://github.com/langflow-ai/langflow/pull/8209](https://github.com/langflow-ai/langflow/pull/8209)

---

##  Langflowとは？

Langflow は、LangChain の各種ノード（LLM, Prompt, Tool, Agent 等）をビジュアルに構成できるノーコード/ローコード型のワークフロー設計ツールです。

* Python不要でLangChainアプリケーション構築が可能
* ノードベースのフロー定義、リアルタイム実行
* OpenAI/Anthropic/Geminiなど各種LLMに対応
* フロントエンド（React） + バックエンド（FastAPI）構成

今回の目的は、この Langflow 上で実行されたワークフローを OpenTelemetry 経由で Instana に可視化することです。

---

##  1. Langflow をクローンして PR #8209 を適用

```bash
git clone https://github.com/langflow-ai/langflow.git
cd langflow
git fetch origin pull/8209/head:pr-8209-traceloop
git checkout pr-8209-traceloop
```

---

## 2. Langflow をローカルでビルド & 開発環境構築（uv）

```bash
uv venv
source .venv/bin/activate

uv pip install -e .
```

続いてフロントエンドのビルド：

```bash
cd src/frontend
npm install
npm run build
```

ビルド後、UI をバックエンドにコピー（重要のステップ）：

```bash
cd ../..
mkdir -p src/backend/base/langflow/frontend
cp -r src/frontend/build/* src/backend/base/langflow/frontend/
```


## 3. OTEL 環境変数を設定（Traceloop or Instana）

Agentless で Instana SaaS へ直接送る場合：

```bash
export OTEL_SERVICE_NAME="LangflowOTELServiceJacky"
export OTEL_EXPORTER_OTLP_ENDPOINT="https://otlp-orange-saas.instana.io:4317"
export OTEL_EXPORTER_OTLP_HEADERS="x-instana-key=XXXXInstantaAgentKeyXXXX"
```

Agent 経由で送信する場合：

```bash
export OTEL_SERVICE_NAME="LangflowOTELServiceJacky"
export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4317"
export OTEL_EXPORTER_OTLP_HEADERS="x-instana-key=XXXXInstantaAgentKeyXXXX"
export OTEL_EXPORTER_OTLP_INSECURE=True
```

Traceloop に送信したい場合は、下記を併用(設定なくても大丈夫)：

```bash
export TRACELOOP_API_KEY="tl_xxx"
```

---

##  4. Langflow を起動

```bash
uv run langflow run
```

起動すると以下のようなメッセージが表示されます：

```
│ Welcome to Langflow                                                    │
│                                                                        │
│  🌟 GitHub: Star for updates → https://github.com/langflow-ai/langflow  │
│  💬 Discord: Join for support → https://discord.com/invite/EqksyE2EX9   │
│                                                                        │
│  We collect anonymous usage data to improve Langflow.                  │
│  To opt out, set: DO_NOT_TRACK=true in your environment.               │
│                                                                        │
│  🟢 Open Langflow → http://127.0.0.1:7860       
```

---

##  5. ブラウザから Langflow UI にアクセスし、Agent を作成

[http://localhost:7860](http://localhost:7860) 
にアクセスし、以下のような簡単な Agent を作成：
![Screenshot 2025-06-11 at 17.54.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629252/1fbff14f-be42-4c3f-83be-c60dfea0688d.png)

Agent の設定を保存し、Playground から共有リンクを生成することもできます。
下記のようにプロンプトをいれて実行してみます：
```
AI Agentとは？
```
![Screenshot 2025-06-11 at 17.55.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629252/8242fbbd-c64f-4384-87c1-3500ccfbbb07.png)

---

## 6. 実行結果：Instana でトレースを可視化

🖥️ Instana UI の表示手順：
1. Instana にログイン（[https://portal.instana.io](https://portal.instana.io) など）
2. メニューから「アプリケーション」 → 「サービス」へ
3. 「LangflowOTELServiceJacky」を選択
4. 「呼び出しの分析」で各トレースの詳細を確認
図１：
![Screenshot 2025-06-11 at 17.50.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629252/2d1ccb7d-242f-4724-8b39-acb4c81d1ea5.png)


図２：
![Screenshot 2025-06-11 at 17.49.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629252/b796e4cc-5f91-4946-b8d2-86e33ba4f820.png)


図３：
![Screenshot 2025-06-11 at 18.14.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629252/d9609b8b-1aec-4322-ae0d-13703c84632f.png)


##  まとめ
Langflow を可視化することで、非エンジニアでも「どのノードで処理が遅れているか」「LLMの入力と出力は何か」を直感的に把握できるようになります。
Observability を備えた LLM 開発の第一歩として非常に意義のあるアプローチでした。

##  Reference Links:
* Instana × Traceloop で LangGraph + Gemini OSS Agent を可視化してみた:[https://qiita.com/jackyxu/items/a2a6f0989cdf27d6dc6a](https://qiita.com/jackyxu/items/a2a6f0989cdf27d6dc6a)
* Langflow公式: [https://docs.langflow.org/](https://docs.langflow.org/)
* Traceloop OSS: [https://traceloop.dev](https://traceloop.dev)
* Instana AI Observability Docs: [https://www.ibm.com/docs/en/instana-observability/current?topic=applications-architecture](https://www.ibm.com/docs/en/instana-observability/current?topic=applications-architecture)