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 ต่างๆของเครื่อง ดังข้างล่าง
1 2 3 4 5 6 7 8 9 10 11 12 |
#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 (tum@ezylinux.com) |
ขั้นต่อมาให้ทำการแก้ไขค่าของ apache สำหรับใช้งานกับ mrtg โดยเฉพาะ โดยใช้ไปแก้ไขที่ไฟล์
#vi /etc/httpd/conf/httpd.conf
แล้วทำการเพิ่มข้อความด้านล่างลงไป
1 2 3 |
DocumentRoot "/var/www/html/mrtg" |
ต่อมาใช้คำสั่งด้านล่างสร้างไฟล์ config เกี่ยวกับการ Monitor traffic ของ network
1 2 3 4 5 6 7 8 9 |
/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 ดังข้างล่าง
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
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 และใส่ข้อมูลข้างล่างลงในไฟล์นี้
การใช้ MRTG monitor CPU temp นี้จะใช้ได้ก็ต่อเมื่อเครื่องมี sensor สำหรับวัดอุณหภูมิเท่านั้น
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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
1 2 3 4 5 6 7 8 9 10 11 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/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 ด้วยคำสั่งด้านล่าง แต่จะยังไม่มีข้อมูลแสดงที่กราฟนะครับ
1 2 3 4 5 6 7 8 |
# 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 ต่างๆโดยพิมพ์ตามคำสั่งด้านล่างครับ
1 2 3 4 5 6 7 8 9 10 11 |
/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 และพิมพ์ข้อมูลด้านล่างลงไปครับ
1 2 3 4 5 6 7 8 9 |
*/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 ของท่านครับ
เป็นยังไงครับไม่ยากเลยนะครับ
ลินุกซ์ง่ายนิดเดียว…