จากบทความที่แล้วเรื่องการติดตั้ง mrtg กับ IOSTAT ซึ่งเป็นการติดตั้งวิธีการที่ประยุกต์เอาคำสั่งพวก Monitor tools มาช่วยในการทำงานกับ mrtg ซึงแตกต่างจากหลักการทั่วไปที่ส่วนมากจะนำ SNMP มาใช้ในการส่งข้อมูลสถานะต่างๆให้กับ mrtg และในบทความนี้จะพูดถึงการนำ SNMP มาใช้งานกับ mrtg ซึ่งเป็นวิธีที่มีความนิยมใช้งานกันอย่างแพร่หลายมากกว่าการติดตั้ง mrtg กับ IOSTAT เพื่อไม่ให้เป็นการเสียเวลาเรามาเริ่มกันเลยดีกว่า


ขั้นแรกให้ทำการแก้ไขไฟล์ snmp.conf ก่อนเพื่อทำการเปิด service เกี่ยวกับพวก information ต่างๆของเครื่อง ดังข้างล่าง

#vi /etc/snmp/snmpd.conf
com2sec local     127.0.0.1/32    public
com2sec local     10.10.10.0/24   public
group MyROGroup v1         local
group MyROGroup v2c        local
group MyROGroup usm        local
view all    included  .1                               80
access MyROGroup ""      any       noauth    exact  all    none   none
syslocation (MyLocation)
syscontact ([email protected])

ขั้นต่อมาให้ทำการแก้ไขค่าของ apache สำหรับใช้งานกับ mrtg โดยเฉพาะ โดยใช้ไปแก้ไขที่ไฟล์

#vi /etc/httpd/conf/httpd.conf

แล้วทำการเพิ่มข้อความด้านล่างลงไป

DocumentRoot "/var/www/html/mrtg"

ต่อมาใช้คำสั่งด้านล่างสร้างไฟล์ config เกี่ยวกับการ Monitor traffic ของ network

/usr/bin/cfgmaker  \
--output=/etc/mrtg/traffic.cfg \
--ifdesc=ip \
--ifref=descr \
--global "WorkDir: /var/www/html/mrtg/traffic" \
--global "Options[_]: bits,growright" \
public@localhost

หลังจากนั้นมาถึงการสร้างไฟล์ config เพื่อ monitor cpu กันแล้วครับ ใช้คำสั่ง #vi /etc/mrtg/cpu.cfg สร้างและใส่รายละเอียดของการ config ดังข้างล่าง

WorkDir: /var/www/html/mrtg/cpu
LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
Target[localhost.cpu]:ssCpuRawUser.0&ssCpuRawUser.0:[email protected] + ssCpuRawSystem.0&ssCpuRawSystem.0:[email protected] + ssCpuRawNice.0&ssCpuRawNice.0:[email protected]
RouterUptime[localhost.cpu]: [email protected]
MaxBytes[localhost.cpu]: 100
Title[localhost.cpu]: CPU Load
PageTop[localhost.cpu]: Active CPU Load %
Unscaled[localhost.cpu]: ymwd
ShortLegend[localhost.cpu]: %
YLegend[localhost.cpu]: CPU Utilization
Legend1[localhost.cpu]: Active CPU in % (Load)
Legend2[localhost.cpu]:
Legend3[localhost.cpu]:
Legend4[localhost.cpu]:
LegendI[localhost.cpu]:  Active
LegendO[localhost.cpu]:
Options[localhost.cpu]: growright,nopercent

ต่อมาจะเป็นการ config การ Monitor อุณหภูมิของ cpu ด้วยการสร้างไฟล์ก้วยคำสั่ง #vi /etc/mrtg/cpu-temp.cfg และใส่ข้อมูลข้างล่างลงในไฟล์นี้

การใช้ MRTG monitor CPU temp นี้จะใช้ได้ก็ต่อเมื่อเครื่องมี sensor สำหรับวัดอุณหภูมิเท่านั้น

LoadMIBs: /usr/share/snmp/mibs/LM-SENSORS-MIB.txt
Target[localhost.cpu-temp]: .1.3.6.1.4.1.2021.13.16.2.1.3.1&.1.3.6.1.4.1.2021.13.16.2.1.3.1:public@localhost
PageTop[localhost.cpu-temp]: CPU Temperature
WorkDir: /var/www/html/mrtg/temp
Options[localhost.cpu-temp]: nopercent,growright,gauge,noinfo,pngdate,nobanner
Factor[localhost.cpu-temp]: 0.001
PNGTitle[localhost.cpu-temp]: CPU Temperature
Title[localhost.cpu-temp]: CPU Temperature
kMG[localhost.cpu-temp]: C
MaxBytes[localhost.cpu-temp]: 100000
YLegend[localhost.cpu-temp]: Temperature (c)
ShortLegend[localhost.cpu-temp]: C
LegendI[localhost.cpu-temp]: CPU Temperature:
LegendO[localhost.cpu-temp]:
Legend1[localhost.cpu-temp]: CPU Temperature
Legend2[localhost.cpu-temp]:
#Unscaled[localhost.cpu-temp]: ymwd
#WithPeak[localhost.cpu-temp]: ymwd
XSize[localhost.cpu-temp]: 360
YSize[localhost.cpu-temp]: 75
#YTics[localhost.cpu-temp]: 10
Colours[localhost.cpu-temp]: DKBLUE#61A0DF,DKBLUE#0000DD,DARKGREEN#006600,VIOLET#FF00FF

