Skip to content

필사 모드: 分散トレーシング & OpenTelemetry 2026 — OTel / Jaeger / Tempo / Zipkin / Honeycomb / Lightstep / SigNoz / SkyWalking / Datadog APM 徹底比較

日本語
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

プロローグ — 「なぜ決済が遅いのか?」という問いから

2026年の金曜夜。決済チームの Slack にアラートが鳴る。

> 「p99 決済レイテンシ 4.2 秒。普段は 600ms。何が遅くなったのか?」

この問いに 5 分で答えるために、人類は過去 10 年間 **分散トレーシング(distributed tracing)** を作り続けてきた。1 つのリクエストがゲートウェイを抜け、認証を経て、決済コアに入り、外部 PG を呼び出して、領収書キューに積まれる — その全ホップを 1 本のトレースで見る。

2020 年当時、この領域は OpenTracing、OpenCensus、Jaeger クライアント、Zipkin ライブラリ、各 APM ベンダーのエージェントが乱立していた。同じ会社の中でも Java は Datadog、Go は Jaeger、Node は New Relic というのが普通だった。2026 年の答えはシンプルだ — **OpenTelemetry**。

本稿は 2026 年の分散トレーシングの地図を描く。OTel 仕様と Collector、伝搬標準、OSS バックエンド(Jaeger / Tempo / Zipkin)、observability 2.0(Honeycomb / SigNoz)、買収された巨人(Lightstep)、APM スーパーリーグ(Datadog / New Relic / Dynatrace / Splunk)、eBPF 自動計装(Pixie / Beyla)、そしてサンプリングと費用まで。韓国・日本企業が実際にどう移行したかも触れる。

1. 2026 年の分散トレーシング地図 — 4 区分

エコシステムは大きく **4 つのまとまり** に分かれる。

| 区分 | 代表 | 性格 |

| --- | --- | --- |

| 標準・計装 | **OpenTelemetry** | 共通仕様・SDK・Collector。ほぼ全員がここを通る |

| OSS セルフホスト | Jaeger、Tempo、Zipkin、SigNoz、SkyWalking | 自分で運用。ライセンス費なし |

| APM SaaS | Datadog、New Relic、Dynatrace、Splunk、AppDynamics、Sentry、Elastic | マネージド。統一 UI + アラート + AIOps |

| observability 2.0 | Honeycomb、Lightstep(ServiceNow) | ワイドイベント・高カーディナリティ分析 |

| eBPF 自動計装 | Pixie、Beyla、Coroot | コード変更なし・カーネル/ネットワーク層 |

3 軸を 1 枚で見る。

OSS SaaS

+--------------+ +-----------------+

計装 | OTel SDK | -- 互換 --- | OTel SDK |

| (ベンダー中立)| | (ベンダーアダプタ) |

+------+-------+ +--------+--------+

| |

+------v-----------------------------------v-----+

| OpenTelemetry Collector |

| receivers --> processors --> exporters |

+------+-----------------------------------+----+

| |

+-------v--------+ +--------v--------+

| Jaeger / Tempo | | Datadog APM |

| Zipkin / SigNoz| | New Relic APM |

| SkyWalking | | Honeycomb 等 |

+----------------+ +-----------------+

要点: **計装は OTel に統一し、バックエンドは差し替え可能にする。** これが 2026 年の標準姿勢だ。

2. OpenTelemetry — CNCF Graduated (2024)

OpenTelemetry(OTel)は OpenTracing(2016)と OpenCensus(2018)の合併として 2019 年に発足した。2021 年に CNCF Incubating、**2024 年 11 月に CNCF Graduated** へ昇格。事実上の業界標準になった。Kubernetes に次ぐ規模の CNCF プロジェクトだ。

OTel が提供するもの:

- **仕様(Specification)**: トレースとは、スパンとは、どんな属性を持つか。

- **API**: 言語別の計装 API(Java、Go、Python、.NET、Node.js、Ruby、PHP、Rust、C++、Swift など)。

- **SDK**: API の参照実装 — サンプリング、バッチ、エクスポータ込み。

- **Collector**: 別プロセスで動くテレメトリーパイプライン。

- **Semantic Conventions**: HTTP、DB、メッセージングなどの標準属性名。

- **OTLP**(OpenTelemetry Protocol): gRPC / HTTP のワイヤーフォーマット。

データモデルの中核: **トレースはスパンのツリー**。各スパンは `trace_id`、`span_id`、`parent_span_id`、開始・終了、属性、イベント、リンクを持つ。

