วันอาทิตย์ที่ 10 มิถุนายน พ.ศ. 2550

การ Configure MRTG (Multi Router Traffic Grapher)

กรณีศึกษาใช้ Fedora Core 6
ก่อนการติดตั้ง mrtg ต้องติดตั้ง service snmp ก่อน

การติดตั้ง SNMP

1. ติดตั้ง snmp

yum install net-snmp net-snmp-utils net-snmp-devel

2. เมื่อติดตั้ง snmp ได้แล้วจะได้ไฟล์ /etc/snmp/snmpd.conf ให้ทำการเพิ่มบรรทัดด่อไปนี้เข้าไป

view systemview included .1

ตัวอย่าง
# Make at least snmpwalk -v 1 localhost -c public system fast again.
# name incl/excl subtree mask(optional)
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
view systemview included .1 #เพิ่มบรรทัดนี้เข้าไป

3. สั่งให้ snmpd ทำงานทุกครั้งเมื่อเปิดเครื่องด้วยคำสั่ง

chkconfig snmpd on

4. เช็คว่า snmpd ทำงานอยู่หรือเปล่าด้วยคำสั่ง

/etc/init.d/snmpd status #เช็คสถานะของ snmpd
/etc/init.d/snmpd start # start snmpd
/etc/init.d/snmpd restart # restart snmpd

5. ทดสอบ snmpd ด้วยคำสั่ง snmpwalk

snmpwalk -v 1 localhost -c public system

จะมี responds กลับมาประมาณด้านล่าง

[root@eng ~]# snmpwalk -v 1 localhost -c public system
SNMPv2-MIB::sysDescr.0 = STRING: Linux eng.ru.ac.th 2.6.9-55.ELsmp #1 SMP Wed May 2 14:28:44 EDT 2007 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (960677) 2:40:06.77
SNMPv2-MIB::sysContact.0 = STRING: Mr.Montree Phomkam
SNMPv2-MIB::sysName.0 = STRING: eng.ru.ac.th
SNMPv2-MIB::sysLocation.0 = STRING: Faculty Of Engineering,Ramkhamhaeng University
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (6) 0:00:00.06
.....................

จบ snmpd

การติดตั้ง MRTG

1. ติดตั้ง mrtg ด้วยคำสั่ง

yum install mrtg

หรือ

apt-get install mrtg

จะได้

/var/www/mrtg และ /etc/mrtg

2. แก้ไขไฟล์ /etc/httpd/conf.d/mrtg.conf
<Location /mrtg>
Order deny,allow
Deny from all
#Allow from 127.0.0.1 #ใส่ comment หน้าบรรทัดนี้
Allow from all
# Allow from .example.com
</Location>


3. สั่ง restart httpd

/etc/init.d/httpd restart

เปิด browser แล้วลองเข้า http://192.168.200.210/mrtg

4.มาเริ่มสร้างไฟล์ config โดยในตัวอย่างจะเป็นการจับ Traffic ของ Server ที่เป็น localhost สั่ง

ตั้งค่า locale ไม่ให้เป็น utf-8 ด้วยคำสั่ง

export LANG=en_US <<สำคัญมากอย่าลืมพิมพ์

echo "export LANG=en_US" >> /etc/rc.local

ให้ทุกครั้งที่เปิดเครื่องจะได้ export LANG=en_US ทุกครั้ง สร้าง directory สำหรับเก็บไฟล์ของ

mrtg mkdir /var/www/mrtg/traffic

สั่งสร้างไฟล์ config ด้วยคำสั่ง

cfgmaker -global "options[_]:bits,growright" --global "workdir: /var/www/mrtg/traffic" public@localhost > /etc/mrtg/traffic.cfg

*****มาเข้าใจโครงสร้างของ cfgmaker

"options[_]:bits,growright" << ส่วนนี้โดยปกติถ้าไม่กำหนดจะมันจะสร้างกราฟจากซ้ายไปขวาซึ่งทำให้ดูยาก จึงกำหนด growright เพื่อให้สร้างกราฟจากด้านขวาไปซ้าย ซึ่งแทน

"workdir: /var/www/mrtg/traffic" << ตรงส่วนนี้หมายถึงตำแหน่งที่เราต้องการจะเก็บไฟล์ .html กับกราฟที่เป็น .png ซึ่งก็คือ Directory ที่เราต้องการจะเก็บเว็ป mrtg นั้นเอง

"public@localhost" <<ส่วนนี้หมายถึง service name ของ snmp โดยปกติจะเป็น public ส่วน localhost หมายถึงกำหนดให้เป็นเครื่องตัวเองหรืออาจใส่ 127.0.0.1 ก็ได้

