Y CombinatorスタートアップのSubtraceがコンテナ化アプリケーションからのネットワークトラフィックを解析するためのオープンソースツールをリリースした。開発者たちは「コンテナ用Wireshark」と位置づけ、DockerとKubernetes環境でのネットワークデバッグをシンプル化することを目指している。
Subtraceはシステムコールトレースとネットワークパケット解析を単一のインターフェースで組み合わせ、開発者がアプリケーションのシステムレベルでの動作とコンテナネットワークに跨るデータフローを確認できるようにする。このツールはeBPFを使用して情報をキャプチャし、理論的には稼働中のコンテナへのパフォーマンス影響を最小限に抑える。
Subtrace開発チームは従来のネットワーク解析ツールはコンテナ化環境では苦戦すると述べている。Wiresharkのような標準ツールは、コンテナネットワークの名前空間にアクセスするには手動設定が必要だ。複数コンテナやKubernetesクラスターを扱う開発者にとっては複雑で時間がかかる可能性がある。
Subtraceはこれらの課題に対処するため、ネイティブなコンテナ統合を提供する。コンテナの概念を理解し、ネットワークトラフィックをコンテナのアイデンティティと自動的に関連付けることができるため、コンテナネットワーク動作解析のための手動作業を削減できる。Subtraceは稼働中のコンテナを自動検出し、手作業での名前空間設定なしでそのネットワークインターフェースにアタッチすることができる。Kubernetes環境では、ネットワークトラフィックをポッド名やサービスラベルなどのコンテナメタデータに関連付ける。このツールはコマンドラインインターフェースとWebインターフェースの両方を提供している。WebインターフェースはWireshark同様のビジュアルネットワークフロー解析を提供するが、特にコンテナワークロード向けに設計されている。ユーザーはコンテナ、サービス、プロトコルごとにトラフィックをフィルタリングし、パケットの内容を詳細に調べることができる。
他のオープンソースツールもコンテナネットワークトラフィックを解析するための類似の機能を提供している。PixieはKubernetesクラスターの包括的なオブザーバビリティを提供し、ネットワークトレース機能も含まれている。Pixieはネットワークトラフィックだけでなくアプリケーションメトリクスや分散トレースなど、より広範なテレメトリデータをキャプチャする。しかしPixieはより多くのシステムリソースを必要とし、一部の環境ではデプロイが複雑になる可能性がある。Pixieは主にKubernetesに焦点を当てており、11のアプリケーションプロトコルをサポートしているが、SubtraceはDockerとKubernetesの両方のデプロイメントをサポートしている。
HubbleはCiliumネットワーキングスタックの一部としてネットワークオブザーバビリティを提供する。Ciliumのネットワークポリシーとの緊密な統合のおかげで、サービス間の詳細なフロー解析を提供できる。Hubbleはコマンドラインツールとネットワークトラフィックを視覚化するためのグラフィカルインターフェースの両方を含んでいる。しかしHubbleはCiliumがコンテナネットワークインターフェースとして使用されている場合に依存しているのに対し、Subtraceは任意のコンテナネットワーキングセットアップで動作する。
MicrosoftのRetinaはKubernetesクラスターのネットワーク可観測性に特化している。パケットのキャプチャや、ネットワークフローを解析することができ、Azure監視サービスとよく統合される。その反面、RetinaはオープンソースだがAzureで最適に動作する。他のクラウドプロバイダーで実行するにはより多くの設定が必要であり、Subtraceよりも学習曲線が急であるようだ。
SubtraceはeBPFプログラムを使用してカーネルから直接ネットワークデータをキャプチャする。この方法はユーザースペースで実行される従来のパケットキャプチャ方法よりもオーバーヘッドが低いため、アプリケーションパフォーマンスに大きな影響を与えることなく大量のネットワークトラフィックを処理できる。eBPFを使用するため、このツールは最新のLinuxカーネルバージョンで実行する必要があり、eBPFプログラムをロードするための適切な権限が必要であるため、一部の環境では制限される可能性がある。
その技術的アプローチと位置づけについてHacker Newsでのツール発表はいくつかの議論を引き起こした。複数ユーザーが「コンテナ用Wireshark」という比較に疑問を呈し、ユーザーjolmg氏はコメントした:「『Dockerコンテナ用Wireshark』への最初の印象は、『...まあ、WiresharkはすでにDockerコンテナで動作するので、もしゴールがDockerコンテナ用Wiresharkであるなら、その定義で失敗しているでしょう。WiresharkであることについてWiresharkを打ち負かすことはできません。』」とコメントした。
ユーザーsophacles氏は真の「コンテナ用Wireshark」に期待するものについて詳細なフィードバックを提供し、述べた:「これはWiresharkではありませんし、いくつかtcp pcapsができるからといってWiresharkに近いわけでもありません」。彼らはDNSトラフィック検査、コンテナネットワークスタックを通じたパケットトレース、そしてNATトラッキング機能の必要性を強調した。
しかし他のコミュニティメンバーはSubtraceが適合するニッチな領域を指摘した。ユーザーchatmasta氏は観察した:「IMOの本当のUXの問題は『Wireshark』と『DevTools』間に何もないことです。クールなのは.pcapファイルから実際のDevTools UIをレンダリングするプログラムです。」
コミュニティメンバーが特に感銘を受けたのは、SubtraceのTLS復号化アプローチだった。このツールは一時的なTLSルート証明書を生成し、ルート権限の必要なくシステム証明書ストアに注入する。プロジェクトクリエーターのadtac氏は説明した:「open(2)システムコールをインターセプトし、/etc/ssl/certs/ca-certificates.crt(または同等のファイル)かどうかを確認します。もしそうであれば一時的なルートCAを実際のCA証明書リストに追加します。」
この説明に対する反応はやや混ざり合っていた。ユーザーcyberax氏はコメントし:「これに驚くべきか、恐れるべきか決めかねます」、ユーザーchatmasta氏は「クリーンな」プロキシ機能を提供する「素晴らしいハック」と称賛した。ユーザー1oooqooq氏は「あまりに巧妙で文書化されていないものは、それによって引き起こされた問題のデバッグに数週間を費やすまで驚嘆することでしょう。」と警告した。
コミュニティの議論はデータプライバシーの懸念も提起し、ユーザーgerwim氏は「Subtraceプロセスがすべてのデータをサーバーに送信するようです。APIキーや個人データが扱われる本番環境でそれを行うのは気が進みません。」と指摘した。開発者たちは、データを外部サーバーに送信せずにSubtraceを完全にローカルで実行できるローカル操作モードを説明することで、これらの懸念に対処した。
Subtraceは現在、GitHubでオープンソースプロジェクトとして、またSubtrace.devで商用提供として利用可能だ。