from opentelemetry import trace

from opentelemetry.sdk.trace import TracerProvider

from opentelemetry.sdk.trace.export import BatchSpanProcessor

from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter

trace.set_tracer_provider(TracerProvider())

trace.get_tracer_provider().add_span_processor(

BatchSpanProcessor(OTLPSpanExporter(endpoint="otel-collector:4317"))

)

tracer = trace.get_tracer("checkout")

with tracer.start_as_current_span("charge_card") as span:

span.set_attribute("user.id", user_id)

span.set_attribute("amount", amount)

result = pg.charge(...)

span.set_attribute("pg.response_code", result.code)

OTel の真価は、**メトリクス・ログ・トレースを同じ SDK** で扱うところにある。トレースは Graduated 安定、メトリクスも安定、ログは 2024〜2025 年に多くの言語で安定段階に達した。OTel はもはや単なるトレース標準ではなく、**統合テレメトリー標準** だ。

3. OTel Collector — Receivers・Processors・Exporters

OTel SDK がアプリの中に入るなら、**Collector** はアプリの外で動く別プロセス。分離する理由は:

1. アプリにベンダーバックエンドの SDK を入れずに済む — 依存衛生がよくなる。

2. サンプリング・フィルタ・ルーティングを **集中で** 適用できる。

3. バックエンドを変えてもアプリを再起動しなくていい。

4. トラフィック急増時のキューイング・再試行。

Collector の 3 軸:

| コンポーネント | 役割 | 例 |

| --- | --- | --- |

| **Receivers** | 受信 | otlp、jaeger、zipkin、prometheus、kafka、filelog |

| **Processors** | 加工・変換・フィルタ・サンプリング | batch、memory_limiter、tail_sampling、attributes |

| **Exporters** | 送信 | otlp、jaeger、prometheus、datadog、honeycomb、logging |

この 3 軸をパイプラインでつなぐ。

receivers:

otlp:

protocols:

grpc:

endpoint: 0.0.0.0:4317

http:

endpoint: 0.0.0.0:4318

processors:

batch:

timeout: 5s

send_batch_size: 1024

memory_limiter:

check_interval: 1s

limit_mib: 1500

tail_sampling:

decision_wait: 30s

policies:

- name: errors

type: status_code

status_code: { status_codes: [ERROR] }

- name: slow

type: latency

latency: { threshold_ms: 1000 }

- name: sample_10

type: probabilistic

probabilistic: { sampling_percentage: 10 }

exporters:

otlp/tempo:

endpoint: tempo:4317

tls: { insecure: true }

datadog:

api: { site: datadoghq.com, key: ENV_DD_API_KEY }

service:

pipelines:

traces:

receivers: [otlp]

processors: [memory_limiter, tail_sampling, batch]

exporters: [otlp/tempo, datadog]

**同じトレースを OSS バックエンド(Tempo)と SaaS(Datadog)に同時** に送れる。これが Collector を移行ツールとして使う理由 — 行を 1 本足して並列で比較し、検証してから元を切る。

Collector の 2 モード:

- **Agent**: 各ホスト/ノード/Pod サイドカーに 1 つ。少量・近距離の収集。

- **Gateway**: クラスタ/リージョンに数台。バッファリング・テールサンプリング・中央ポリシー向け。

大規模では **Agent → Gateway → バックエンド** の 2 段構成が多い。

4. 伝搬標準 — W3C Trace Context・B3・Baggage

分散トレーシングが「分散」であるのは、同じ `trace_id` が **サービス境界を越えて伝搬** するからだ。伝搬は通常 HTTP ヘッダで行う。

W3C Trace Context (2020 勧告)

2020 年に W3C が標準化した 2 つのヘッダが 2026 年のデファクトだ。

traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

| | | |

| trace-id (16 byte hex) parent-span-id trace-flags

version

tracestate: vendor1=value1,vendor2=value2

- `traceparent`: すべての OTel SDK が標準で送受信する。

- `tracestate`: ベンダー固有の付加情報(例: サンプリング決定)。

OTel SDK は HTTP・gRPC・メッセージング(Kafka・RabbitMQ ヘッダ)・一部の SQL コメントにまでこのヘッダを自動注入する。

B3 Propagation (Zipkin 系)

Zipkin が作ったマルチヘッダ形式。

X-B3-TraceId: 4bf92f3577b34da6a3ce929d0e0e4736

X-B3-SpanId: 00f067aa0ba902b7

X-B3-ParentSpanId: 05e3ac9a4f6e3b90

