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

Accelerating the Feedback Loop of OpenTelemetry...

Avatar for Y.Matsuda Y.Matsuda
May 13, 2025
110

Accelerating the Feedback Loop of OpenTelemetry Instrumentation with otel-tui

Avatar for Y.Matsuda

Y.Matsuda

May 13, 2025
Tweet

Transcript

  1. • SREやPlatform Engineer ◦ 組織全体のテレメトリーパイプラインや分析基盤の整備 ◦ サンプリングやフィルタリング方針の検討や共通化 • アプリケーション開発者 ◦

    計装ライブラリの設定調整(アプリレイヤーでのフィルタリ ングなど) ◦ ドメインに即したテレメトリー属性の設定 ◦ 必要に応じてマニュアル計装 継続的な改善 8
  2. テレメトリー生成に近いところから可能性を潰す 20 RPS制限超過 取り込み上限超過 Sampled flagの伝 搬ができていない 実装内部で Contextを 引き回せていない

    middlewareや言語 毎の計装の設定不備 「不完全なトレース」のケース 生成から遠くなるほど検証コストが高くつく
  3. • セットアップが結構大変 ◦ volume、データソースの設定(Jaegerとかは楽) • リッチで高コストな機能とUI ◦ 各種テレメトリを見に行くための導線が長い ◦ テレメトリー(OTLP)がどのようにUIとして表現されるかを理

    解するために時間が必要 • Webベースなのでリロードが必要 ◦ トライアンドエラーが必要なローカル開発では無視できない 既存OSSプロダクト(Grafanaなど)をローカルで動かす 23
  4. • セットアップが結構大変 ◦ volume、データソースの設定(Jaegerとかは楽) • リッチで高コストな機能とUI ◦ 各種テレメトリを見に行くための導線が長い ◦ テレメトリー(OTLP)がどのようにUIとして表現されるかを理

    解するために時間が必要 • Webベースなのでリロードが必要 ◦ トライアンドエラーが必要なローカル開発では無視できない →徐々にMP(?)が削られていく... 既存OSSプロダクト(Grafanaなど)をローカルで動かす 24
  5. 想定ユーザー 31 • OTel SDKや計装ライブラリの開発者 ◦ opentelemetry-go(-contrib)など • 自アプリの計装の調整やデバッグをしたい開発者 ◦

    contextの伝搬、カスタム属性の付与、フィルタリング な ど • OTel collectorの調整をしたいSRE ◦ 主にreceiverとprocessor周り
  6. ホストマシン上で動かす 33 インストール $ go install github.com/ymtdzzz/otel-tui@latest $ brew install

    ymtdzzz/tap/otel-tui $ nix develop github:ymtdzzz/otel-tui 起動 $ otel-tui テレメトリーの送信 $ OTEL_EXPORTER_OTLP_ENDPOINT=localhost:4317 otel-cli exec --service my-service --name "curl google" curl https://google.com
  7. Dockerで開発環境に組み込む docker-compose.yml oteltui: image: ymtdzzz/otel-tui:latest container_name: otel-tui stdin_open: true tty:

    true collectorやexporterの向き先を修正 exporters: otlp: endpoint: oteltui:4317 service: pipelines: traces: exporters: [otlp] 34
  8. • 開発フローに組み込みやすい ◦ yamlを数行編集するだけ ◦ debug exporterと同じようなノリで組み込める • otel-tui自体の汎用性向上 ◦

    receiverなどOTelの資産をそのまま使える ◦ prometheusやzipkin統合可のため移行検証にも◦ OTel custom collectorとして実装 37
  9. リアルタイム更新とローテーション • テレメトリー受信したら即反映 ◦ リロードは不要 ◦ powered by rivo/tview •

    ローテーションでメモリに優しく ◦ 1000件のサービスエントリースパンまでインメモリに保持 ◦ Ctrl+Lで即時Flushも可 38
  10. Prometheus→OTel→Google Cloudの変換 46 • PrometheusをOTelで取得してどこかに送信したい ◦ 例:COS上のアプリのPrometheus MetricsをCloud Monitoringに 送る

    • PrometheusをOpenTelemetryに移行する際の影響調査 上手く出てくれない OTel上はどんなメトリク スになる?