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

Accelerating the Feedback Loop of OpenTelemetry...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Y.Matsuda Y.Matsuda
May 13, 2025
640

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上はどんなメトリク スになる?