ขั้นตอนนี้จะเป็นการ monitor memory และ swap โดยเพิ่มไฟล์ /etc/mrtg/mem.cfg และ /etc/mrtg/swap.cfg ดังข้างล่าง

#vi /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]: Free Memory
WorkDir: /var/www/html/mrtg/mem
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

#vi /etc/mrtg/swap.cfg

LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
Target[localhost.swap]: memAvailSwap.0&memAvailSwap.0:public@localhost
PageTop[localhost.swap]: Swap Memory
WorkDir: /var/www/html/mrtg/swap
Options[localhost.swap]: nopercent,growright,gauge,noinfo
Title[localhost.swap]: Free Memory
MaxBytes[localhost.swap]: 1000000
kMG[localhost.swap]: k,M,G,T,P,X
YLegend[localhost.swap]: bytes
ShortLegend[localhost.swap]: bytes
LegendI[localhost.swap]:  Free Memory:
LegendO[localhost.swap]:
Legend1[localhost.swap]: Swap memory avail, in bytes

ขั้นตอนนี้เป็นการใส่การ Ping เข้าไปใน mrtg เพื่อทำการ Monitor โดยใส่ข้อมูลในไฟล์ /etc/mrtg/ping.cfg ดังรายละเอียดด้านล่าง

#vi /etc/mrtg/ping.cfg

WorkDir: /var/www/html/mrtg/ping
Title[localhost.ping]: Round Trip Time
PageTop[localhost.ping]: Round Trip Time
Target[localhost.ping]: `/etc/mrtg/ping.sh`
MaxBytes[localhost.ping]: 2000
Options[localhost.ping]: growright,unknaszero,nopercent,gauge
LegendI[localhost.ping]: Pkt loss %
LegendO[localhost.ping]: Avg RTT
YLegend[localhost.ping]: RTT (ms)

เมื่อทำการใส่รายละเอียดค่า config ของการ ping แล้วจะยังไม่สามารถใช้งานได้ครับ จะต้องเขียน script การ ping ขึ้นมาก่อนดังข้างล่างครับ

vi /etc/mrtg/ping.sh

#!/bin/sh
PING="/bin/ping"
# Google, for example
ADDR="google.com"
DATA=`$PING -c10 -s500 $ADDR -q `
LOSS=`echo $DATA | awk '{print $18 }' | tr -d %`
echo $LOSS
if [ $LOSS = 100 ]; then
    echo 0
else
    echo $DATA | awk -F/ '{print $5 }'
fi

จากนั้นใช้คำสั่ง chmod เพื่อให้เวลารัน mrtg ไม่ติด “Permission denied” ด้วยคำสั่ง
# chmod 755 /etc/mrtg/ping.sh

ขั้นตอนนี้เป็นการเริ่มการรัน mrtg ด้วยคำสั่งด้านล่าง แต่จะยังไม่มีข้อมูลแสดงที่กราฟนะครับ

# env LANG=C /usr/bin/mrtg /etc/mrtg/cpu.cfg
# env LANG=C /usr/bin/mrtg /etc/mrtg/cpu-temp.cfg
# env LANG=C /usr/bin/mrtg /etc/mrtg/mem.cfg
# env LANG=C /usr/bin/mrtg /etc/mrtg/swap.cfg
# env LANG=C /usr/bin/mrtg /etc/mrtg/ping.cfg
# env LANG=C /usr/bin/mrtg /etc/mrtg/traffic.cfg

ต่อมาขั้นตอนนี้เป็นการไฟล์ Index เพื่อทำการลิ้งค์ไปยังเพจที่ใช้ monitor ต่างๆโดยพิมพ์ตามคำสั่งด้านล่างครับ

/usr/bin/indexmaker --output=/var/www/html/mrtg/index.html \
--title="Power Under Control" \
--sort=name \
--enumerate \
/etc/mrtg/traffic.cfg \
/etc/mrtg/cpu.cfg \
/etc/mrtg/cpu-temp.cfg \
/etc/mrtg/mem.cfg \
/etc/mrtg/swap.cfg \

และสุดท้านเป็นการสั่งให้ระบบทำงานตามกำหนดเวลาครับ ด้วยคำสั่ง crontab -e และพิมพ์ข้อมูลด้านล่างลงไปครับ

*/3 * * * * /usr/bin/env LANG=C /usr/bin/mrtg /etc/mrtg/cpu.cfg
*/3 * * * * /usr/bin/env LANG=C /usr/bin/mrtg /etc/mrtg/cpu-temp.cfg
*/3 * * * * /usr/bin/env LANG=C /usr/bin/mrtg /etc/mrtg/mem.cfg
*/3 * * * * /usr/bin/env LANG=C /usr/bin/mrtg /etc/mrtg/swap.cfg
*/3 * * * * /usr/bin/env LANG=C /usr/bin/mrtg /etc/mrtg/ping.cfg
*/3 * * * * /usr/bin/env LANG=C /usr/bin/mrtg /etc/mrtg/cpu.cfg
*/5 * * * * /usr/bin/env LANG=C /usr/bin/mrtg /etc/mrtg/traffic.cfg

หลังจากทำการ config เสร็จเรียบร้อยแล้วรอสักระยะหนึ่งครับ เวลาเข้าไปดูให้เข้าไปที่ http://SERVERorIP ของท่านครับ

เป็นยังไงครับไม่ยากเลยนะครับ

ลินุกซ์ง่ายนิดเดียว…