18 ポイント 投稿者 GN⁺ 2025-02-21 | 2件のコメント | WhatsAppで共有
  • Dockerコンテナで発生するすべてのネットワークリクエストを追跡できるようにするツール
    • Wiresharkの機能をコンテナ環境に適用したもの
  • これにより、バックエンドサーバーのネットワークトラフィックをリアルタイムで分析し、本番環境の問題をより迅速に解決できる

主な機能

  • 別途設定なしですぐに使用可能
    • バックエンドサーバーの実行コマンドの前に subtrace run を追加するだけで完了
  • コード修正不要
  • すべてのプログラミング言語をサポート(Python、Node.js、Go など)
  • リクエストの完全なペイロード、ヘッダー、ステータスコード、レイテンシを確認可能
  • 100µs以下の性能オーバーヘッド
  • Clickhouseベース
  • オープンソース

Subtraceの動作方式

  • すべてのネットワーク関連Linuxシステムコール(syscall)をSeccomp BPFを使って横取り
  • TCP接続をプロキシしてHTTPリクエストを分析し、これをWebSocket経由でブラウザに送信
  • Chrome DevToolsのネットワークタブを活用して、リクエストを視覚的に確認可能
  • 既存のSentryやOpenTelemetryのようなログベースではなく、リアルタイムですべてのリクエストをそのまま確認できる

コード貢献について

  • Subtraceはオープンソースだが、現時点ではPull Requestを受け付けていない
  • スタートアップの特性上、小規模チームで運営されており、オープンソースコミュニティを効率的に管理する余力が不足しているため
  • 今後ポリシーが変更される可能性はあり、機能リクエストとバグレポートはいつでも歓迎している

2件のコメント

 
codemasterkimc 2025-02-21

Falco や linkerd で問題を見つけて、必要なら subtrace で分析すればいいってことか〜 :)

 
GN⁺ 2025-02-21
Hacker Newsのコメント
  • ドキュメントを読んだ限りでは、subtraceのプロセスがすべてのデータをサーバーに送信しているように見える。APIキーや個人データを扱う本番環境では、そのようにはしたくない
    • 完全にセルフホストで実行する方法があるのか気になる。なければ、その計画はあるのだろうか? セルフホストのオプションをどう収益化するつもりなのかも気になる
  • Wiresharkという表現は少し誤解を招く。ブラウザのネットワークタブを使う「ネットワークインスペクタ」に近い
    • 本当に便利そうなので、ツールボックスに入れるべきか確かめるためにぜひ使ってみたい
  • HTTPリクエストにしか当てはまらないように見える。だとすると、Wiresharkとの比較は適切ではない
  • Dockerネットワーキングで最もつらいデバッグシナリオは、いつも非TCPトラフィックを扱うときだ。それでも便利そうではある。理解できないのは、なぜアカウントトークンが必要なのかという点だ。subtraceにネットワーク接続は必要なのか? これはすべてローカルで実行されるべきで、この種の接続詳細は決してホストの外に出るべきではない
  • seccompベースのインターセプトに祝意を表したい。これはこの問題を解決する本当にクリーンな方法だ。私たちはmitmproxyでBPF_PROG_TYPE_CGROUP_SOCK eBPFを使った面白い取り組みをしたことがあるが、コンテナ内ではまったく動作しない。関連するすべてのシステムコールをインターセプトする方法がうまく機能しているのを見るのは素晴らしい
  • TLSを復号できるのか気になる。おそらく一般的なライブラリ呼び出しをフックすることで可能だろう
  • 動画を見ると、ダッシュボードはsibtrace.devでホスティングされているように見える。自分のデータがそこに送信されるのか気になる。それは絶対に困る
  • 使ってはいないが、気になるのは本番環境で特定のリクエストやセッションをどうデバッグするのかという点だ。リクエストトレースIDのようなものでフィルタできるのか気になる
  • こういうツールをずっと求めていた。次にDockerコンテナのトラフィックを調査しなければならないときに使ってみるつもりだ