◆httping
サーバや PC の疎通を確認するコマンドといえば「 ping 」。通るかだけじゃなくて、遅いかどうか毎秒チェックできるのが良いところ。ping みたいに、細かくウェブサーバの応答状況もチェックできたらいいな…。そんな時に使えるツールが「 httping 」。ping のように HTTP リクエストを送ることが出来ます。
◆動作環境
ざっくり Linux が動作する環境。
◆インストール方法
$ wget http://www.vanheusden.com/httping/httping-1.4.4.tgz $ tar xfz httping-1.4.4.tgz $ cd httping-1.4.4 $ make $ sudo make install
これで /usr/bin/httping にファイルが置かれます。
◆典型的な使い方
$ httpng [IPアドレス]
一番簡単な方法は、httping の引数に、ウェブサーバの IP アドレスを記述します。これで確認できるのは、対象サーバのウェブが表示出来るかどうか、シンプルな動作確認です。デフォルトで、ポート 80 番にアクセスします。タイムアウトは 30 秒。実行後は Ctrl+C で中断します。
実行例:
$ httping 210.239.46.254 PING 210.239.46.254:80 (210.239.46.254): connected to 210.239.46.254:80, seq=0 time=2.91 ms connected to 210.239.46.254:80, seq=1 time=3.12 ms connected to 210.239.46.254:80, seq=2 time=2.98 ms connected to 210.239.46.254:80, seq=3 time=3.62 ms connected to 210.239.46.254:80, seq=4 time=2.84 ms --- 210.239.46.254 ping statistics --- 5 connects, 5 ok, 0.00% failed round-trip min/avg/max = 2.8/3.1/3.6 ms
この例では、210.239.46.254 というサーバに対して計測を行っています。応答時間は最小 2.8 ミリ秒、平均 3.1 ミリ秒、最大 3.6 ミリ秒とわかります。
引数には URL を指定することが出来ます。特定の URI に対してレスポンス状況を見たいときは、こちらのほうが望ましいでしょう。
$ httping http://210.239.46.254/index.html PING 210.239.46.254:80 (http://210.239.46.254/index.html): connected to 210.239.46.254:80, seq=0 time=3.43 ms connected to 210.239.46.254:80, seq=1 time=3.02 ms connected to 210.239.46.254:80, seq=2 time=2.96 ms --- http://210.239.46.254/index.html ping statistics --- 3 connects, 3 ok, 0.00% failed round-trip min/avg/max = 3.0/3.1/3.4 ms
引数の URI には “https”(SSL) を用いることが出来ます。
$ httping https://210.239.46.254/secure.php PING 210.239.46.254:443 (https://210.239.46.254/secure.php): connected to 210.239.46.254:443, seq=0 time=43.22 ms connected to 210.239.46.254:443, seq=1 time=59.71 ms connected to 210.239.46.254:443, seq=2 time=56.03 ms --- https://210.239.46.254/secure.php ping statistics --- 3 connects, 3 ok, 0.00% failed round-trip min/avg/max = 43.2/53.0/59.7 ms
◆オプション(httping –help より)
コマンドラインにオプションを付ける事で、様々な動作をします。個人的な頻度に応じて、星マークを付けました。
- -g [url] … URL の指定(省略可)
- -c [n] … ★★★何回接続するかの指定。バッチ処理で重宝。以下2回だけ指定する場合
$ httping -c 2 -g http://210.239.46.254/ PING 210.239.46.254:80 (http://210.239.46.254/): connected to 210.239.46.254:80, seq=0 time=3.31 ms connected to 210.239.46.254:80, seq=1 time=3.28 ms --- http://210.239.46.254/ ping statistics --- 2 connects, 2 ok, 0.00% failed round-trip min/avg/max = 3.3/3.3/3.3 ms
- -i [n秒] … ★★ httping 実行間隔を指定します。デフォルトは1秒
- -t [n秒] … ★ タイムアウトの秒数指定。デフォルトは30秒
- -6 … IPv6 モード
- -s … ★ HTTP ステータスコードの表示
connected to 210.239.46.254:80, seq=0 time=3.36 ms 200 OK connected to 210.239.46.254:80, seq=1 time=3.04 ms 200 OK
- -h … 対象ホスト名の指定
- -p … ポート番号の指定
- -x [host:port] … http proxy の指定
- -S … ★ TCP 接続時間と、HTTP 応答時間を分離して表示
connected to 210.239.46.254:80, seq=1 time=0.65+2.39=3.04 ms
- -G … ★★ httping を、デフォルトの”HEAD”メソッドから”GET”に切り替え(コンテンツの実ダウンロード時間の計測用に便利)
- -b … ★ ダウンロード時間の計測用。ファイル転送速度を KB/s で表示。※ -G オプションとの併用必須
$ httping -G -b http://210.239.46.254/ PING 210.239.46.254:80 (http://210.239.46.254/): connected to 210.239.46.254:80, seq=0 time=3.35 ms 7680KB/s connected to 210.239.46.254:80, seq=1 time=3.18 ms 7680KB/s
- -B … -b と同様だが、可能であればコンテンツを圧縮。gzip(mod_defrate)が対応していれば、その速度が (compressed) として表示される。圧縮非対応の場合、(not compressed) として速度が表示。
- -L [x] … -b オプション使用時、データを何バイトまでダウンロードするかの指定。
- -X … -b オプション使用時、実際の転送バイト数を表示(機能しない? 常に 0KB の気が…)
- -b … ★ ダウンロード時間の計測用。ファイル転送速度を KB/s で表示。※ -G オプションとの併用必須
- -l … 接続に SSL を使用(ポート 443 に接続)
- -z … -l と併用。SSL の Finger Print 表示
- -f … 遅延無し実行(※テスト環境向け。サーバやネットワークトラフィックの負荷注意)
- -a … httping 実行結果の表示(デフォルトのようです)
- -m 秒数のみ表示(単位 m/sec) 他のプログラムに渡すときなど、便利ぽい
$ httping -m https://210.239.46.254/ 53.638935 34.828901 36.036968
- -I [str] … UserAgent ヘッダを指定
- -R [str] … Referer ヘッダを指定
- -r … ★ ホスト名の名前解決は、はじめの一度だけ(DNSラウンドロビンの環境で、切り分けしたい時)
- -A -U [ユーザ名] -P [パスワード] … ★ BASIC 認証
- -C cookie=value … Cookie 使用時
他にも、試してませんが -N で Nagios モードがあり、指定秒数以上の時に、値を返すもの(warn, critical によっても変えれる)もあるみたいです。詳しくは httping –help で。
◆使ったツールの事とか
httping に限らず、今後は使ったツールの事とか、出来るだけ書き留めて公開していきたいと思います。備忘録代わりですが、普段から使っていても、よく調べていなかったり、ドキュメントを読んでなかったりする事は結構ありますので。何かリクエストがありましたら、コメント欄やtwitter/Facebookでどうぞ!
Pingback: curlでHTTP処理にかかった時間を計測する | インフラ関係のメモ書き