การติดตั้งและคอนฟิกโปรแกรม MRTG บน Linux
ที่มา : http://people.ee.ethz.ch/~oetiker/webtools/mrtg/unix-guide.html
แปลเรียบเรียงโดย
...อดิศร  ขาวสังข์

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

รู้จักกับ
MRTG
MRTG ย่อมาจาก Multi Router Traffic Grapher เป็นเครื่องมือที่ใช้สำหรับการมอนิเตอร์ดู Traffic Load บน Nerwork Links ซึ่งการทำงานของ MRTG จะมีการสร้าง HTML Pages ที่ประกอบด้วยภาพ (กราฟ) ชนิด PNG
โดยภาพดังกล่าวนี้จะแสดงถึงปริมาณของทราฟฟิกบนเครือข่าย สามารถดูตัวอย่างได้ที่ http://www.stat.ee.ethz.ch/mrtg/  ซึ่งการนำไปใช้งานส่วนใหญ่ก็จะนำไปมอนิเตอร์ดูทราฟฟิกตามพอร์ตต่าง ๆ ของเราเตอร์ ว่ามีทราฟฟิกหนาแน่นขนาดไหน

ความต้องการของระบบ
ในการคอมไพล์และการใช้งาน
MRTG คุณจะต้องมี C compiler and และ copy of perl ติดตั้งอยู่ในเครื่องของคุณ  ซึ่งโดยทั่วไปจะมีอยู่แล้ว (เครื่องที่ผมใช้เป็น RedHat 7.3 ไม่ต้องมีการดาวน์โหลดคอมไพเลอร์ข้างล่างนี้แต่ประการใด)  ถ้าไม่มีก็ให้ปฏิบัติดังนี้ :

  • GCC -->> The GNU C compiler ส่วนใหญ่จะถูกติดตั้งมาแล้วบน linux ถ้าไม่มีก็ต้องทำการดาวน์โหลดมาก่อน  ถ้าคุณไม่มีคอมไพเลอร์อยู่เลยก็จะมีปัญหาไก่กับไข่  แต่ก็ยังคงมี precompiled version ของ gcc ที่สามารถใช้งานได้สำหรับส่วนใหญ่ของ OS อยู่ที่ http://gcc.gnu.org

  • Perl  -->> ส่วนใหญ่ของระบบ MRTG ถูกเขียนด้วย Perl scripting language ฉะนั้นในขั้นแรกต้องแน่ใจว่ามี copy of perl อยู่ในเครื่องของคุณแล้ว และอย่างน้อยต้องเป็นเวอร์ชัน 5.005 ถึงจะทำงานได้ดีกับ MRTG วิธีการตรวจสอบว่ามี Perl อยู่ในเครื่องแล้วยังให้ลองพิมพ์คำสั่ง perl -v ดู ซึ่งส่วนใหญ่ใน Linux ผมว่ามีอยู่แล้วนะครับ  คุณสามารถดาวน์โหลดเวอร์ชันล่าสุดของ perl ได้ที่ www.perl.com

MRTG COMPILATION
ก่อนที่จะคอมไพล์
MRTG คุณต้องไปดาวน์โหลด MRTG มาก่อนนะครับซึ่งในตัวอย่างนี้ของใช้ MRTG เวอร์ชัน
mrtg-2.9.22 สามารถดาวน์โหลดได้ที่ http://people.ee.ethz.ch/~oetiker/webtools/mrtg/pub/ ชื่อไฟล์คือ mrtg-2.9.22.tar.gz  โดยในที่นี้ได้ดาวน์โหลดมาไว้ที่ /usr/local/src  เมื่อดาวน์โหลดมาแล้วก็ให้ทำการ unzip โดยใช้คำสั่งดังนี้

cd /usr/local/src
gunzip -c mrtg-2.9.22.tar.gz | tar xvf -


ซึ่งไฟล์ทั้งหมดก็จะถูก
unzip ไปไว้ในไดเร็คทอรี่ชื่อ mrtg-2.9.22 (นั่นคืออยู่ในตำแหน่ง /usr/local/src/mrtg-2.9.22) ดังนั้นต่อไปให้คุณใช้คำสั่งต่อไปนี้

cd mrtg-2.9.22

ถ้าไลบรารี่ทั้งหมดได้ถูกติดตั้งอยู่ในเครื่องของคุณแล้ว ก็ให้ทำการ
configure ด้วยคำสั่งต่อไปนี้

