
curlをラップしてHTTPリクエストのタイミング内訳(DNS、TCP、TLS、サーバー処理)を可視化するCLIツール。構造化JSON出力とSLO閾値チェックにより、ネットワークパフォーマンス診断を実現します。

httpstat は curl(1) の統計情報を美しく明瞭に可視化します。
これは 単一ファイル🌟 の Python スクリプトで、依存関係はなく👏、Python 3🍻 に対応しています。
--format json / jsonl--slo total=500,connect=100 が違反時に終了コード 4 を返す--save path.jsonhttpstat を入手する方法は 3 つあります:
スクリプトを直接ダウンロード: wget https://raw.githubusercontent.com/reorx/httpstat/master/httpstat.py
pip 経由: pip install httpstat
homebrew 経由 (macOS のみ): brew install httpstat
httpstat にはエージェント スキル が付属しており、AI コーディングアシスタント (Claude Code、Cursor など) に httpstat を使用した HTTP パフォーマンス診断方法(自動インストール、ボトルネック特定、実践的な修正提案)を教えます。
スキルをプロジェクトにインストール:
npx skills add reorx/httpstat
インストール後、「この API が遅いのはなぜ?」や「このエンドポイントのレイテンシをデバッグして」などの質問をすると、エージェントが自動的に httpstat を使用します。
簡単に:
python httpstat.py httpbin.org/get
pip または brew でインストールした場合、httpstat をコマンドとして使用できます:
httpstat httpbin.org/get
httpstat は cURL のラッパーであるため、URL の後に cURL がサポートする任意のオプションを渡せます(ただし -w, -D, -o, -s, -S は httpstat が既に使用しているため除く):
httpstat httpbin.org/post -X POST --data-urlencode "a=b" -v
機械可読な出力を得るには --format (-f) を使用:
httpstat httpbin.org/get --format json
{
"schema_version": 1,
"url": "httpbin.org/get",
"ok": true,
"exit_code": 0,
"response": {
"status_line": "HTTP/2 200",
"status_code": 200,
"remote_ip": "...",
"remote_port": "443",
"headers": {"Content-Type": "application/json", "Server": "nginx", "...": "..."}
},
"timings_ms": {
"dns": 5, "connect": 10, "tls": 15,
"server": 50, "transfer": 20, "total": 100,
"namelookup": 5, "initial_connect": 15,
"pretransfer": 30, "starttransfer": 80
},
"speed": { "download_kbs": 1234.5, "upload_kbs": 0.0 },
"slo": null
}
コンパクトな単一行 JSON には --format jsonl を使用(ログパイプラインに便利)。
応答時間をしきい値と照合します。違反時に終了コード 4 を返します:
httpstat httpbin.org/get --slo total=500,connect=100,ttfb=200
サポートされるキー: total, connect, ttfb (最初のバイトまでの時間), dns, tls。
プリティモードでは、違反箇所は出力の最後に赤色で表示されます。
JSON モードでは、違反は slo フィールドに表示されます:
{
"slo": {
"pass": false,
"violations": [
{ "key": "total", "threshold_ms": 500, "actual_ms": 823 }
]
}
}
構造化 JSON 出力をファイルに書き込みます(任意の --format で動作):
httpstat httpbin.org/get --save result.json
httpstat httpbin.org/get --format json --save result.json
httpstat には動作を制御するための多数の環境変数があります。
以下に使用例を示します。完全な説明は httpstat --help を実行してください。
HTTPSTAT_SHOW_BODY
出力に応答本文を表示するには true に設定します。本文の長さは 1023 バイトに制限され、超えると切り捨てられます。デフォルトは false です。
HTTPSTAT_SHOW_IP
デフォルトでは httpstat はリモートおよびローカルの IP/ポートアドレスを表示します。この機能を無効にするには false に設定します。デフォルトは true です。
HTTPSTAT_SHOW_SPEED
ダウンロードおよびアップロード速度を表示するには true に設定します。デフォルトは false です。
HTTPSTAT_SHOW_SPEED=true httpstat http://cachefly.cachefly.net/10mb.test
...
speed_download: 3193.3 KiB/s, speed_upload: 0.0 KiB/s
HTTPSTAT_SAVE_BODY
デフォルトでは httpstat は本文を一時ファイルに保存します。この機能を無効にするには false に設定します。デフォルトは です。
便利なように、これらの環境変数を .zshrc または .bashrc にエクスポートできます。
例:
export HTTPSTAT_SHOW_IP=false
export HTTPSTAT_SHOW_SPEED=true
export HTTPSTAT_SAVE_BODY=false
さまざまな言語での実装を紹介します:
これは httpstat の Go 版で、純粋な Go で書かれており、外部プログラムに依存しません。堅牢なバイナリ実行がお好みならこちらを選んでください(実際私もそうです)。
Go (ライブラリ): tcnksm/go-httpstat
CLI ツールであることに加えて、このプロジェクトは Go コード内の HTTP リクエストのレイテンシをデバッグするためのライブラリとしても使用されます。非常に思慮深く便利です。詳細はこの記事をご覧ください。
Bash: b4b4r07/httpstat
これは当初私がまさにやりたかったことですが、bash スキルに自信がなく断念しました。よくできました!
Node: yosuke-furukawa/httpstat
@talhasch による PHP 実装
httpstat の一部のコードブロックは私の他のプロジェクトからコピーされています。ご覧ください:
reorx/python-terminal-color ターミナル色表示のためのドロップイン単一ファイルライブラリ。
reorx/getenv 型付き環境変数定義。
trueHTTPSTAT_CURL_BIN
使用する cURL バイナリのパスを指定します。デフォルトは現在のシェルの $PATH にある curl です。
この例では brew インストールされた cURL を使用して HTTP2 リクエストを行います:
HTTPSTAT_CURL_BIN=/usr/local/Cellar/curl/7.50.3/bin/curl httpstat https://http2.akamai.com/ --http2
HTTP/2 200
...
cURL は http2 機能を有効にするために nghttp2 と共にコンパイルされている必要があります。 (#12).
HTTPSTAT_METRICS_ONLY
true に設定すると、httpstat は JSON 形式でメトリクスのみを出力します。データを読むのではなく解析したい場合に便利です。
注意: これは後方互換性のために維持されています。代わりに
--format jsonを使用してください。
HTTPSTAT_DEBUG
デバッグログを表示するには true に設定します。デフォルトは false です。
NO_COLOR
設定すると(任意の値で)、すべての色付き出力を無効にします。 規約については no-color.org を参照してください。
NO_COLOR=1 httpstat httpbin.org/get