X-B3-Sampled: 1

OTel は W3C と B3 を両方サポート。レガシーシステムと混じる場面では両方を受けられるようにする。

Baggage — 「次のサービスへ一緒に運ぶコンテキスト」

Baggage は trace_id とは別のキー・バリューをトレース伝搬とともに運ぶ。例: `user.tier=gold`、`tenant=acme`、`experiment=ab_42`。

baggage: user.tier=gold,tenant=acme

使いどころ:

- すべての下流スパンに同じラベルを自動で付けたいとき。

- baggage の値で動的にサンプリングを変えたいとき(例: 「tenant=enterprise は 100% サンプル」)。

- 下流で権限・ロギング・ルーティングに参照する。

注意: **baggage は秘密ではない。** 次のホップが外部システムだとヘッダが見える。PII は絶対に baggage に入れない。

5. Jaeger — CNCF Graduated、Uber 出身のクラシック

Jaeger は Uber が 2015 年に作った分散トレーシング。2017 年 CNCF Incubating、**2019 年 CNCF Graduated**。OTel 以前のデファクト標準だった。

特徴:

- Go 製、バックエンドはモジュール式。

- ストレージ: Cassandra、Elasticsearch / OpenSearch、ClickHouse、Badger(組込)。

- UI: トレースビュー、依存関係グラフ、比較ビュー。

- 取り込み: 自前 SDK(非推奨)・Zipkin プロトコル・**OTLP**。

2024 年以降、Jaeger プロジェクトは明示的に **「OTel ファースト」** に舵を切った。Jaeger 独自 SDK は非推奨で、新規ユーザーには OTel SDK を勧め、Jaeger は「バックエンド + UI」として使うのが推奨経路だ。v2 バックエンドは内部的に OTel Collector をベースにビルドされている。

デプロイ形:

- **AllInOne**: agent + collector + query + UI + memory storage を 1 コンテナに。デモ/開発用。

- **Production**: collector + storage + query/UI を分離、agent はホスト別。

- **Kubernetes Operator**: jaegertracing/jaeger-operator で CR 一行。

長所: 軽量、OSS、導入が容易、UI が直感的。

弱点: メトリクス/ログはやらない(トレース専用)。高カーディナリティ分析は弱め。UI は trace_id 検索と時間範囲フィルタが主体。

6. Grafana Tempo — Parquet ベース、「オブジェクトストレージがホットパス」

Grafana Tempo は 2020 年に Grafana Labs が作ったトレースバックエンド。コンセプトが明確だ — **「インデックスのないトレースストア」**。

従来の Jaeger / Zipkin は全スパンにインデックス(サービス、オペレーション、タグ)を作る。インデックスがスパン本体より大きく、コストも高い。Tempo はインデックスを作らず、**trace_id でのみ検索** する — ただし、メトリクス(Prometheus)・ログ(Loki)から trace_id を取り出して繋ぐ前提だ。「exemplar をクリックすればトレースが出る」UX。

ストレージは **S3 / GCS / Azure Blob のようなオブジェクトストレージに直接**。インデックスがないので保存が安い。2023 年以降はディスクフォーマットが **Parquet** に統一された。カラムナで圧縮が効き、外部ツール(Athena、DuckDB)からも読める。

クエリ言語 **TraceQL** もある — トレース本体の中でパターンを探す。

{ resource.service.name = "checkout"

&& span.http.status_code = 500

&& duration > 1s

}

長所:

- **保存コストが最安** — オブジェクトストレージ直書き。

- Loki・Mimir・Grafana と自然に連携。

- Parquet なので外部分析ツールに持っていける。

弱点:

- 「メトリクス/ログとトレースを exemplar で繋ぐ」運用がないと価値が落ちる。

- 一般検索(サービス名・タグ)は Jaeger より弱い(代わりに TraceQL)。

**大規模・長期保存が最優先なら Tempo が答え。**

7. Zipkin — Twitter 原典、生きているクラシック

Zipkin は Twitter が 2012 年にオープンソース化した分散トレーシング。Google Dapper 論文の最も影響力のある OSS 実装で、後続のすべてのトレーシングシステムの出発点となった。

特徴:

- Java ベース(Brave 計装)。

- ストレージ: メモリ(開発用)、Cassandra、Elasticsearch、MySQL。

- シンプル — 単一 jar で動く。

- B3 伝搬の起源。

2026 年で新規採用は多くないが、以下では今も現役だ。

- 既存の B3 / Brave Java コードベースのバックエンド。

