hana_shinのLinux技術ブログ

Linuxの技術情報を掲載しています。特にネットワークをメインに掲載していきます。

httpstatコマンドの使い方



1 httpstatコマンドとは?

Webサイトに接続するとき、そのWebサイトを表示するまでの時間を表示するツールです。表示時間は、Webサイトに対するDNS名前解決時間、TCPコネクション確立時間、TLSハンドシェークにかかる時間、サーバでの処理時間、コンテンツの転送時間等からなります。httpstatコマンドは、これら個々の時間をグラフィカルに表示するツールです。

2 検証環境

AlmaLinuxの版数は以下のとおりです。

[root@server ~]# cat /etc/redhat-release
AlmaLinux release 8.6 (Sky Tiger)

カーネル版数は以下のとおりです。

[root@server ~]# uname -r
4.18.0-372.9.1.el8.x86_64

3 インストール方法

下記ページを参考にしてインストールしました。
https://snapcraft.io/install/httpstat/centos

snapdはepelリポジトリにあるので、epel-releaseパッケージをインストールします。

[root@server ~]# dnf -y install epel-release

次に、snapdパッケージをインストールします。

[root@server ~]# dnf -y install snapd

snapd.socketsサービスを有効化します。

[root@server ~]# systemctl enable --now  snapd.socket

snapd.socketsサービスの状態を確認します。activeであることがわかります。

[root@server ~]# systemctl is-active snapd.socket
active

/var/lib/snapd/snapへのシンボリックリンクを/snapという名前で作成します。

[root@server ~]# ln -s /var/lib/snapd/snap /snap

環境変数PATHを確認します。