./configure --prefix=/usr/local/mrtg-2

ซึ่งตำแหน่ง /usr/local/mrtg-2 ตามคำสั่งข้างบน  ก็เป็นตำแหน่งที่ใช้เก็บโปรแกรม mrtg สำหรับการใช้งาน  ซึ่งตำแหน่งนี้คุณจะเปลี่ยนเป็นอย่างอื่น ก็ได้

การ
configure เป็นการทำให้แน่ใจว่า environment ของคุณเหมาะสม (fit) สำหรับการสร้าง mrtg ซึ่งเมื่อคุณใช้คำสั่ง configure ระบบก็จะบอกคุณว่าให้ทำอะไรบ้าง  ถ้าทุกอย่าง OK คุณจะต้องจบด้วยการ Makefile สำหรับขั้นต่อไปก็ให้พิมพ์คำสั่ง make ดังนี้

make

คำสั่ง make จะเป็นการสร้าง rateup binary และแก้ไข perl pathnames ทั้งหมดในสคริปต์  และตอนนี้คุณก็สามารถติดตั้ง mrtg ด้วยการพิมพ์คำสั่งต่อไปนี้

make install    (requires gnu install)

ซอร์ฟแวร์ทั้งหมดที่ MRTG ต้องการในตอนนี้ก็ถูกติดตั้งเรียบร้อยแล้วภายใต้ไดเร็กทอรี่ /usr/local/mrtg-2 (ของคุณอาจเป็นไดเร็กทอรี่อื่นได้)

ในตอนนี้คุณสามารถลบไลบรารี่ที่เราได้คอมไพล์แล้วข้างบนได้  แต่คุณอาจจะเก็บเอาไว้เพื่อการคอมไพล์อีกครั้งจนกว่าคุณจะทำการคอมไพล์เวอร์ชันใหม่ของ mrtg 

CONFIGURATION
ต่อไปเราก็จะมาเริ่มคอนฟิก MRTG กัน แต่ก่อนที่จะคอฟฟิกคุณต้องทราบข้อมูล 2 อย่างต่อไปนี้ด้วย
1.
IP Address หรือ Host Name ของ SNMP port number ของอุปกรณที่คุณต้องการจะมอนิเตอร์ ซึ่งถ้าอุปกรณ์ของคุณเป็น เราเตอร์ ก็คือ IP ที่เป็น Gateway หรือ IP ที่เป็น ethernet บนเราเตอร์นั่น เอง หรือถ้าใครจะใช้ IP ของพอร์ต WAN ก็ได้เหมือนกับครับ แต่ผมคิดว่า IP ของ Ethernet น่าจะเร็วกว่า
2.คุณต้องรู้ค่าของ
read-only SNMP community string บนอุปกรณ์ของคุณ ถ้าไม่รู้ก็ให้พยายามใช้ public ซึ่งเป็นค่า default ครับ

สำหรับในตัวอย่างนี้ผมใช้เราเตอร์ที่เป็น
CISCO โดยมี IP ของพอร์ต Ethernet เป็น 39.1.6.1 และ Commnity String เป็น Public


การคอนฟิก mrtg เพื่อมอนิเตอร์ดู network device ขั้นตอนนี้จะเป็นการสร้างไฟล์ที่ชื่อว่า mrtg.cfg ซึ่งเป็นไฟล์ที่กำหนดว่าคุณจะมอนิเตอร์ดูอะไร  โชคดีที่คุณไม่ต้อง "to dive straight in" และเริ่มเขียนไฟล์คอนฟิกด้วยตัวคุณเองทั้งหมด  เพราะ copy of cfgmaker ได้มาพร้อมกับ mrtg แล้ว  ตัว cfgmaker เป็นสคริปต์ที่คุณสามารถชี้ไปที่ยัง router ที่คุณเลือก และจะสร้าง mrtg configure file สำหรับคุณ   คุณสามารถหาสคริปต์ตัวนี้คือ cfgmager ได้ที่ ซับไดเร็กทอรี่ bin

ตอนนี้คุณต้องมีการสร้างไดเร็กทอรี่ที่ใช้เก็บ configure file แต่ถ้าคุณจะเก็บไว้ในไดเร็กทอรี่ที่มีอยู่แล้วก็ไม่ต้อง แต่ในที่นี้จะเก็บ configure file ไว้ที่ /home/mrtg/cfg จึงต้องการมีการสร้างไดเร็กทอรี่นี้ขึ้นมาก่อน

