2010/08/13

使用 MRTG 監控系統效能

軟體:Multi Router Traffic Grapher
環境:Ubuntu 9.10 Server

#請先切換到 root 身份。

首先,要先裝好 Apache 與 PHP:
apt-get install apache2
apt-get install php5 libapache2-mod-php5

接著安裝 SNMP:
apt-get install snmpd

修改 SNMP 設定檔:
vim /etc/snmp/snmpd.conf

把 snmpd.conf 的 sec.name source community 部份修改如下:
# com2sec paranoid default public
com2sec readonly default public
#com2sec readwrite default private

重新啟動 SNMP 服務:
/etc/init.d/snmpd restart

安裝 MRTG:
apt-get install mrtg

建立 MRTG 的網頁資料夾:
mkdir /var/www/mrtg

編輯 MRTG 設置檔:
vim /etc/mrtg.cfg

在檔案內 Global Settings 那段,修改成如下設定:
RunAsDaemon: yes
EnableIPv6: no
WorkDir: /var/www/mrtg
Options[_]: bits, growright
WriteExpires: Yes
Title[^]: Traffic Analysis For

查看 /etc/cron.d/mrtg 檔案,編輯 MRTG 的自動排程。
內容類似:
*/5 * * * * root if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /etc/mrtg.cfg >> /var/log/mrtg/mrtg.log 2>&1; fi
或:
*/5 * * * * root if [ ! -d /var/lock/mrtg ]; then mkdir /var/lock/mrtg; fi; if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /etc/mrtg.cfg 2>&1 | tee -a /var/log/mrtg/mrtg.log ; fi

執行下列指令,產生本機監控設置:
cfgmaker public@localhost > /etc/mrtg.cfg

Creating a configuration file for a device using:
cfgmaker public@192.168.0.1 >> /etc/mrtg.cfg


使用 indexmaker 產生 MRTG 頁面:
indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html

執行以下指令三次,直到沒有錯誤訊息:
env LANG=C /usr/bin/mrtg /etc/mrtg.cfg

使用瀏覽器連線到本機的 MRTG 頁面資料夾觀察流量頁面:
http://localhost/mrtg/



搭配 sysstat 工具監控 CPU 負載量

安裝 sysstat 工具:
apt-get install sysstat

sysstat 指令簡單說明:
sar -u 1 3 # 每一秒鐘測一次 CPU,三次後計算平均。
sar -r 3 3 # 每三秒測一次實體與虛擬記憶體用量,三次後計算平均。

執行以下指令測試一下:
/usr/bin/sar -u 1 3

在 MRTG 網頁目錄下新增一個 CPU 目錄:
mkdir /var/www/mrtg/cpu
cd /var/www/mrtg/cpu

編寫 CPU 監控的 bash script:
vim cpu.sh

cpu.sh 內容如下:
#!/bin/bash
# 開始使用 sar 來監測 CPU 的 user 及 System 負載率
  cpuusr=`/usr/bin/sar -u 1 3 | grep Average | awk '{print $3}'`
  cpusys=`/usr/bin/sar -u 1 3 | grep Average | awk '{print $5}'`
  UPtime=`/usr/bin/uptime | awk '{print $3 " " $4 " " $5}'`

# 列出四個數據(前兩個為數字)
  echo $cpuusr
  echo $cpusys
  echo $UPtime
  echo localhost

修改執行權限:
chmod 755 cpu.sh

編寫監控 CPU 的 MRTG 設置檔:
vim cpu.cfg

cpu.cfg 內容如下:
### Global Config Options
### To get bits instead of bytes and graphs growing to the right
WorkDir: /var/www/mrtg/cpu/
Language: utf8
Target[localhost]: `/var/www/mrtg/cpu/cpu.sh`
MaxBytes[localhost]: 100
Options[localhost]: gauge, nopercent, growright
YLegend[localhost]: CPU loading (%)
ShortLegend[localhost]: %
LegendO[localhost]:   CPU sys;
LegendI[localhost]:   CPU usr;
Title[localhost]: CPU Utilization
PageTop[localhost]: <h1>localhost CPU usage</h1>

執行以下指令三次,直到沒有錯誤訊息:
env LANG=C /usr/bin/mrtg /var/www/mrtg/cpu/cpu.cfg

編輯系統排程檔:
vim /etc/crontab

寫入以下內容:
*/5 * * * * root /usr/bin/mrtg /var/www/mrtg/cpu/cpu.cfg > /dev/null 2>&1

使用瀏覽器觀察 CPU 負載頁面:
http://localhost/mrtg/cpu/localhost.html

Reference:
01. http://www.debianhelp.co.uk/mrtg.htm
02. http://www.linuxhomenetworking.com/wiki/
03. http://noc.navi.net/mrtg-conf.html
04. http://linux.vbird.org/linux_security/old/04mrtg.php