"> /etc/mrtg/traffic.cfg" << ตรงส่วนนี้เป็นการ redirection output เพื่อไปเขียนไฟล์ config ซึ่งระบบเป็น /etc/mrtg/traffic.cfg ก็หมายถึงให้สร้างไฟล์ชื่อ traffic.cfg ใน /etc/mrtg นั้นเอง

เมื่อสั่งคำสั่งด้านบนไปแล้วเราจะได้ไฟล์ /etc/mrtg/traffic.cfg มา

cat /etc/mrtg/traffic.cfg ก็จะแสดงรายละเอียดของไฟล์ออกมา

5. สั่งให้ mrtg สร้าง html และ graph มีโครงสร้างดังนี้

/usr/bin/mrtg /where/your/config/file << ตามด้วยที่อยู่ของไฟล์ config ตัวอย่าง

/usr/bin/mrtg /etc/mrtg/traffic.cfg

เมื่อสั่งไปแล้วจะมีข้อความแจ้ง warning นิดหน่อเพราะมันไม่สามารถเขียนทับไฟล์เก่าได้เนื่องจากเราสั่งเป็นครั้งแรก สั่งคำสั่งเดิมซ้ำอีก 2 รอบ warning ก็จะหายไป
ซึ่งตอนเราสร้างไฟล์ config เราได้กำหนด workdir เป็น /var/www/mrtg/traffic หลังจากสั่ง /usr/bin/mrtg /etc/mrtg/traffic.cfg ไปแล้วมันก็จะสร้างไฟล์ .html กับ .png ให้ซึ่งอยู่ใน /var/www/mrtg/traffic

ls -al /var/www/mrtg/traffic
-rw-r--r-- 1 root root 1592 Feb 15 21:15 localhost_2-day.png
-rw-r--r-- 1 root root 6546 Feb 15 21:15 localhost_2.html
-rw-r--r-- 1 root root 48211 Feb 15 21:15 localhost_2.log

ทดลองเรียก

http://202.41.164.210/mrtg/traffic/localhost_2.html

ก็จะแสดงกราฟออกมา ซึ่งจะยังไม่มีเส้นเพราะเพิ่งสร้างเป็นครั้งแรก การเรียก url แบบนี้หลายๆ ครั้งคงจำกันลำบาก ต่อไปเรามาสร้าง index ไฟล์เพื่อให้เรียกดูง่ายๆ กันโดยสั่ง

indexmaker --column=1 --output=/var/www/mrtg/traffic/index.html /etc/mrtg/traffic.cfg

มาเข้าใจโครงสร้างของ indexmaker กัน

"--column=1 " << ส่วนนี้คือจำนวนคอลัมน์ของกราฟที่ต้องการแสดง

"--output=/var/www/mrtg/traffic/index.html" << "/var/www/mrtg/traffic/" คือตำแหน่งที่เราจำสร้าง index.html นั้นเอง

"/etc/mrtg/traffic.cfg" <<คือตำแหน่งที่อยู่ของไฟล์ config ทีนี้ลองเปิดดูกราฟใหม่โดยเรียก

http://192.168.200.210/mrtg/traffic

มันจะ index หน้ากราฟมาให้เราดูโดยที่เราไม่ต้องกรอกชื่อเต็มๆ ของกราฟตัวนั้น ซึ่งเรามาสามารถคลิกที่รูปกราฟเพื่อดูรายละเอียดได้ สังเกตได้ว่ากราฟที่เราเปิดดูจะยังไม่มีเส้นแสดงรายละเอียดนั้นเป็นเพราะเราเพิ่งสร้างกราฟนั้นเป็นครั้งแรก

ต่อไปก็มาตั้งเวลาให้ mrtg สร้างกราฟให้เราทุกๆ 5 นาทีโดยใช้ crontab เข้ามาช่วยซึ่งโดยปกติ crond จะเป็น service ที่ start เองเมื่อเราเปิดเครื่องอยู่แล้วแต่เพื่อกันความผิดพลาดก่อนอื่นลองมาตรวจสอบว่า crond ได้ทำงานอยู่หรือไม่

/etc/init.d/crond status

ถ้าหากมันรายงาน pid ก็แสดงว่า crond ทำงานอยู่ ต่อไปมาสร้างตารางเวลาให้ mrtg ทำงานทุกๆ 5 นาที

crontab -e

มันจะเปิดหน้าจอ vi มาให้เรากด i แล้วพิมพ์บรรทัดต่อไปนี้เข้าไป

*/5 * * * * /usr/bin/mrtg /etc/mrtg/traffic.cfg

พิมพ์เสร็จแล้วกด esc ตามด้วย :wq เพื่อ save และออกจาก cronedit ดูรายละเอียดที่เราพิมพ์ไปเมื่อกี้ด้วยคำสั่ง