ฉะนั้นตอนให้คุณเข้าไปที่
bin (/usr/local/mrtg-2/bin) แล้วพิมพ์ว่า

cfgmaker --global 'WorkDir: /home/httpd/mrtg' --global 'Options[_]: bits,growright' --output /home/mrtg/cfg/mrtg.cfg community@router.abc.xyz

โดยในส่วน community@roter.abc.zyz ของผมนั้นใช้เป็น :  public@39.1.6.1

เมื่อพิมพ์คำสั่งไปแล้ว ก็จะเป็นการสั่งให้มีการติดต่อกับ router เพื่ออ่านค่าพารามิเตอร์ของพอร์ตต่าง ๆ บนเราเตอร์ (Ethernet และ Wan) ไปเก็บลงสู่ไฟล์ mrtg.cfg 

ไฟล์
mrtg.cfg ซึ่งเป็น
mrtg config file จะถูกสร้างไว้ในตำแหน่ง /home/mrtg/cfg (ตามที่ระบุในคำสั่ง)  และค่าของ WorkDir ซึ่งจากคำสั่งข้างบนจะอยู่ที่ /home/httpd/mrtg  ก็เป็นตำแหน่งที่ใช้สำหรับการเก็บไฟล์ชนิดที่เป็น html page ซึ่งตำแหน่งนี้จะเก็บไว้ตรงไหนก็ได้ขึ้นอยู่กับคุณครับ โดยค่านี้จะถูกบันทึกลงสู่ไฟล์ mrtg.cfg

ส่วนออฟชั่นที่เป็น --global 'Options[_]: bits,growright' ก็เป็นการสั่งให้การแสดงผลของกราฟเริ่มต้นจากด้านขวามือ ซึ่งถ้าไม่มีออฟชันนี้กราฟจะเริ่มต้นที่ด้านซ้ายมือ

ถ้าคุณเปิดดูไฟล์ mrtg.cfg จะเห็นว่าในบรรทัดแรก ๆ จะมีค่าตรงกับที่เราพิมพ์เข้าไป  และในส่วนถัดไปของไฟล์นี้จะมีคำสั่งภาษา html และพารามิเตอร์ของพอร์ตต่าง ๆ ที่จะนำไปใช้สร้างไฟล์ html ต่อไป

แต่คุณต้องไม่ลืมสร้างไดเร็คทออรี่ /home/httpd/mrtg ไว้ด้วยนะครับ เพราะไม่งั้นจะไม่สามารถสร้างไฟล์ html ได้

RUNNING MRTG
วิธีการการรัน mrtg ก็ให้พิมพ์คำสั่งต่อไปนี้ลงไป

/usr/local/mrtg-2/bin/mrtg  /home/mrtg/cfg/mrtg.cfg

คำสั่งนี้ก็เป็นการรัน perl script ที่ชื่อ mrtg (/usr/local/mrtg-2/bin/mrtg) โดยใช้ config file  (/home/mrtg/cfg/mrtg.cfg) ประกอบการรัน  การรันจะเป็นการ query ไปยังเราเตอร์ และสร้าง first mrtg trafic graphs and webpages โดยการรันในครั้งแรกนี้จะมีข้อความเกี่ยวกับ log file ฟ้องขึ้นมา ซึ่งไม่ต้องสนใจมัน  เพราะนี่เป็นภาวะปกติสำหรบการรัน mrtg สองครั้งแรก

ให้ไปดูที่ไดเร็คทอรี่ /home/httpd/mrtg จะเห็นว่ามีไฟล์เกิดขึ้นจำนวนหลายไฟล์ ซึ่งจะมีชนิดของไฟล์เป็น 3 ประเภทคือ

1.
html file ซึ่งจำนวนของไฟล์ประเภทนี้จะเท่ากับจำนวนของพอร์ต ต่าง ๆ ที่ใช้งานอยู่ของเราเตอร์ ไฟล์นี้เองที่เราจะต้องเปิดดูผ่าน browser เพื่อดูทราฟฟิกของพอร์ตต่าง ๆ
2.
png file เป็นไฟล์ภาพที่ใช้แสดงกราฟของทราฟฟิก
3.
log file

