Use SNMP and MRTG to monitor CPU, MEM and Disk use status
จากบทความที่แล้วเรื่องการติดตั้ง 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 (Me )
ขั้นต่อมาให้ทำการแก้ไขค่าของ 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:public@127.0.0.1 + ssCpuRawSystem.0&ssCpuRawSystem.0:public@127.0.0.1 + ssCpuRawNice.0&ssCpuRawNice.0:public@127.0.0.1
RouterUptime[localhost.cpu]: public@127.0.0.1
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 และใส่ข้อมูลข้างล่างลงในไฟล์นี้
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
ขั้นตอนนี้เป็นการเริ่มการรัน 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 ของท่านครับ
เป็นยังไงครับไม่ยากเลยนะครับ
ลินุกซ์ง่ายนิดเดียว…
