
KyanosはeBPFを使用したネットワーク解析ツールです。パケットがカーネル内で費やす時間を可視化し、リクエスト/レスポンスをキャプチャできるため、トラブルシューティングをより効率的にします。

简体中文 | English
Kyanosは、HTTP、Redis、MySQL、Kafka、MongoDB、RocketMQ、DNSリクエストなどのネットワークリクエストをキャプチャできるeBPFベースのネットワーク問題解析ツールです。パケットのキャプチャ、ダウンロード、解析といった複雑な手順を必要とせず、ネットワークの異常を分析し、迅速なトラブルシューティングを支援します。
# Filter by pid
./kyanos watch --pids 1234
# Filter by container id
./kyanos watch --container-id abc
# Filter by Redis key
./kyanos watch redis --keys my-key1,my-key2
# Filter by response byte size
./kyanos watch --resp-size 10000
高度な解析機能 : きめ細かいパケットキャプチャのみを提供するtcpdumpとは異なり、Kyanosはキャプチャしたパケットのメトリクスをさまざまな次元で集約し、トラブルシューティングに最も役立つ重要なデータを迅速に提供します。
HTTPサービスの帯域幅が突然最大に達した場合、which IPsとwhich requestsが原因かをすばやく分析するにはどうすればよいでしょうか。
Kyanosなら、kyanos stat http --bigrespの1コマンドだけで、リモートIPに送信された最大のレスポンスバイトサイズを特定し、リクエストとレスポンスのメトリクスに関する具体的なデータを確認できます。

カーネルレベルの詳細なレイテンシー情報: 実際の環境では、Redisなどのリモートサービスへの遅いクエリを正確に診断することは困難な場合があります。Kyanosは、リクエスト/レスポンスがネットワークカードに到着してからカーネルのソケットバッファに到達するまでのカーネルトレースポイントを提供し、これらの詳細を視覚的な形式で表示します。これにより、どのステージが遅延の原因となっているかを正確に特定できます。

軽量で依存関係なし: 依存関係はほぼゼロで、単一のバイナリファイルと1つのコマンドだけで、すべての結果がコマンドラインに表示されます。
SSLトラフィックの自動復号化 : キャプチャされたすべてのリクエストとレスポンスが平文で表示されます。
レイテンシー詳細付きでHTTPトラフィックをキャプチャする
以下のコマンドを実行します:
./kyanos watch http
結果は次のとおりです:

レイテンシー詳細付きでRedisトラフィックをキャプチャする
以下のコマンドを実行します:
./kyanos watch redis
結果は次のとおりです:

過去5秒間で最も遅いリクエストを特定する
以下のコマンドを実行します:
./kyanos stat --slow --time 5
結果は次のとおりです:

Kyanosは現在、カーネルバージョン3.10(3.10.0-957以降)および4.14以上をサポートしています(将来は4.7から4.14の間のバージョンをサポートする予定です)。
カーネルバージョンは
uname -rで確認できます。
amd64およびarm64アーキテクチャに対応した静的リンクバイナリは、リリースページからダウンロードできます:
tar xvf kyanos_vx.x.x_linux_amd64.tar.gz
次に、root権限でkyanosを実行します:
sudo ./kyanos watch
次の表が表示されたら:
🎉
おめでとうございます!Kyanosが正常に起動しました。
最も簡単な使い方は、Kyanosが現在サポートしているすべてのプロトコルをキャプチャすることです:
sudo ./kyanos watch
各リクエストとレスポンスのレコードはテーブルの1行として保存され、各列にはそのリクエストの基本情報が表示されます。矢印キーまたはj/kを使用して、レコードを上下に移動できます:

Enterキーを押すと詳細ビューにアクセスできます:

詳細ビューでは、最初のセクションにレイテンシーの詳細が表示されます。各ブロックは、プロセス、ネットワークカード、ソケットバッファなど、データパケットが通過する「ノード」を表します。
各ブロックには、前のノードからこのノードまでの経過時間を示す時間値が含まれており、リクエストを送信するプロセスからネットワークカード、レスポンスがソケットバッファにコピーされ、最終的にプロセスによって読み取られるまでの処理フローが、各ステップの所要時間とともに表示されます。
2番目のセクションでは、リクエストとレスポンスの詳細な内容がリクエスト部分とレスポンス部分に分けて提供され、1024バイトを超えるコンテンツは切り詰められます。
HTTPトラフィックなど、対象を絞ったトラフィックのキャプチャ:
./kyanos watch http
特定のHTTPパスのトラフィックをキャプチャするようにさらに絞り込むこともできます:
./kyanos watch http --path /abc
詳細はこちら: Kyanos Docs
[!IMPORTANT]
ツールの使用中に問題やバグが発生した場合は、お気軽にIssueトラッカーで質問してください。
kyanosの開発中に、以下のプロジェクトから一部のコードを借用しました:
より詳細な問い合わせについては、以下の連絡方法をご利用いただけます: