ติดตั้ง mrtg บน ubuntu
จาก Wiki Opensource
บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่01-04-2552
ดูแลโดย WIPAT
- ทดสอบกับ ubuntu 8.04
- ต้องมีการติดตั้งโปรแกรม apache มาก่อน มีคำแนะนำตามบันทึก ติดตั้ง apache บน ubuntu
- ต้องมีการติดตั้งโปรแกรม snmpd มาก่อน มีคำแนะนำตามบันทึก ติดตั้ง snmpd บน ubuntu
- ติดตั้งโปรแกรม mrtg ด้วยคำสั่ง sudo apt-get install mrtg
จะได้ home directory ของ mrtg อยู่ที่ /var/www/mrtg
- ให้แก้ไขแฟ้ม /etc/apache2/apache2.conf เพิ่มบรรทัดข้อความต่อท้ายสุดว่า
Alias /mrtg /var/www/mrtg
<Location /mrtg>
Order deny,allow
Deny from all
Allow from all
</Location>
แล้วสั่งให้ apache ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/apache2 force-reload
ใช้ brower ไปตรวจสอบดูว่า mrtg พร้อมแสดงบนเวบแล้ว โดยไปที่ http://yourhost.domain/mrtg/mrtg-ti.png
- ต้องสร้างพื้นที่ /var/lock/mrtg ด้วยคำสั่ง sudo mkdir -p /var/lock/mrtg
และต้องสร้างทุกครั้งที่บูทเครื่องด้วย โดยการเพิ่มคำสั่งดังกล่าว ไว้ใน /etc/rc.local
- ตัวอย่างการติดตั้งสำหรับ server ชื่อ myhost.domain
สร้าง directory สำหรับเก็บข้อมูลแสดงผล ด้วยคำสั่ง sudo mkdir -p /var/www/mrtg/myhost
สร้าง directory สำหรับเก็บการตั้งค่า sudo mkdir -p /etc/mrtg
สร้าง config file สำหรับ myhost ด้วยคำสั่ง
sudo cfgmaker -global "options[_]:bits,growright" --global "workdir: /var/www/mrtg/myhost" public@localhost > /tmp/mrtg-myhost.cfg
sudo cp /tmp/mrtg-myhost.cfg /etc/mrtg/mrtg-myhost.cfg
ทดสอบสร้างภาพต้นแบบด้วยคำสั่ง sudo env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg-myhost.cfg
สร้าง index.html สำหรับ homepage mrtg ของ myhost ด้วยคำสั่ง
sudo indexmaker --column=1 --output=/var/www/mrtg/myhost/index.html /etc/mrtg/mrtg-myhost.cfg
- ตั้งค่าให้ mrtg บันทึกค่าทุกๆ 5 นาที ด้วยการสร้างแฟ้ม /etc/cron.d/mrtg-myhost ให้มีข้อความว่า
*/5 * * * * root env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg-myhost.cfg
แล้วสั่งให้ cron ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/cron restart
ทดสอบดูผลงานได้ที่เวบ http://mywebserver/mrtg/myhost
เนื่องจากบางครั้งพื้นที่ /var/lock/mrtg หายไป ทำให้ mrtg ไม่ทำงาน จึงแนะนำให้ใช้ shell script ช่วยเพิ่มเติม
โดยการสร้างแฟ้มชื่อ /etc/mrtg/mymrtg.sh มีข้อมูลดังตัวอย่างคือ
#!/bin/bash
if [ ! -d /var/lock/mrtg ] ; then
mkdir -p /var/lock/mrtg
fi
env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg-myhost.cfg
แล้วแก้ไขแฟ้ม /etc/cron.d/mrtg-myhost ให้เป็นดังนี้
*/5 * * * * root sh /etc/mrtg/mymrtg.sh
แล้วสั่งให้ cron ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/cron restart
หากต้องการเพิ่มกราฟ mrtg เส้นอื่นเข้าไปอีก ก็เพิ่มคำสั่งต่อท้ายบรรทัดในแฟ้ม /etc/mrtg/mymrtg.sh ได้เลย
- ตัวอย่างการทำกราฟ Idle CPU and Load
ใช้ข้อมูล ssCpuIdle.0 และ laLoadInt.1 จาก snmp แสดงผลภาพเป็นกราฟสองเส้น
สร้างแฟ้ม /etc/mrtg/myhost-cpu.cfg มีข้อมูลตัวอย่างประมาณว่า
WorkDir: /var/www/mrtg/myhost
LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
Target[myhost-cpu]:ssCpuIdle.0&laLoadInt.1:public@localhost
RouterUptime[myhost-cpu]: public@localhost
MaxBytes[myhost-cpu]: 10000
Title[myhost-cpu]: Idle CPU and Load average
PageTop[myhost-cpu]: <H1>Idle CPU and Load average</H1>
ShortLegend[myhost-cpu]: %
YLegend[myhost-cpu]: CPU and Load Utilization
Legend1[myhost-cpu]: Idle CPU
Legend2[myhost-cpu]: Load average
LegendI[myhost-cpu]: Idle
LegendO[myhost-cpu]: Load
Options[myhost-cpu]: gauge, nopercent, growright
ทดสอบสร้างภาพต้นแบบด้วยคำสั่ง sudo env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-cpu.cfg
- ตัวอย่างการทำกราฟ memory และ swap
ใช้ข้อมูล memAvailReal.0 และ memTotalSwap.0 จาก snmp แสดงผลภาพเป็นกราฟสองเส้น
สร้างแฟ้ม /etc/mrtg/myhost-mem.cfg มีข้อมูลตัวอย่างประมาณว่า
WorkDir: /var/www/mrtg/myhost
LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
Target[myhost-mem]: memAvailReal.0&memTotalSwap.0:public@localhost - memIndex.0&memAvailSwap.0:public@localhost + memBuffer.0&memIndex.0:public@localhost + memCached.0&memIndex.0:public@localhost
RouterUptime[myhost-mem]: public@localhost
MaxBytes[myhost-mem]: 2000000
Title[myhost-mem]: Free Memory and Swap Used
PageTop[myhost-mem]: <H1>Free Memory and Swap Used</H1>
kMG[myhost-mem]: k,M,G,T,P,X
ShortLegend[myhost-mem]: bytes
YLegend[myhost-mem]: bytes
LegendI[myhost-mem]: Free Memory:
LegendO[myhost-mem]: Swap Used:
Legend1[myhost-mem]: Free memory, in bytes
Legend2[myhost-mem]: Swap Used, in bytes
Options[myhost-mem]: gauge, nopercent, growright
ทดสอบสร้างภาพต้นแบบด้วยคำสั่ง sudo env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-mem.cfg
- ตัวอย่างทำกราฟ CPU wait for IO เพียงเส้นเดียว
ไม่ได้ใช้ข้อมูลจาก snmp แต่ดึงมาจาก shell script ชื่อ /etc/mrtg/get-cpu-io.sh
สร้างแฟ้ม /etc/mrtg/get-cpu-io.sh มีข้อมูลว่า
#!/bin/bash
CPU_WAIT_IO=$(vmstat|tail -1|awk '{print $16}')
TIME=$(uptime)
echo "$CPU_WAIT_IO"
echo "0"
echo "$TIME"
echo "MYHOST"
เสร็จแล้วแก้ไขให้ execute ได้ด้วยคำสั่ง sudo chmod +x /etc/mrtg/get-cpu-io.sh
สร้างแฟ้ม /etc/mrtg/myhost-cpu-io.cfg มีข้อมูลตัวอย่างประมาณว่า
WorkDir: /var/www/mrtg/myhost
Target[myhost-cpu-io]:`/etc/mrtg/get-cpu-io.sh`
MaxBytes[myhost-cpu-io]: 100
Title[myhost-cpu-io]: CPU Time spent waiting for IO
PageTop[myhost-cpu-io]: <H1>CPU Time spent waiting for IO</H1>
ShortLegend[myhost-cpu-io]: %
YLegend[myhost-cpu-io]: wait IO
Legend1[myhost-cpu-io]: current:
Legend2[myhost-cpu-io]:
LegendI[myhost-cpu-io]: current, %
LegendO[myhost-cpu-io]:
Options[myhost-cpu-io]: gauge, nopercent, growright
ทดสอบสร้างภาพต้นแบบด้วยคำสั่ง sudo env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-cpu-io.cfg
- ตัวอย่างทำกราฟ Apache connection เพียงเส้นเดียว
ไม่ได้ใช้ข้อมูลจาก snmp แต่ดึงมาจาก shell script ชื่อ /etc/mrtg/get-apache-session.sh
สร้างแฟ้ม /etc/mrtg/get-apache-session.sh มีข้อมูลว่า
#!/bin/bash
SESSION=$(ps ax|grep apache2|grep -c -v grep)
TIME=$(uptime)
echo "$SESSION"
echo "0"
echo "$TIME"
echo "MYHOST"
เสร็จแล้วแก้ไขให้ execute ได้ด้วยคำสั่ง sudo chmod +x /etc/mrtg/get-apache-session.sh
สร้างแฟ้ม /etc/mrtg/myhost-apache-session.cfg มีข้อมูลตัวอย่างประมาณว่า
WorkDir: /var/www/mrtg/myhost
Target[myhost-apache-session]:`/etc/mrtg/get-apache-session.sh`
MaxBytes[myhost-apache-session]: 1000
Title[myhost-apache-session]: Apache connection
PageTop[myhost-apache-session]: <H1>Apache connection</H1>
ShortLegend[myhost-apache-session]: conns
YLegend[myhost-apache-session]: conns
Legend1[myhost-apache-session]: current:
Legend2[myhost-apache-session]:
LegendI[myhost-apache-session]: current, number of connections
LegendO[myhost-apache-session]:
Options[myhost-apache-session]: gauge, nopercent, growright
ทดสอบสร้างภาพต้นแบบด้วยคำสั่ง sudo env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-apache-session.cfg
- ตัวอย่างทำกราฟ Apache memory เพียงเส้นเดียว
ไม่ได้ใช้ข้อมูลจาก snmp แต่ดึงมาจาก shell script ชื่อ /etc/mrtg/get-apache-mem.sh
สร้างแฟ้ม /etc/mrtg/get-apache-mem.sh มีข้อมูลว่า
#!/bin/bash
TEMP1="/tmp/get-apache-mem-temp1.tmp.$$"
ps ax|grep "apache2"|grep -v "grep"|awk '{print $1}' > $TEMP1
MEMORY=0
while read LINE ; do
PRIVATE=$(pmap -d $LINE|tail -1|awk '{print $4}'|cut -d'K' -f1)
MEMORY=$(expr $MEMORY + $PRIVATE)
done < $TEMP1
TIME=$(uptime)
echo $MEMORY
echo "0"
echo "$TIME"
echo "MYHOST"
rm $TEMP1
เสร็จแล้วแก้ไขให้ execute ได้ด้วยคำสั่ง sudo chmod +x /etc/mrtg/get-apache-mem.sh
สร้างแฟ้ม /etc/mrtg/myhost-apache-mem.cfg มีข้อมูลตัวอย่างประมาณว่า
WorkDir: /var/www/mrtg/myhost
Target[myhost-apache-mem]: `/etc/mrtg/get-apache-mem.sh`
MaxBytes[myhost-apache-mem]: 10000000
Title[myhost-apache-mem]: Apache memory usage
PageTop[myhost-apache-mem]: <H1>Apache memory usage</H1>
kMG[myhost-apache-mem]: k,M,G,T,P,X
ShortLegend[myhost-apache-mem]: bytes
YLegend[myhost-apache-mem]: bytes
Legend1[myhost-apache-mem]: private memory:
Legend2[myhost-apache-mem]:
LegendI[myhost-apache-mem]: private memory, in bytes
LegendO[myhost-apache-mem]:
Options[myhost-apache-mem]: gauge, nopercent, growright
ทดสอบสร้างภาพต้นแบบด้วยคำสั่ง sudo env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-apache-mem.cfg
- ตัวอย่างทำกราฟ Mysql connection เพียงเส้นเดียว
ไม่ได้ใช้ข้อมูลจาก snmp แต่ดึงมาจาก shell script ชื่อ /etc/mrtg/get-mysql-session.sh
สร้างแฟ้ม /etc/mrtg/get-mysql-session.sh มีข้อมูลว่า
#!/bin/bash
SESSION=$(mysqladmin -uroot -pmysqlpassword extended|grep "Threads_connected"|cut -d'|' -f3)
TIME=$(uptime)
echo "$SESSION"
echo "0"
echo "$TIME"
echo "MYHOST"
เสร็จแล้วแก้ไขให้ execute ได้ด้วยคำสั่ง sudo chmod +x /etc/mrtg/get-mysql-session.sh
สร้างแฟ้ม /etc/mrtg/myhost-mysql-session.cfg มีข้อมูลตัวอย่างประมาณว่า
WorkDir: /var/www/mrtg/myhost
Target[myhost-mysql-session]:`/etc/mrtg/get-mysql-session.sh`
MaxBytes[myhost-mysql-session]: 1000
Title[myhost-mysql-session]: Mysql connection
PageTop[myhost-mysql-session]: <H1>Mysql connection</H1>
ShortLegend[myhost-mysql-session]: conns
YLegend[myhost-mysql-session]: conns
Legend1[myhost-mysql-session]: current:
Legend2[myhost-mysql-session]:
LegendI[myhost-mysql-session]: current, number of connections
LegendO[myhost-mysql-session]:
Options[myhost-mysql-session]: gauge, nopercent, growright
ทดสอบสร้างภาพต้นแบบด้วยคำสั่ง sudo env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-mysql-session.cfg
- ตัวอย่างทำกราฟ Mysql memory เพียงเส้นเดียว
ไม่ได้ใช้ข้อมูลจาก snmp แต่ดึงมาจาก shell script ชื่อ /etc/mrtg/get-mysql-mem.sh
สร้างแฟ้ม /etc/mrtg/get-mysql-mem.sh มีข้อมูลว่า
#!/bin/bash
MYSQL_PID=$(ps ax|grep "mysqld.pid"|grep -v "grep"|awk '{print $1}')
MEMORY=$(pmap -d $MYSQL_PID|tail -1|awk '{print $4}'|cut -d'K' -f1)
TIME=$(uptime)
echo $MEMORY
echo "0"
echo "$TIME"
echo "MYHOST"
เสร็จแล้วแก้ไขให้ execute ได้ด้วยคำสั่ง sudo chmod +x /etc/mrtg/get-mysql-mem.sh
สร้างแฟ้ม /etc/mrtg/myhost-mysql-mem.cfg มีข้อมูลตัวอย่างประมาณว่า
WorkDir: /var/www/mrtg/myhost
Target[myhost-mysql-mem]: `/etc/mrtg/get-mysql-mem.sh`
MaxBytes[myhost-mysql-mem]: 10000000
Title[myhost-mysql-mem]: Mysql memory usage
PageTop[myhost-mysql-mem]: <H1>Mysql memory usage</H1>
kMG[myhost-mysql-mem]: k,M,G,T,P,X
ShortLegend[myhost-mysql-mem]: bytes
YLegend[myhost-mysql-mem]: bytes
Legend1[myhost-mysql-mem]: private memory:
Legend2[myhost-mysql-mem]:
LegendI[myhost-mysql-mem]: private memory, in bytes
LegendO[myhost-mysql-mem]:
Options[myhost-mysql-mem]: gauge, nopercent, growright
ทดสอบสร้างภาพต้นแบบด้วยคำสั่ง sudo env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-mysql-mem.cfg
- ตัวอย่างการทำกราฟ TCP Establish connection
ใช้ข้อมูล tcpCurrEstab.0 จาก snmp แสดงผลภาพเป็นกราฟเพียงเส้นเดียว
สร้างแฟ้ม /etc/mrtg/myhost-tcpestab.cfg มีข้อมูลตัวอย่างประมาณว่า
WorkDir: /var/www/mrtg/myhost
LoadMIBs: /usr/share/snmp/mibs/TCP-MIB.txt
Target[myhost-tcpestab]: tcpCurrEstab.0&tcpCurrEstab.0:public@localhost
RouterUptime[myhost-tcpestab]: public@localhost
MaxBytes[myhost-tcpestab]: 1000000
Title[myhost-tcpestab]: TCP Current Establish
PageTop[myhost-tcpestab]: <H1>TCP Current Establish </H1>
ShortLegend[myhost-tcpestab]: conns
YLegend[myhost-tcpestab]: conns
LegendI[myhost-tcpestab]: Current:
LegendO[myhost-tcpestab]:
Legend1[myhost-tcpestab]: Current, numbers of connections
Legend2[myhost-tcpestab]:
Options[myhost-tcpestab]: nopercent, growright, gauge
ทดสอบสร้างภาพต้นแบบด้วยคำสั่ง sudo env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-tcpestab.cfg
- ตัวอย่างคำสั่งในการแสดง index สำหรับกราฟหลายรูปในหน้าเดียว
sudo indexmaker --column=1 --output=/var/www/mrtg/myhost/index.html /etc/mrtg/myhost-tcpestab.cfg /etc/mrtg/myhost-cpu.cfg /etc/mrtg/mrtg-myhost.cfg
