Apacheやlighttpdへのアクセス状況をリアルタイムで確認できる「ApacheTop」を使ってみた

ApacheなどのWebサーバを運用していると、たまにリアルタイムで今現在の利用状況や負荷などがどうなっているかを確認したくなるときがあります。

そこで、UNIX/Linuxの"top"ライクに、Apacheの使用状況を確認することができるのが「ApacheTop」と呼ばれるツールです。

インストール

インストールはパッケージ管理されているものを使うので簡単です。

$ sudo apt-get install apachetop

UbuntuやDebianなど、APTを使っているなら↑のような感じ。

$ sudo yum install apachetop

Fedoraなど、YUMを使っているなら↑のような感じです。

早速使ってみる

使い方は、"-f"オプションでApacheのログファイルを指定して使います。

$ apachetop -f /var/log/apache2/access_log

上記コマンドを実行すると、↓のような"top"ライクな表示画面が出て、リアルタイムでApacheのアクセス状況が確認できます。

ちなみに"-f"オプションを省略すると、デフォルトで"/var/log/httpd/access_log"を確認してくれるようです。

また、ログは"common"もしくは"combined"形式である必要があるとのこと。ログフォーマットを変更している場合などには使えないかもしれません。

last hit: 16:39:38         atop runtime:  0 days, 00:02:42             16:39:39
All:          457 reqs (   3.2/sec)       1615.2K (   11.1K/sec)    3619.1B/req
2xx:     167 (36.5%) 3xx:     288 (63.0%) 4xx:     2 ( 0.4%) 5xx:     0 ( 0.0%)
R ( 30s):     116 reqs (   3.9/sec)        332.0K (   11.1K/sec)    2930.6B/req
2xx:      23 (19.8%) 3xx:      93 (80.2%) 4xx:     0 ( 0.0%) 5xx:     0 ( 0.0%)

 REQS REQ/S    KB KB/S URL
    5  0.29 217.4 12.8*/
    5  0.36   1.0  0.1 /services/menu.js
    4  0.31   0.8  0.1 /services/footer.js
    4  0.31   0.1  0.0 /images/skip/icons/.png
    3  0.23  69.8  5.4 /rss.xml
    3  0.25   2.2  0.2 /mypage/ado_antennas/
    3  0.25   2.6  0.2 /mypage/load_rss_feed
    1  0.14   0.0  0.0 /javascripts/skip/effects.js
    1  0.14   8.6  1.2 /feed/recent_blogs/
    1  0.14   0.0  0.0 /javascripts/skip/controls.js
    1  0.14   0.0  0.0 /javascripts/skip/slider.js
    1  0.17   0.0  0.0 /images/arrow.jpg
    1  0.17   0.7  0.1 /favicon.ico
    1  0.17   0.0  0.0 /javascripts/skip/ufo.js
    1  0.17   0.0  0.0 /javascripts/application.js
    1  0.20   0.0  0.0 /javascripts/skip/skip_util.js
    1  0.20   0.0  0.0 /javascripts/skip/jquery.nyroModal.js
    1  0.20   0.0  0.0 /javascripts/skip/jquery.bgiframe.min.js
    1  0.20   0.0  0.0 /javascripts/skip/jquery.dimensions.js
    1  0.14   0.0  0.0 /javascripts/skip/dragdrop.js
    1  0.25   0.0  0.0 /javascripts/skip/jquery.autocomplete.js
    1  0.25   0.0  0.0 /javascripts/skip/jquery.jTagging.js
    1  0.14   0.0  0.0 /images/skip_download_logo.jpg
    1  0.25   0.1  0.0 /search
    1  0.25   0.0  0.0 /images/skip/icons/server_link.png
    1  0.25   0.0  0.0 /images/skip/icons/bullet_blue.png
    1  0.33   0.0  0.0 /images/skip/icons/bullet_green.png
    1  0.33   0.0  0.0 /images/skip/icons/door.png
    1  0.33   0.0  0.0 /images/skip/icons/report.png
    1  0.33   0.0  0.0 /images/skip/icons/book_open.png
    1  0.33   0.0  0.0 /images/skip/icons/disk_multiple.png
    1  0.33   0.0  0.0 /images/skip/icons/house.png
    1  0.33   0.0  0.0 /images/skip/icons/vcard.png
    1  0.33   0.0  0.0 /images/skip/icons/cog.png
    1  0.33   0.0  0.0 /images/default_picture.png
    1  0.33   0.0  0.0 /stylesheets/skins/silver/back.png
    1  0.33   0.0  0.0 /images/skip/icons/group.png

こんな感じ。
デフォルトで使用すると、直近の30秒でのアクセスに対してモニタされて、5秒毎に画面表示が更新されます。

オプション

ヘルプによるといくつかオプションがあります。

$ apachetop -h

ヘルプについては上記のコマンド、もしくは"man apachetop"を実行することで確認できるかと思います。