- 「Jaeger でも重い」と感じる小規模システム。

- OTel Collector の zipkin receiver / exporter による変換ハブ。

Jaeger と比べると、UI は地味だがセットアップはより簡単。

8. Honeycomb — Charity Majors の「observability 2.0」

Honeycomb は 2016 年に Charity Majors と Christine Yen が創業した SaaS オブザーバビリティ会社。彼女らが定着させた **「observability 2.0」** という表現が業界の語彙を変えた。

主張: 従来のモニタリング(メトリクス・ログ・トレース分離)は事前に決めた次元しか見えない。実際のデバッグに必要なのは **高カーディナリティ次元(user_id、request_id、k8s_pod 等)を自由にスライス/ダイス** できる **ワイドイベント(wide event)** だ。

Honeycomb のデータモデル: すべてのスパンが実質「イベント」。自由に属性を付け、クエリは **BubbleUp**(異常自動分解)・**ヒートマップ**・**トレースビュー** を行き来する。

BubbleUp の結果例:

遅いリクエスト(p95)の 73% が user.tier=enterprise かつ

db.host=replica-3 かつ

client_country=JP である。

← この組み合わせを人が事前に指定しなくても自動で見つける。

差別化要素:

- **すべての次元にインデックスを作らない** — 自前のカラムナストア(Retriever)。

- サンプリング SDK(Refinery) — テールサンプリングのデファクト。

- OTel 100% 互換取り込み。

- 料金: イベント数(スパン数)・保存期間。

長所: デバッグ速度が違う。「なぜ遅いか」をインデックスなしで 1〜2 分で絞れる。

弱点: SaaS のみ(セルフホスト不可)。単純な監視で高カーディナリティが要らないならオーバースペック。

9. Lightstep → ServiceNow Cloud Observability

Lightstep は Google Dapper 共著者の Ben Sigelman が 2014 年に創業した会社。「統計的分析」「メトリクスとトレースの融合」を早くから掲げていた。

2021 年に ServiceNow が買収。現在は **ServiceNow Cloud Observability** にリブランド。単独製品としては影が薄くなったが、ServiceNow の ITSM/AIOps とセットでエンタープライズ市場(特に ITIL・CMDB と絡む場所)で生き残っている。

技術的遺産:

- OTel 初期の標準化に中心的役割(Sigelman は OTel ガバナンス委員)。

- トレースに対する統計的ノイズ低減を早くから推した。

2026 年の評価: ServiceNow エコシステムの中にいる会社なら検討。そうでなければ Honeycomb・Datadog・OSS 陣営の方が活発だ。

10. SigNoz — OSS フルスタック・オブザーバビリティ

SigNoz は 2020 年にインド発のオープンソース APM。ClickHouse の上にトレース・メトリクス・ログを全部のせる。**「Datadog の OSS 代替」** をうたう。

特徴:

- 100% OTel ネイティブ — OTel Collector をほぼ SDK のように扱う。

- 単一 UI でトレース/メトリクス/ログ/例外。

- ClickHouse ベース — クエリが速く、保存も圧縮効率が高い。

- 2024 年シリーズ B 資金調達 — LogStream・Anomaly Detection・メトリクス v2 をリリース。

`docker-compose up` 一発でフルスタックが立ち上がり、OTel 互換なので移行が比較的スムーズ。

2024〜2025 のアップデート:

- **LogStream**: ログも同じ UI で検索・フィルタ。

- **Anomaly Detection**: ML ベースの異常検知(ベースライン自動)。

- **Trace Funnels**: 決済のような多段フローのステップ別成功率。

長所: OSS なのに UI が洗練されていてフルスタック。クラウド SaaS もあり、セルフホストが負担なら一方に逃げられる。

弱点: ClickHouse 依存が強く、大規模運用にはノウハウが要る。エンタープライズ機能(SSO、SOC2 レポート等)はクラウドプランに偏る。

11. Apache SkyWalking — APM + トレース、中国主導

Apache SkyWalking は 2017 年 Apache Incubating、2019 年に Graduated した OSS APM。中国系のコントリビュータ(華為・アリババ・テンセント)が厚く、東アジア圏でユーザーが多い。

特徴:

- 自前エージェント(Java、.NET、Node) + OTel 互換。

- トレースだけでなく **サービストポロジ・メトリクス・ログ・イベント** をすべて。

- バックエンド: 自前 OAP サーバ + Elasticsearch / BanyanDB(自前時系列 DB)。

- UI: トポロジ可視化が強い。