ซึ่งถ้าเราเปิดดู html ไฟล์ในตอนนี้เราจะเห็นแต่กราฟว่างเปล่า  เป็นเพราะว่าตอนนี้คำสั่ง
/usr/local/mrtg-2/bin/mrtg /home/mrtg/cfg/mrtg.cfg จะทำงานแค่ครั้งเดียวตอนที่เราพิมพ์ไปเท่านั้น วิธีที่จะให้มีกราฟเกิดขึ้นคุณจะต้องพิมพ์คำสั่ง /usr/local/mrtg-2/bin/mrtg /home/mrtg/cfg/mrtg.cfg อยู่ทุกช่วงเวลา ให้คุณลองทิ้งเวลาไปซัก 5 นาที แล้วให้พิมพ์คำสั่ง /usr/local/mrtg-2/bin/mrtg /home/mrtg/cfg/mrtg.cfg อีกครั้งคุณก็จะเห็นกราฟของทราฟฟิกเกิดขั้นมานิดหน่อย และข้างบนของกราฟให้สังเกตว่าค่าเวลาในการแสดงผลจะเปลี่ยนไปตามเวลาที่เราพิมพ์คำสั่ง

จะเห็นว่าถ้าจะให้มานั่งพิมพ์คำสั่งดังกล่าวอยู่ทุกช่วงเวลาคงจะไม่ใช่สิ่งที่ควรทำแน่ ๆ ดังนั้นเราจะต้องหาวิธีให้
MRTG รันทุกช่วงเวลาให้ได้

การทำให้
MRTG รันทุกช่วงเวลา
ขั้นแรกก็ให้เพิ่มออฟชั่นต่อไปนี้ (เป็น script หนึ่งบรรทัด) ไว้ในส่วนบน ๆ ของ config file (mrtg.cfg)

RunAsDaemon: yes

จากนั้นก็ให้ลองรัน mrtg ใหม่อีกครั้งดังนี้

/usr/local/mart-2/bin/mrtg /home/mrtg/cfg/mrtg.cfg --loging /var/log/mrtg.log


คำสั่งข้างบนนี้ จะเป็นการสั่งให้ mrtg รันทุกช่วงเวลาครับ ซึ่งค่า default จะมีการรันทุก 5 นาที ดังนั้นหลังจากนี้ไปผลของกราฟจะมีการเปลี่ยนแปลงทุก ๆ 5 นาที (ยกเว้นมีการปิดเครื่อง) ให้ดูเวลาบนกราฟประกอบครับ ในคำสั่งข้างบนมีออฟชันเพิ่มคือ --logging /var/log/mrtg.log ซึ่งเป็นการสั่งให้มีการเก็บ log file ลงในไฟล์
/var/log/mrtg.log นั่นเอง

ถ้าคุณเอา
mrtg ไปติดตั้งบน Web Server ที่วางอยู่บนอินเตอร์เน็ตหรือจะเป็นอินทราเน็ตก็แล้วแต่ ก็จะทำให้สามารถดูผลของกราฟ จากที่ไหนก็ได้ครับ นั่นคือในตอนสร้างไฟล์ config ก็ให้เปลี่ยนไดเร็คทอรี่ที่ใช้เก็บ html page ไปเป็นตำแหน่งของ document root (หรือไดเร็กทอรี่ย่อยภายใต้ document root) ของ Web Server หรือตำแหน่งอื่น ๆ ผ่านคำสั่ง Alias บนไฟล์ config ของ Apache Web Server

จากที่กล่าวมาเมื่อใดที่คุณมีการปิดเครื่องหรือ restart เครื่องที่ได้ลง MRTG ไว้ ก็จะส่งผลให้ Service ของ MRTG ถูกปิดไปด้วย ซึ่งวิธีการที่จะรัน MRTG ขึ้นมาใหม่ก็ต้องมีการพิมพ์คำสั่ง
/usr/local/mart-2/bin/mrtg  /home/mrtg/cfg/mrtg.cfg --loging /var/log/mrtg.log ทุกครั้งไป 

ซึ่งจะไม่สะดวกนักสำหรับเครื่องที่ต้องมีการปิด-เปิด บ่อย ๆ วิธีการที่ทำให้สะดวกขึ้นก็คือการเอาสั่ง ดังกล่าวไปเก็บไว้ในไฟล์ /etc/rc.d/rc.local เพื่อให้มีการรัน mrtg ทุกครั้งที่มีการเปิดเครื่อง