URL/host/referrer munging options:
  -q          keep query strings [no]
  -l          lowercase all URLs [no]
  -s num      keep num path segments of URL [all]
  -p          preserve protocol at front of referrers [no]
  -r          resolve hostnames/IPs into each other [no]

Stats options:
  Supply up to one of the following two. default: [-T 30]
  -H hits     remember stats for this many hits
  -T secs     remember stats for this many seconds

  -d secs     refresh delay in seconds [5]

実行時のオプションについては、↑の通りです。

  • "-H"オプション
    • 直近の指定されたアクセス数を対象に表示
  • "-T"オプション
    • 直近で指定された秒数でのアクセスを対象に表示
  • "-d"オプション
    • 画面表示の更新周期

よく使うのは、こんなところです。

"-H"や"-T"オプションで大きめの数字を入力しておけば、解析元データが多く取られるため、長時間の統計を見ることも可能ですし、"-d"オプションを小さくすることで更新周期が短くなるので、よりリアルタイム性の高いデータを確認することが可能です。

ApacheTop version 0.12.6, Copyright (c) 2003-2004, Chris Elsworth

ONE-TOUCH COMMANDS
d          : switch item display between urls/referrers/hosts
n          : switch numbers display between hits & bytes or return codes
h or ?     : this help window
p          : (un)pause display (freeze updates)
q          : quit ApacheTop
up/down    : move marker asterisk up/down
right/left : enter/exit detailed subdisplay mode

SUBMENUS:
s:  SORT BY: [the appropriate menu will appear for your display]
        r) requests  R) reqs/sec  b) bytes  B) bytes/sec
        2) 2xx   3) 3xx   4) 4xx   5) 5xx

t:  TOGGLE SUBDISPLAYS ON/OFF:
        u) urls  r) referrers  h) hosts

f:  MANIPULATE FILTERS:
        a) add/edit menu c) clear all  s) show active (not done yet)
        a:  ADD FILTER SUBMENU
                u) to urls  r) to referrers  h) to hosts

apachetopを実行中のときに使うコマンドが上記です。"h"キーを押すと↑のヘルプが参照できます。

  • "d"コマンド
    • URL、リファラ、アクセス元の表示切替え
  • "n"コマンド
    • HTTPレスポンスのステータスコードの表示
  • "p"コマンド
    • Pause、その時点のもので固定表示
  • "s"コマンド
    • 表示内容を各項目でソートして表示

と、よく使うのはこんなところ。
リアルタイムにステータスコードの解析ができるのは、地味に便利かもしれません。

Apache以外でも使える

「ApacheTop」は、"Apache"から出力されるログデータを元に解析しているので、Apacheのログに準拠したWebサーバであれば、利用可能だと思います。

例えば、↓は"lighttpd"のアクセスログで試してみたのですが、問題なく動作を確認することが出来ました。

last hit: 08:57:03         atop runtime:  0 days, 00:01:30             08:57:08
All:          224 reqs (   2.7/sec)       4606.1K (   55.5K/sec)      20.6K/req
2xx:     219 (97.8%) 3xx:       5 ( 2.2%) 4xx:     0 ( 0.0%) 5xx:     0 ( 0.0%)
R ( 30s):      62 reqs (   2.1/sec)       1405.6K (   46.9K/sec)      22.7K/req
2xx:      59 (95.2%) 3xx:       3 ( 4.8%) 4xx:     0 ( 0.0%) 5xx:     0 ( 0.0%)

 REQS REQ/S    KB KB/S URL
    4  0.15   7.0  0.3*/mypage/ado_antennas/
    4  0.15 172.0  6.4 /
    4  0.16  61.5  2.5 /stylesheets/skip.style.css
    4  0.17   5.0  0.2 /stylesheets/skins/green/skin.css
    4  0.17   1.7  0.1 /stylesheets/mypage.css
    4  0.17   4.0  0.2 /stylesheets/skip/jquery.autocomplete.css
    4  0.17  10.4  0.4 /stylesheets/skip/nyroModal.full.css
    4  0.22   3.5  0.2 /mypage/load_rss_feed
    4  0.17   7.8  0.3 /stylesheets/groups.css
    4  0.22   5.2  0.3 /services/footer.js
    4  0.21   9.4  0.5 /services/menu.js
    3  0.12 540.5 22.5 /javascripts/prototype.all.js
    3  0.17 186.3 10.4 /pictures/picture/2.png
    2  0.10  21.5  1.0 /javascripts/skip/ufo.js
    2  0.09 333.9 14.5 /javascripts/jquery.all.js
    2  0.11   3.0  0.2 /images/skip/indicator.gif
    2  0.10  19.8  1.0 /javascripts/application.js
    2  0.10  11.6  0.6 /javascripts/skip/skip_util.js
    2  0.08   1.5  0.1 /favicon.ico


Webサーバの状況をリアルタイムに確認したい場合の1つの手段としてご参考になれば。


アクセスログ解析の教科書

アクセスログ解析の教科書