[root@server ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

仮想マシンを再起動します。

[root@server ~]# shutdown -r now

環境変数PATHを確認します。PATHに/var/lib/snapd/snap/binが追加されたことがわかります。

[root@server ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/var/lib/snapd/snap/bin:/root/bin

httpstatコマンドをインストールします。

[root@server ~]# snap install httpstat
2022-08-15T08:05:19-04:00 INFO Waiting for automatic snapd restart...
httpstat 1.1.3 from Simos Xenitellis (simosx) installed

httpstatコマンドの版数を確認します。

[root@server ~]# httpstat --version
httpstat 1.1.3

4 オプション一覧

オプションは以下のとおりです。

[root@server ~]# httpstat -h
Usage: httpstat URL [CURL_OPTIONS]
       httpstat -h | --help
       httpstat --version

Arguments:
  URL     url to request, could be with or without `http(s)://` prefix

Options:
  CURL_OPTIONS  any curl supported options, except for -w -D -o -S -s,
                which are already used internally.
  -h --help     show this screen.
  --version     show version.

Environments:
  HTTPSTAT_SHOW_BODY    By default httpstat will write response body
                        in a tempfile, but you can let it print out by setting
                        this variable to `true`.
  HTTPSTAT_SHOW_SPEED   set to `true` to show download and upload speed.

5 基本的な使い方

google.co.jpにアクセスしてみます。実行結果より、DNS名前解決に2ミリ秒、TCPコネクション確立に7ミリ秒かかっていることがわかります。そして、Webサイトの表示まで、155ミリ秒かかっていることがわかります。

[root@server ~]# httpstat https://www.google.co.jp/

HTTP/1.1 200 OK
Date: Mon, 15 Aug 2022 12:33:56 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=Shift_JIS
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
Server: gws
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Set-Cookie: 1P_JAR=2022-08-15-12; expires=Wed, 14-Sep-2022 12:33:56 GMT; path=/; domain=.google.co.jp; Secure
Set-Cookie: AEC=AakniGO6QqLGEKYnZGFHeEFVZVPhQukN8PJICGv8dCSILo9T4DcQ4Lml2g; expires=Sat, 11-Feb-2023 12:33:56 GMT; path=/; domain=.google.co.jp; Secure; HttpOnly; SameSite=lax
Set-Cookie: NID=511=gwIyrsp8Ll8NNpoWS-NAsqjxFazfzK5XX0-yeJZEttW4ylX940nyG4lWC2PvTA1kSVwWXcFakwVEth28EpTDUCxvSV2Hnr9_wRFWKAqWsLeK72j5PrFtMTPtBxCi9mPPutixldm_X78C1RMuWD_z2qEWFxDjlkTTGOiwwxcvMeE; expires=Tue, 14-Feb-2023 12:33:56 GMT; path=/; domain=.google.co.jp; HttpOnly
Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
Accept-Ranges: none
Vary: Accept-Encoding
Transfer-Encoding: chunked

Body stored in: /tmp/tmpfntrdrc1

  DNS Lookup   TCP Connection   SSL Handshake   Server Processing   Content Transfer
[     2ms    |       7ms      |     61ms      |       83ms        |        2ms       ]
             |                |               |                   |                  |
    namelookup:2ms            |               |                   |                  |
                        connect:9ms           |                   |                  |
                                    pretransfer:70ms              |                  |
                                                      starttransfer:153ms            |
                                                                                 total:155ms

[root@server ~]#

次に首相官邸のWebサイトにアクセスしてみます。

[root@server ~]# httpstat https://www.kantei.go.jp/jp/rekidainaikaku/index.html

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88862
Connection: keep-alive
x-amz-id-2: UFaP3UaX/tWPbE6JCa1YJ1gXXx+aqyixuZbIDTTnFjNY5UULoBLw35roP5fW6MbyvGyWRk+IMTM=
x-amz-request-id: ZSHPNNMQ3HWZ01KD
x-amz-replication-status: COMPLETED
Last-Modified: Mon, 08 Aug 2022 15:12:32 GMT
x-amz-server-side-encryption: AES256
x-amz-meta-user-agent: AWSTransfer
x-amz-meta-user-agent-id: kantei-prd-apn01-sftpuser-kantei01-alaya01@s-c73fde2b48d346ed8
x-amz-version-id: _zdgdTcWZOI_4qbLIlrF40P9T2yQjTPU
Accept-Ranges: bytes
Server: none
Date: Mon, 15 Aug 2022 12:50:59 GMT
ETag: "8b8b555a32f6b9a380436f5ddb04e376"
X-Cache: Hit from cloudfront
Via: 1.1 1d52323084c6753f5a9a5a3fa0fda23c.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: NRT57-P3
X-Amz-Cf-Id: d0i96v7wIyX81KhgNqxlwMPYLuYQog5wZgUA64hKTTzC4B_xGpuw6A==
Age: 19

Body stored in: /tmp/tmpb3e5d4e0

  DNS Lookup   TCP Connection   SSL Handshake   Server Processing   Content Transfer
[     4ms    |       9ms      |     30ms      |       42ms        |       12ms       ]
             |                |               |                   |                  |
    namelookup:4ms            |               |                   |                  |
                        connect:13ms          |                   |                  |
                                    pretransfer:43ms              |                  |
                                                      starttransfer:85ms             |
                                                                                 total:97ms

[root@server ~]#

6 転送スピードを表示する方法(HTTPSTAT_SHOW_SPEED=true)

環境変数HTTPSTAT_SHOW_SPEEDにtrueを設定すると、実行結果の最後にspeed_download,speed_uploadが表示されるようになり、Webサイトにアクセスしたときのコンテンツの転送スピードが表示できます。

HTTPSTAT_SHOW_SPEEDにtrueを設定します。

[root@server ~]# export HTTPSTAT_SHOW_SPEED=true

google.co.jpにアクセスしてみます。コンテンツのダウンロードのスピードが 40.8 KiB/秒であることがわかります。

[root@server ~]# httpstat https://www.google.co.jp/

HTTP/1.1 200 OK
Date: Tue, 30 Aug 2022 11:40:14 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=Shift_JIS
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
Server: gws
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Set-Cookie: 1P_JAR=2022-08-30-11; expires=Thu, 29-Sep-2022 11:40:14 GMT; path=/; domain=.google.co.jp; Secure
Set-Cookie: AEC=AakniGNrZxtKHwvokrzHaZ_Z2fhi52HXvanrPJdfR3KBpKOV71kFKWYsEg; expires=Sun, 26-Feb-2023 11:40:14 GMT; path=/; domain=.google.co.jp; Secure; HttpOnly; SameSite=lax
Set-Cookie: NID=511=qn3ZQDxtpzksRgJiLjfh0wIlhWJtuWQVeJ1qNaOimgYEzkUSLJD0pjZGVXTKBhSndDqEb7Qpkw5RU--ft0Ioqv3yIQySgvSkwmygw34bMcSLHYX-l8adHy1nYl0ftHABLNc7XC9MpRobI3blr434XUeTOfQpL-m8ofJ01n9Xzbc; expires=Wed, 01-Mar-2023 11:40:14 GMT; path=/; domain=.google.co.jp; HttpOnly
Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
Accept-Ranges: none
Vary: Accept-Encoding
Transfer-Encoding: chunked

Body stored in: /tmp/tmp_auatvri

  DNS Lookup   TCP Connection   SSL Handshake   Server Processing   Content Transfer
[    48ms    |      12ms      |     104ms     |       160ms       |       10ms       ]
             |                |               |                   |                  |
    namelookup:48ms           |               |                   |                  |
                        connect:60ms          |                   |                  |
                                    pretransfer:164ms             |                  |
                                                      starttransfer:324ms            |
                                                                                 total:334ms

speed_download: 40.8 KiB, speed_upload: 0.0 KiB
[root@server ~]#

Z 参考情報

私が業務や記事執筆で参考にした書籍を以下のページに記載します。
Linux技術のスキルアップをしよう! - hana_shinのLinux技術ブログ