- サービスメッシュ(Istio)可視化、イベント駆動の自己修復(SkyWalking-Rover、eBPF)などの拡張。

2026 年の立ち位置: 中国・インド・東南アジアの OSS 陣営のメイン選択肢。韓国・日本では相対的に少ないが、中国法人を運営する企業なら自然に出会う。

12. Datadog APM / New Relic APM / Elastic APM / Sentry Performance

商用 APM スーパーリーグのトレース陣容。

Datadog APM

- 市場シェア最大。UI の完成度が圧倒的。

- OTel ネイティブ入出力 — `dd-trace` もあるが OTel SDK 直も対応。

- トレース + APM メトリクス(throughput・error・latency) + プロファイリング連結。

- 料金: ホスト単価 + 取り込みスパン課金で分離。大規模トラフィックでは請求書が怖くなる。

- Watchdog(AIOps)、Continuous Profiler、Database Monitoring へ連結。

New Relic APM

- 1 世代目 APM(2008)の元祖。2020 年代に **「Telemetry Data Platform」** へ再ポジショニング。

- 2020 年に料金体系大改革 — ユーザー単価 + 取り込み GB 単価へ単純化。

- OTel 互換、OTel オンリー運用も可能。

- New Relic AI、ログ・トレース自動結合。

Elastic APM

- Elasticsearch の上に乗せた APM。ELK スタックを既に使っている現場なら自然。

- セルフホスト・Elastic Cloud の両方。

- OTel + OSS バックエンドより高くなりにくく、検索・ダッシュボード・ML が統合される。

Sentry Performance

- Sentry は元々エラーモニタリング会社。2020 年頃に **Performance(分散トレーシング)** を追加。

- 強み: フロントエンドとの結合。React / Vue 等のクライアント SDK のトレースがそのままバックエンドへ繋がる。

- バックエンド専用 APM としては弱いが、フルスタック(特に SPA フロント)は強い。

13. Dynatrace / AppDynamics (Splunk) / Splunk Observability Cloud

エンタープライズ重量級。

Dynatrace

- 1993 年創業のオーストリア企業。エンタープライズ APM の巨人。

- 自前エージェント **OneAgent** がインストールした瞬間に自動でトポロジ・メトリクス・トレースを作る — 人手はほぼ不要。

- AI エンジン **Davis** が原因候補を自動提示。

- OTel 入力にも対応。

- 料金: エンタープライズ。ROI が大きい環境(グローバル大型運用)向き。

AppDynamics (Splunk 傘下)

- 2017 年に Cisco が買収、2024 年に Cisco が Splunk を買収したため、AppDynamics は **再び Splunk 傘下** に。

- Java・.NET に強い。ビジネストランザクション中心ビュー。

- 2025〜2026 のロードマップでは Splunk Observability Cloud へ段階的に統合される方向。

Splunk Observability Cloud

- 2019 年の SignalFx 買収で生まれたライン。メトリクス・トレース・ログ + RUM(real-user monitoring)。

- Cisco の Splunk 買収(2024)以降、SignalFx と AppDynamics の遺産を 1 つの SKU に統合する作業が進行中。

- Cisco + Splunk を既に使っている現場には強い候補。

14. eBPF トレーシング — Pixie と Beyla、コード変更なしの自動計装

**eBPF** は Linux カーネル内で安全にコードを実行する技術。ネットワークパケット・システムコール・HTTP リクエストをカーネル層で捕捉できる — **アプリのコードを 1 行も変えずに**。

Pixie

- 2019 年に開始、2021 年に New Relic が買収。その後 OSS として CNCF Sandbox(2021)、**2023 年に Incubating**。

- Kubernetes に DaemonSet として入れると、HTTP / HTTPS / gRPC / DNS / MySQL / Postgres / Redis 等のリクエストを自動キャプチャ。

- データはノード内インメモリに留まり(デフォルト 24h)、必要なときだけ外に出す — プライバシー・コスト面で有利。

- クエリ言語は **PxL**(Python ライク)。

Beyla — Grafana の eBPF 自動計装

- Grafana Labs が 2023 年に発表。2024 年 GA。

- 単一バイナリ・サイドカーで入り、eBPF で HTTP / gRPC を捕捉して **OTel スパン** として出す。

- セルフホスト OTel + Tempo スタックに最もスムーズに刺さる。

eBPF トレーシングの位置

- **コード変更なしの高速可視化** が要る場面 — ポリグロット環境、レガシーコード、「今この瞬間どこが遅いか」の即時把握。

