コマンドラインのhttpクライアントとして絶大な人気を誇るcurlは、単にWebサーバーからデータを取得できるだけでなく、ネットワークの応答時間を詳しく表示する機能が搭載されています。
今回紹介する「httpstat」は、このcurlの取得する応答時間を分かりやすく表示するPythonスクリプト。curlのラッパーとして動作し、リクエストの各段階でどれだけ時間がかかったかを見やすく表示することができるツールです。
DNSルックアップ、TCPコネクション、SSLハンドシェイク、サーバー処理、転送処理等の各段階でどれだけ時間がかかったかを表示できるので、サーバーの応答が遅い場合に実際にどこに時間がかかっているのか詳しく調査することが可能となります。
以下使用方法をご紹介。
インストール
httpstatはPython3で動作するスクリプトで、外部のライブラリに依存しません。そのためインストールは以下の3つの方法で可能です。
直接ダウンロードする場合。
wget https://raw.githubusercontent.com/reorx/httpstat/master/httpstat.py
pipでインストールする方法。
pip install httpstat
MacでHomebrewでインストールすることもできます。
brew install httpstat
使用方法
pipやHomebrewでインストールした場合「httpstat」コマンドを直接呼び出し、「httpstat URL」として使用することができます。
httpstat http://www.google.com/
cURLのオプションをurlの後ろに追加してそのまま渡すことができます(ただし-w/-D/-o/-s/-Sは除く)。
httpstat httpbin.org/post -X POST --data-urlencode "a=b" -v
さらに環境変数によって処理を制御することもできます。httpstatが使用する環境変数は以下の通りです。
- HTTPSTAT_SHOW_BODY: trueをセットするとレスポンスボディを表示する
- HTTPSTAT_SHOW_SPEED: trueをセットすると速度を表示する
- HTTPSTAT_SAVE_BODY: falseをセットするとレスポンスボディを保存しない
- HTTPSTAT_CURL_BIN: cURLのバイナリを指定
- HTTPSTAT_DEBUG: trueにするとデバッグ情報を表示
詳細は公式サイトおよび「httpstat --help」で確認することができます。
まとめ
httpstatは単体のスクリプト「httpstat.py」で作られていて、インストールが簡単で動かしやすいのが魅力です。内部の作りも比較的単純であるためPythonスクリプトの作り方を学習したい開発者の方にとっても参考になりそうです。