UNIX的なアレ

UNIX的なこととかいろいろ

Apacheの負荷の状況を監視できる、apachetop

Unix/Linux系OSの場合で、負荷監視のツールといえばtopが有名ですが、apacheの詳細までは監視することができません。
とくに、ある程度のアクセス数のあるWebサイトを運用したことのある方ならわかると思いますが、攻撃と思われるような負荷に出くわすことはあると思います。
そんなときに、簡単にapacheの状況を調べることができるのがapachetopです。

どんなときに使う?

apachetopということで、使用するのはWebServerです。アクセスが多くでサーバーが高負荷になっているなーとある程度自分なりに判断できたときに使います。

Debian/Ubuntuであればインストールは簡単。


# sudo apt-get update
# sudo apt-get install apachetop

簡単に使ってみよう

使用方法も簡単です。
apachetopはapacheアクセスログを解析して表示するのでファイルの指定をします。


# /usr/sbin/apachetop -f /var/log/apache2/access.log # -fの後ろで監視をしたい対象のapacheのLogを指定する

last hit: 10:27:22 atop runtime: 0 days, 00:00:15 10:27:24
All: 21 reqs ( 2.6/sec) 310.1K ( 38.8K/sec) 14.8K/req
2xx: 20 (95.2%) 3xx: 0 ( 0.0%) 4xx: 1 ( 4.8%) 5xx: 0 ( 0.0%)
R ( 15s): 21 reqs ( 1.4/sec) 310.1K ( 20.7K/sec) 14.8K/req
2xx: 20 (95.2%) 3xx: 0 ( 0.0%) 4xx: 1 ( 4.8%) 5xx: 0 ( 0.0%)

REQS REQ/S KB KB/S URL
13 1.62 293.6 36.7*/
7 0.88 16.1 2.0 /index.php
1 0.50 0.3 0.2 /favicon.ico

apacheのlogファイルをものすごくイレギュラーに変更していたりすると使用できないかもしれませんね。
MySQLでも似たようなコマンドでmytopというコマンドがあります。こちらも運用をやる人にとっては便利なツールになると思います。

RE:apache - mod_status があるぜよ

弾さんからトラックバックがきました!

404 Blog Not Found : apache - mod_status があるぜよ
1.Xから存在する由緒あるモジュールです。

自分も複数のサーバーのステータスを監視するときは、mod_statusを活用しています。
ApacheのBusyServer数を見ることが多いので、以下の様なScriptを書いてます。(ホンモノは会社に手元にないのでざっくり版)

#!/bin/sh
WGET='/usr/bin/wget'
OPT='-q -O-'
LIST='localhost'  # ここにServer名を複数入れる

for i in $LIST
do
    echo -n $i":"
    $WGET $OPT http://$i/server-status?auto | grep "BusyWorkers"
done

これをwatchコマンドにかましてたたきます。

 # watch ./apache-status.sh

なかなか便利なモジュールですよね。