如何利用MRTG監控Apache
- Total Accesses
- Total kBytes
- CPULoad
- Uptime
- ReqPerSec
- BytesPerSec
- BytesPerReq
- BusyWorkers
- IdleWorkers
首先要開啟apache的server-status,修改apache的設定檔如下:
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1 其他限定可以讀取的IP
</Location>
主要還是開啟server-status的設定,然後限制可以讀取的來源主機,基本上設定127.0.0.1就好了,若你有遠端的主機需要監控,記得在遠端主機加上自己電腦的IP,設定完成後reload或restart網頁服務即可。此時你就可以瀏覽 http://主機/server-status 查看目前apache的狀態,仔細看看這是很有用的資訊唷!而要用mrtg收集資訊是要瀏覽 http://主機/server-status?auto 來擷取一些網頁秀出的內容。(mrtg基本設定不再介紹,有問題還是可以發問。)參考網路的一些文件,在系統內我們寫入一個小小的perl(假設命名apache.pl)
#
# apache-stats
use LWP::Simple;my $stats=get("http://127.0.0.1/server-status?auto");
$stats =~ s/.*BusyWorkers: (\d+)//;
my $b = $1;
print "$b\n";
$stats =~ s/.*IdleWorkers: (\d+)//;
print $b + $1 . "\n";
print "\n\n";# 依照我個人需求只抓取Busy和Idle的數量,全部數量則為Busy+Idle
mrtg的設定檔如下:(假設命名apache.cfg)
MaxBytes[apache-server]: 100000
Options[apache-server]: growright,gauge,nopercent,dorelpercent,transparent, avgpeak, pngdate
Title[apache-server]: Apache Statistics
PageTop[apache-server]: <h1>Active Apache child processes</h1>
WithPeak[apache-server]: dwmy
YLegend[apache-server]: No. of child processes
ShortLegend[apache-server]: processes
LegendI[apache-server]: active:
LegendO[apache-server]: total:
設定完成之後就可以執行mrtg測試一下是否正常囉!(網頁輸出路徑的設定就不介紹囉!)
mrtg apache 執行三次之後若沒有錯誤訊息就代表OK囉!把mrtg的執行加入crontab每五分鐘跑一次就可以囉!我主要的設定是參考
http://wooga.drbacchus.com/mrtg-and-apache
但是apache可以監控的還非常的多,譬如以下網站就有很多元化的使用方式,這些設定頗不賴的唷!
http://howto.aphroland.org//HOWTO/MRTG/ApacheWithMRTG能利用mrtg監控的東西還真是不少,下面網站還監控了apache使用的memory和mysql,只要用他寫好的程式就可以。
http://www.land10.nl/apachestatus/
最後大推的下面網站,全部設上去應該超過100個圖表可以即時監控吧!
http://howto.aphroland.org//HOWTO/MRTG/FrontPage