- 弱点: **ビジネスコンテキスト(user_id など)** は取れない。eBPF が見るのはネットワークペイロード — アプリがその中に ID を入れなければ見えない。

結論: **eBPF + OTel SDK の両方を併用するのが定石**。eBPF でインフラ・ネットワーク層の自動可視化、OTel SDK でビジネススパン・高カーディナリティ属性。

15. サンプリング — head vs tail vs ratio

トレース費用 = 生成スパン数 × 単価。費用カーブの 8 割以上は **サンプリング戦略** で決まる。

3 つの戦略:

Head-based サンプリング

- トレースの **開始時** に決定。決定結果を traceparent の trace-flags で伝搬。

- 決定材料が少ない(まだ何が起きるか分からない)。

- 長所: シンプル、コスト予測が容易、SDK だけで可能。

- 通常 1〜10% の固定比率で流す。

Ratio サンプリング

- Head サンプリングの下位分類。例: `sample_ratio=0.1`(10%)。

- OTel SDK デフォルト(TraceIdRatioBased)。

- 一貫性保証: trace_id ハッシュで決定 → 同じトレースは全サービスで同じ決定。

Tail-based サンプリング

- トレースが **終わったあと**(または一定時間待った後)に決定。

- 全スパンをまず Collector に集めて見る — 決定材料(エラー有無、合計レイテンシ、特定属性)が豊富。

- 長所: **エラーと遅いトレースを 100% 保存**、正常は 1% だけ。費用対価値が最高。

- 弱点: 決定までキューイングが要る(通常 30 秒〜数分)、メモリ・CPU を消費、**同じトレースの全スパンが同じ Collector インスタンスへ届かねばならない**(load balancing exporter で trace_id ハッシュルーティング)。

OTel Collector `tail_sampling` プロセッサの例:

processors:

tail_sampling:

decision_wait: 30s

num_traces: 100000

policies:

- name: keep_errors

type: status_code

status_code: { status_codes: [ERROR] }

- name: keep_slow

type: latency

latency: { threshold_ms: 1500 }

- name: keep_enterprise

type: string_attribute

string_attribute: { key: tenant.tier, values: [enterprise] }

- name: random_2pct

type: probabilistic

probabilistic: { sampling_percentage: 2 }

このポリシーは: エラー 100% + 1.5 秒超 100% + enterprise テナント 100% + 残りの 2% のみ保持。

どれを選ぶか

| 状況 | 推奨 |

| --- | --- |

| 小規模(数百 rps) | Head 100% または ratio 50% |

| 一般的 SaaS(数千 rps) | Head 10% + エラー 100%(SDK で分岐) |

| 大規模(数万〜数十万 rps) | Tail-based + エラー/遅い/特定テナント 100% |

| 費用が爆発中 | Tail-based を即導入 — 通常 5〜10 倍削減 |

16. 費用 — テールサンプリングプロキシと請求書

分散トレーシングの請求書が怖くなる 2 つのパターン。

1. **トラフィック増加に比例した請求書** — 100% サンプル + 大規模トラフィック。

2. **高カーディナリティ属性の爆発** — 全スパンに user_id、request_id、k8s_pod、container_id を貼る。

対処:

- **テールサンプリングを Gateway Collector に置く。** SaaS に入る前にカットする。同じトレースの全スパンを同じ Collector に届けるため、前段に `loadbalancing` exporter を置く。

- **保存は OSS、「ホット」トレースだけ SaaS。** すべてのトレースを Tempo へ送り、エラー・遅いだけ Honeycomb / Datadog に追加送信。

- **属性ホワイトリスト**。`attributes` プロセッサで使わない属性を削除する。

- **ログ・トレース連結でトレース本体を細くする**。長くて大きい属性はログに置き、スパンには log_id 参照のみ。

実戦経験値(著者の保守的見積もり):

- 無理な 100% → 1% head サンプル = 請求書 90% 減、デバッグ品質 30% 減。

- 1% head → テールサンプル(エラー 100% + 正常 1%)= 請求書同じ、デバッグ品質 200% 増。

- Gateway Collector + ホワイトリスト追加 = 請求書をさらに 30% 減。

17. 韓国 / 日本 — 実例

韓国

- **トス(Toss)** — 自前のトレースインフラ(Kafka Consumer + Spring Sleuth)から 2023〜2024 年にかけて OTel + Tempo + Grafana スタックへ段階移行。決済・送金トラフィックのテールサンプリングで費用を抑えた。Toss SLASH カンファレンスで関連発表がある。