crontab -l

จะแสดงรายละเอียดของงานทั้งหมดที่ตั้งไว้ใน crontab สั่งให้ crond เริ่มทำงานใหม่ด้วย

/etc/init.d/crond restart

ดังนั้นทุกๆ 5 นาที mrtg จะสร้างกราฟให้เราใหม่ซึ่งก็จะทำให้กราฟมีเส้นที่แสดงอย่างต่อเนื่อง เปิด
browser : http://192.168.200.210/mrtg/traffic/index.html มันจะ refresh ตัวเองทุกๆ 5 นาที

#################################################################
ตัวอย่างการใช้ mrtg ตรวจสอบการทำงานของ cpu
ให้สร้างไฟล์ /etc/mrtg/cpu.cfg โดยมีรายละเอียดดังนี้

WorkDir: /var/www/mrtg/traffic
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

ตัวอย่างการใช้ mrtg ตรวจสอบการใช้งาน memory
ให้สร้างไฟล์ /etc/mrtg/mem.cfg โดยมีรายละเอียดดังนี้

LoadMIBs: /usr/share/snmp/mibs/HOST-RESOURCES-MIB.txt
Target[localhost.mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.6.0:public@localhost
PageTop[localhost.mem]:<H1>Memory</H1>
WorkDir: /var/www/mrtg/traffic/
Options[localhost.mem]: nopercent,growright,gauge,noinfo
Title[localhost.mem]: Free Memory
MaxBytes[localhost.mem]: 1000000
KMG[localhost.mem]: k,M,G,T,P,X
YLegend[localhost.mem]: bytes
ShortLegend[localhost.mem]: bytes
LegendI[localhost.mem]: Free Memory:
LegendO[localhost.mem]:
Legend1[localhost.mem]: Free memory, not including swap, in bytes

ตัวอย่างการใช้ mrtg ตรวจสอบ tcp connection
ให้สร้างไฟล์ /etc/mrtg/tcp.cfg โดยมีรายละเอียดดังนี้

WorkDir: /var/www/mrtg/traffic/
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

ตัวอย่างการใช้ mrtg ตรวจสอบ uptime
ให้สร้างไฟล์ /etc/mrtg/uptime.cfg โดยมีรายละเอียดดังนี้

WorkDir: /var/www/mrtg/traffic/
Target[server-uptime]: `/etc/mrtg/mrtg_uptime.pl`
Colours[server-uptime]: LIGHT BLUE#7AAFFF,BLUE#1000FF,DARK GREEN#006000,VIOLET#FF00FF
Options[server-uptime]: gauge,noinfo, nopercent, growright, unknaszero
MaxBytes[server-uptime]: 200
Title[server-uptime]: server uptime
YLegend[server-uptime]: Days
ShortLegend[server-uptime]: Days
Legend1[server-uptime]: Uptime
Legend2[server-uptime]:
LegendI[server-uptime]:
LegendO[server-uptime]: uptime :
PageTop[server-uptime]:<H1>Uptime in days</H1>

และสร้างไฟล์ /etc/mrtg/mrtg_uptime.pl โดยมีรายละเอียดดังนี้

#!/usr/bin/perl
#Affichage de l'uptime en nombre de jours pour MRTG
$uptime = `uptime`;
$uptime =~ /up (.*?) day/;
$up = int($1);
print "$up\n";
print "$up\n";

จากนั้น chmod 7777 /etc/mrtg/mrtg_uptime.pl
อย่าลืมเพิ่มคำสั่งใน crontab ด้วย

crontab -e

*/5 * * * * /usr/bin/mrtg /etc/mrtg/traffic.cfg
*/5 * * * * /usr/bin/mrtg /etc/mrtg/cpu.cfg
*/5 * * * * /usr/bin/mrtg /etc/mrtg/mem.cfg
*/5 * * * * /usr/bin/mrtg /etc/mrtg/tcp.cfg
*/5 * * * * /usr/bin/mrtg /etc/mrtg/uptime.cfg


การสั่งให้สร้างหน้า index ให้มีกราฟหลายๆ รูปทำได้ดังนี้

indexmaker --column=2 --output=/var/www/mrtg/traffic/index.html /etc/mrtg/traffic.cfg /etc/mrtg/cpu.cfg /etc/mrtg/mem.cfg /etc/mrtg/tcp.cfg /etc/mrtg/uptime.cfg

1 ความคิดเห็น:

ไม่ระบุชื่อ กล่าวว่า...

บทความดี มีประโยชน์ เขียนไว้เยอะๆ วันหลังลืม จะได้กลับมาดูได้เน๊อะ ^__^

พี่คอมเมนท์มีสาระดีม่ะ อิอิ