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 (tum@ezylinux.com)

ขั้นต่อมาให้ทำการแก้ไขค่าของ 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 และใส่ข้อมูลข้างล่างลงในไฟล์นี้

การใช้ 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 ของท่านครับ

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

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

Related posts:

  1. Setup MRTG to monitor CPU workload , Memory and Disk use status with IOSTAT. การติดตั้ง mrtg ในการ monitor สถานะต่างๆ ที่จะพูดถึงต่อไปนี้เป็นการนำ monitor tools...
  2. Enable Dynamic CPU Speed Scaling in Linux เทคโนโลยีเกี่ยวกับการประหยัดพลังงานของ Linux ในชื่อ “cpuspeed” ได้ถูกพัฒนามาตั้งแต่ทาง intel และ amd...
  3. Why CPU stats between ps and top Command are Different ความแตกต่างของการใช้ command ps กับ top ในการดู CPU stat...
  4. What are the memory and CPU limits of the largesmp kernel in Red Hat Enterprise Linux 4? ใน RedHat v.4 (Update 3 ขึ้นไป) ที่ใช้งานกันอยู่ในปัจจุบันนี้ ทาง...
  5. MySQL replication: ‘show master status’ shows ‘Empty set (0.00 sec)’ หลังจากได้เตรียม server สำหรับ MySQL replication ด้วยการทำให้ข้อมูลของทั้งสองเครื่องเหมือนกันเรียบร้อยแล้ว ก็มาถึงขั้นตอนการ setup...

You can leave a response, or trackback from your own site.

Leave a Reply