- **カカオ(Kakao)** — 社内 APM から OTel 標準化へ移行。KakaoTalk のバックエンドは Java スタックなので、OTel Java agent の自動計装 + 一部コアサービスのみ手動計装の組み合わせ。if(kakao) カンファレンスにトレーシング事例が時々登場。

- **NAVER** — 社内モニタリング基盤 `nLog`、`Pinpoint` といった自前ツールに OTel 互換インターフェースを追加する方向。Pinpoint は NAVER 製の OSS APM(Java バイトコード計装が強み)で、自ら OTel exporter を追加して標準に合流。

日本

- **メルカリ** — Datadog から OTel + 自前バックエンドの組み合わせへ移行した事例を Mercari Engineering ブログが公開。トラフィック費用が主要動機で、OTel Collector + テールサンプリングで請求書を抑えた。

- **NTT コミュニケーションズ** — 社内マルチクラウド監視プラットフォームに OTel を採用。Datadog / New Relic / SkyWalking 混在環境を OTel で一元化 — 韓国でいえば SK テレコム・KT のような通信キャリアのモニタリング部門の重厚事例。

- **CyberAgent / DeNA / LINE** — ゲーム・メディア・メッセンジャートラフィック特性上、テールサンプリング・高カーディナリティ分析の要件が高く、Honeycomb / Datadog + OSS セルフホスト(Tempo・Jaeger)のハイブリッド。

共通パターン: **ベンダーロックインを避けるため、SDK は OTel、バックエンドは差し替え可能に**。SaaS の単価交渉も OTel 互換が武器になる。

18. 誰が何を選ぶべきか

小さなチーム / サイドプロジェクト

- **OTel SDK + Jaeger(AllInOne)あるいは SigNoz**(セルフホスト)、または **Honeycomb Free / Sentry Performance**。

- 立ち上げ 30 分、費用は 0〜数万円。

中規模(数十名、数万〜数十万 rps)

- **OTel SDK + Collector + Tempo + Grafana**(OSS フルスタック)。費用はインフラのみ。

- あるいは **Datadog / New Relic APM**(SaaS、適用が速くアラートが統合済み)。

- 安全な移行パターンは、両方を OTel Collector で **並走** させて片方に絞ること。

エンタープライズ

- **Dynatrace / Splunk Observability Cloud / Datadog** — 自動トポロジ・AIOps・全社アラート・監査ログ。

- **OTel 互換は必須条件**。OTel オンリーで受けるようベンダーと交渉する。

デバッグ優先(高カーディナリティ・オンデマンド分析)

- **Honeycomb** — observability 2.0 の姿勢。費用はイベント数・保存期間ベース。

- SigNoz が OSS で近い方向を追いかける。

セルフホスト強制(規制・セキュリティ)

- **OTel + Tempo / Jaeger / SigNoz / SkyWalking**。SigNoz はフルスタック(トレース + メトリクス + ログ + イベント)、Tempo + Loki + Mimir は Grafana 陣営の分離型。

Kubernetes ポリグロット + コード変更が難しい

- **Pixie または Beyla** — eBPF で自動可視化。ビジネススパンは OTel SDK で追加。

19. アンチパターン 10 選

1. **OTel を使わずベンダー SDK を直結** — ベンダー切替時にコードを総書換。

2. **計装はしたがサンプリングが 100% のまま** — 請求書が爆発。

3. **テールサンプリングなしで「エラーは全部見たい」** — head 1% サンプルでは 99% のエラーが消える。

4. **すべてのスパンに user_id・request_id を無差別に貼る** — 高カーディナリティ請求に直結。

5. **W3C と B3 の併用を忘れる** — レガシーサービス境界でトレースが切れる。

6. **Baggage に PII を入れる** — 次のホップでヘッダから漏洩。

7. **メトリクス・ログ・トレースのバックエンドが分断され trace_id 連結なし** — exemplar 運用が崩壊。

8. **Collector を置かず SDK から直接 SaaS へ** — バックエンド切替でアプリ総デプロイ。

9. **テールサンプリングの trace_id ルーティングを無視** — 同じトレースが複数 Collector に分散し決定が誤る。

10. **トレースだけ見てメトリクス・ログを見ない** — トレースは「特定リクエストの物語」、メトリクスは「全体の傾向」。両方必要。

エピローグ — OTel の上に自由を建てる

2026 年の教訓は一文だ。

> **計装は OTel に統一し、バックエンドは差し替え可能にする。**

