Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Iceberg MetricsReporter を OpenTelemetry に対応させてみ...

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →

Iceberg MetricsReporter を OpenTelemetry に対応させてみた(道半ば)

OTFSG Osaka Meetup #2 (現地開催)のLT資料です。

Avatar for Noritaka Sekiyama

Noritaka Sekiyama

July 14, 2026

More Decks by Noritaka Sekiyama

Other Decks in Technology

Transcript

  1. OT FSG O SAKA MEETUP # 2 · LT Iceberg

    MetricsReporter を OpenTelemetry に対応させてみた (道半ば) Noritaka Sekiyama · Staff Forward Deployed Engineer, Databricks @moomindani
  2. 課題 Iceberg のテーブル操作、 どう監視してますか? Iceberg には MetricsReporter という仕組みがあり、scan / commit

    のメトリクスをレポートできる 既存実装は LoggingMetricsReporter と RESTMetricsReporter のみ でも Prometheus / Datadog / CloudWatch などの Observability スタックには繋がっていなかった
  3. つくったもの OtelMetricsReporter metrics-reporter-impl=org.apache.iceberg.metrics.OtelMetricsReporter scan / commit の MetricsReport を OpenTelemetry

    の Counter / Histogram に変換して export OTLP 経由なので、Collector 経由で Prometheus / CloudWatch / Datadog / Grafana Cloud… ど こにでも飛ばせる https://github.com/apache/iceberg/pull/16250
  4. 設計判断 ① Reporter は SDK を持たない 当初案 Reporter が自前で OpenTelemetrySdk

    を構築 ( otel.endpoint 等の catalog property) → 採用した設計 ホストアプリ(Spark / Flink / Trino)が GlobalOpenTelemetry に SDK を登録。 Reporter は .get() を呼ぶだけ SDK のライフサイクルはホスト側が持つ — Reporter は薄いまま 理由: 同種の OTel 統合(#14360 HTTPClient OTel PR)と設計思想を揃えた
  5. 設計判断 ② カーディナリティ対策 レビューで届いた実運用の失敗談 — STARBURST / GRANT NICHOLAS 「テーブル数千規模で

    per-table attribute がカーディナリティ爆発 → metrics から span ベースに逃げた」 iceberg.otel.metrics.attributes allowlist を追加(table-name / schema-id / operation を選択可能) デフォルトは table-name + operation、snapshot-id は設計上ずっと除外
  6. OSS での合意形成 ここまでの流れ 01 dev@ に DISCUSS スレッドを投稿(依存追加の是非を問う) 02 Ryan

    Blue, Yufei Gu, Talat Uyarer, Grant Nicholas から +1 — 依存関係の懸念は解消 03 PMC(Daniel Weeks)から質問 — 「これは "operational" な telemetry なのか?導入すべきものか?」 04 → ドキュメント化済みの MetricsReporter → Observability という既存の道を productize してい るだけ、と返信し 目下回答待ち
  7. DIS CUS SION Iceberg でメトリクス欲しい人、 リアクションください! SDK 非所有の設計、妥当だと思う? カーディナリティ対策、他にいいアイデアある? PMC

    の「これは運用メトリクスか」という問い、どう思う? PR github.com/apache/iceberg/pull/16250 github.com/apache/iceberg/pull/16250
  8. おまけ:終わらない戦い Iceberg Contribution Status (moomindani@) Repository PR Title Status apache/iceberg

    #15557 Spark: Delegate temp file deletion to JUnit in TestParquetVectorizedReads Merged apache/iceberg #15558 Core: fix propertiesWithPrefix to strip prefix literally, not as regex Merged apache/iceberg #15559 REST: add boolean to Expression schema in OpenAPI spec Closed apache/iceberg #15594 Spark: Add scd_type2 option to create_changelog_view procedure Closed apache/iceberg #16250 Core: Add OpenTelemetry MetricsReporter WIP apache/iceberg #16574 Core: Add table-name filter for MetricsReporter WIP apache/iceberg #16680 Build: Bump caffeine from 2.9.3 to 3.2.0 WIP apache/iceberg-python #3474 Add PuffinWriter for writing deletion vectors WIP apache/iceberg-python #3476 Add Spark interop test for reading Puffin deletion vectors WIP apache/iceberg-python #3623 Support upgrading tables to format version 3 WIP apache/iceberg-python #3624 Support writing V3 manifests and manifest lists WIP apache/iceberg-python #3630 Read tables with multi-argument transforms as unknown transforms WIP apache/iceberg-python #3631 Support rewrite_manifests table maintenance WIP apache/iceberg-rust #2790 Parse unrecognized transform names as Transform::Unknown WIP 2026-07-10 時点 / author: moomindani