OTel は単なるトレース標準ではなく、**ベンダーロックインを断つインターフェース** だ。その上に — Jaeger / Tempo の OSS の自由でも、Honeycomb のデバッグの深さでも、Datadog の統合 UX でも、Dynatrace の AIOps でも — 自分に合うバックエンドを乗せる。差し替えコストがコード書換ではなく Collector の設定一行になった瞬間、交渉力もコスト管理もデバッグ品質も全部手に入る。

次回候補: **OpenTelemetry メトリクス徹底解説 — exemplar と trace-metric 連結**、**ログをトレースに繋ぐ — Loki・OpenSearch・OpenTelemetry Logs**、**テールサンプリング実戦 — load-balancing exporter トポロジと費用カーブ**。

— 分散トレーシング & OpenTelemetry 2026 徹底比較、了。

参考 / References

- [OpenTelemetry — Official site](https://opentelemetry.io/)

- [OpenTelemetry — CNCF graduation announcement (2024)](https://www.cncf.io/announcements/2024/11/opentelemetry-graduates/)

- [OpenTelemetry Specification](https://opentelemetry.io/docs/specs/otel/)

- [OpenTelemetry Collector](https://opentelemetry.io/docs/collector/)

- [OpenTelemetry Collector — GitHub (open-telemetry/opentelemetry-collector)](https://github.com/open-telemetry/opentelemetry-collector)

- [Collector Contrib — tail sampling processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/tailsamplingprocessor)

- [W3C Trace Context — Recommendation](https://www.w3.org/TR/trace-context/)

- [W3C Baggage — Specification](https://www.w3.org/TR/baggage/)

- [B3 Propagation — openzipkin/b3-propagation](https://github.com/openzipkin/b3-propagation)

- [Jaeger — Official site](https://www.jaegertracing.io/)

- [Jaeger — CNCF graduated project](https://www.cncf.io/projects/jaeger/)

- [Jaeger v2 announcement](https://www.jaegertracing.io/docs/2.0/)

- [Grafana Tempo](https://grafana.com/oss/tempo/)

- [Tempo — Parquet block format](https://grafana.com/blog/2023/11/06/grafana-tempo-architecture-deep-dive/)

- [TraceQL — Tempo query language](https://grafana.com/docs/tempo/latest/traceql/)

- [Zipkin — Official site](https://zipkin.io/)

- [Honeycomb — Observability 2.0](https://www.honeycomb.io/)

- [Charity Majors — Observability 2.0 manifesto](https://www.honeycomb.io/blog/observability-2-0)

- [Refinery — Honeycomb tail sampling proxy](https://github.com/honeycombio/refinery)

- [Lightstep — now ServiceNow Cloud Observability](https://www.servicenow.com/products/observability.html)

- [SigNoz — Official site](https://signoz.io/)

- [SigNoz — GitHub (SigNoz/signoz)](https://github.com/SigNoz/signoz)

- [Apache SkyWalking](https://skywalking.apache.org/)

- [Datadog APM](https://docs.datadoghq.com/tracing/)

- [New Relic APM](https://newrelic.com/platform/application-monitoring)

- [Elastic APM](https://www.elastic.co/observability/application-performance-monitoring)

- [Sentry Performance Monitoring](https://docs.sentry.io/product/performance/)

- [Dynatrace — distributed tracing](https://www.dynatrace.com/platform/distributed-tracing/)

- [Splunk Observability Cloud](https://www.splunk.com/en_us/products/observability.html)

- [AppDynamics — Cisco/Splunk](https://www.appdynamics.com/)

- [Pixie — eBPF observability for Kubernetes](https://px.dev/)

- [Pixie — CNCF Incubating](https://www.cncf.io/projects/pixie/)

- [Grafana Beyla — eBPF auto-instrumentation](https://grafana.com/oss/beyla-ebpf/)

- [OpenTelemetry — Semantic Conventions](https://opentelemetry.io/docs/specs/semconv/)

- [OpenTelemetry Java agent](https://github.com/open-telemetry/opentelemetry-java-instrumentation)

- [Mercari Engineering — observability migration](https://engineering.mercari.com/en/blog/)

- [Toss SLASH conference — observability talks](https://toss.tech/slash)

- [NAVER Pinpoint — open source APM](https://pinpoint-apm.github.io/pinpoint/)

- [Google Dapper paper (2010)](https://research.google/pubs/pub36356/)

현재 단락 (1/374)

2026年の金曜夜。決済チームの Slack にアラートが鳴る。

작성 글자: 0원문 글자: 18,892작성 단락: 0/374