ติดตั้ง mrtg บน ubuntu

จาก Wiki Opensource

ข้ามไปที่: นำทาง, ค้นหา

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่01-04-2552

ดูแลโดย WIPAT


  • ทดสอบกับ ubuntu 8.04
  • ต้องมีการติดตั้งโปรแกรม apache  มาก่อน มีคำแนะนำตามบันทึก ติดตั้ง apache บน ubuntu
  • ต้องมีการติดตั้งโปรแกรม snmpd มาก่อน มีคำแนะนำตามบันทึก ติดตั้ง snmpd บน ubuntu
  1. ติดตั้งโปรแกรม mrtg ด้วยคำสั่ง  sudo apt-get install mrtg

    จะได้ home directory ของ mrtg อยู่ที่  /var/www/mrtg

  2. ให้แก้ไขแฟ้ม /etc/apache2/apache2.conf เพิ่มบรรทัดข้อความต่อท้ายสุดว่า
    Alias /mrtg /var/www/mrtg
    <Location /mrtg>
        Order deny,allow
        Deny from all
        Allow from all
    </Location>
    แล้วสั่งให้ apache ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/apache2 force-reload

    ใช้ brower ไปตรวจสอบดูว่า mrtg พร้อมแสดงบนเวบแล้ว โดยไปที่  http://yourhost.domain/mrtg/mrtg-ti.png

  3. ต้องสร้างพื้นที่ /var/lock/mrtg  ด้วยคำสั่ง sudo mkdir -p /var/lock/mrtg
    และต้องสร้างทุกครั้งที่บูทเครื่องด้วย โดยการเพิ่มคำสั่งดังกล่าว ไว้ใน /etc/rc.local

  4. ตัวอย่างการติดตั้งสำหรับ server ชื่อ myhost.domain

    สร้าง directory สำหรับเก็บข้อมูลแสดงผล ด้วยคำสั่ง sudo mkdir -p /var/www/mrtg/myhost
    สร้าง directory สำหรับเก็บการตั้งค่า sudo mkdir -p /etc/mrtg
    สร้าง config file สำหรับ myhost ด้วยคำสั่ง
    sudo cfgmaker  -global "options[_]:bits,growright" --global "workdir: /var/www/mrtg/myhost" public@localhost > /tmp/mrtg-myhost.cfg
    sudo cp  /tmp/mrtg-myhost.cfg /etc/mrtg/mrtg-myhost.cfg

    ทดสอบสร้างภาพต้นแบบด้วยคำสั่ง  sudo env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg-myhost.cfg

    สร้าง index.html สำหรับ homepage mrtg ของ myhost ด้วยคำสั่ง
    sudo indexmaker --column=1 --output=/var/www/mrtg/myhost/index.html /etc/mrtg/mrtg-myhost.cfg

  5. ตั้งค่าให้ mrtg บันทึกค่าทุกๆ 5 นาที ด้วยการสร้างแฟ้ม /etc/cron.d/mrtg-myhost ให้มีข้อความว่า
    */5 * * * * root  env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg-myhost.cfg
    แล้วสั่งให้ cron ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/cron restart

    ทดสอบดูผลงานได้ที่เวบ http://mywebserver/mrtg/myhost

    เนื่องจากบางครั้งพื้นที่ /var/lock/mrtg  หายไป ทำให้ mrtg ไม่ทำงาน จึงแนะนำให้ใช้ shell script ช่วยเพิ่มเติม
    โดยการสร้างแฟ้มชื่อ /etc/mrtg/mymrtg.sh มีข้อมูลดังตัวอย่างคือ
    #!/bin/bash
    if [ ! -d /var/lock/mrtg ] ; then
      mkdir -p /var/lock/mrtg
    fi
    env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg-myhost.cfg

    แล้วแก้ไขแฟ้ม /etc/cron.d/mrtg-myhost ให้เป็นดังนี้
    */5 * * * * root  sh /etc/mrtg/mymrtg.sh
    แล้วสั่งให้ cron ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/cron restart

    หากต้องการเพิ่มกราฟ mrtg เส้นอื่นเข้าไปอีก ก็เพิ่มคำสั่งต่อท้ายบรรทัดในแฟ้ม /etc/mrtg/mymrtg.sh ได้เลย

  6. ตัวอย่างการทำกราฟ Idle CPU and Load
    ใช้ข้อมูล ssCpuIdle.0 และ laLoadInt.1 จาก snmp แสดงผลภาพเป็นกราฟสองเส้น

    สร้างแฟ้ม /etc/mrtg/myhost-cpu.cfg มีข้อมูลตัวอย่างประมาณว่า
    WorkDir: /var/www/mrtg/myhost
    LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
    Target[myhost-cpu]:ssCpuIdle.0&laLoadInt.1:public@localhost
    RouterUptime[myhost-cpu]: public@localhost
    MaxBytes[myhost-cpu]: 10000
    Title[myhost-cpu]: Idle CPU and Load average
    PageTop[myhost-cpu]: <H1>Idle CPU and Load average</H1>
    ShortLegend[myhost-cpu]: %
    YLegend[myhost-cpu]: CPU and Load Utilization
    Legend1[myhost-cpu]: Idle CPU
    Legend2[myhost-cpu]: Load average
    LegendI[myhost-cpu]:  Idle
    LegendO[myhost-cpu]:  Load
    Options[myhost-cpu]: gauge, nopercent, growright

    ทดสอบสร้างภาพต้นแบบด้วยคำสั่ง sudo env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-cpu.cfg

  7. ตัวอย่างการทำกราฟ memory และ swap
    ใช้ข้อมูล memAvailReal.0 และ memTotalSwap.0 จาก snmp แสดงผลภาพเป็นกราฟสองเส้น

    สร้างแฟ้ม /etc/mrtg/myhost-mem.cfg มีข้อมูลตัวอย่างประมาณว่า
    WorkDir: /var/www/mrtg/myhost
    LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
    Target[myhost-mem]: memAvailReal.0&memTotalSwap.0:public@localhost - memIndex.0&memAvailSwap.0:public@localhost + memBuffer.0&memIndex.0:public@localhost + memCached.0&memIndex.0:public@localhost
    RouterUptime[myhost-mem]: public@localhost
    MaxBytes[myhost-mem]: 2000000
    Title[myhost-mem]: Free Memory and Swap Used
    PageTop[myhost-mem]: <H1>Free Memory and Swap Used</H1>
    kMG[myhost-mem]: k,M,G,T,P,X
    ShortLegend[myhost-mem]: bytes
    YLegend[myhost-mem]: bytes
    LegendI[myhost-mem]:  Free Memory:
    LegendO[myhost-mem]: Swap Used:
    Legend1[myhost-mem]: Free memory, in bytes
    Legend2[myhost-mem]: Swap Used, in bytes
    Options[myhost-mem]: gauge, nopercent, growright

    ทดสอบสร้างภาพต้นแบบด้วยคำสั่ง sudo env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-mem.cfg

  8. ตัวอย่างทำกราฟ CPU wait for IO เพียงเส้นเดียว
    ไม่ได้ใช้ข้อมูลจาก snmp แต่ดึงมาจาก shell script ชื่อ /etc/mrtg/get-cpu-io.sh

    สร้างแฟ้ม /etc/mrtg/get-cpu-io.sh มีข้อมูลว่า
    #!/bin/bash
    CPU_WAIT_IO=$(vmstat|tail -1|awk '{print $16}')
    TIME=$(uptime)
    echo "$CPU_WAIT_IO"
    echo "0"
    echo "$TIME"
    echo "MYHOST"
    เสร็จแล้วแก้ไขให้ execute ได้ด้วยคำสั่ง sudo chmod +x /etc/mrtg/get-cpu-io.sh

    สร้างแฟ้ม /etc/mrtg/myhost-cpu-io.cfg มีข้อมูลตัวอย่างประมาณว่า
    WorkDir: /var/www/mrtg/myhost
    Target[myhost-cpu-io]:`/etc/mrtg/get-cpu-io.sh`
    MaxBytes[myhost-cpu-io]: 100
    Title[myhost-cpu-io]: CPU Time spent waiting for IO
    PageTop[myhost-cpu-io]: <H1>CPU Time spent waiting for IO</H1>
    ShortLegend[myhost-cpu-io]: %
    YLegend[myhost-cpu-io]: wait IO
    Legend1[myhost-cpu-io]: current:
    Legend2[myhost-cpu-io]:
    LegendI[myhost-cpu-io]: current, %
    LegendO[myhost-cpu-io]:
    Options[myhost-cpu-io]: gauge, nopercent, growright

    ทดสอบสร้างภาพต้นแบบด้วยคำสั่ง sudo env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-cpu-io.cfg

  9. ตัวอย่างทำกราฟ Apache connection เพียงเส้นเดียว
    ไม่ได้ใช้ข้อมูลจาก snmp แต่ดึงมาจาก shell script ชื่อ /etc/mrtg/get-apache-session.sh

    สร้างแฟ้ม /etc/mrtg/get-apache-session.sh มีข้อมูลว่า
    #!/bin/bash
    SESSION=$(ps ax|grep apache2|grep -c -v grep)
    TIME=$(uptime)
    echo "$SESSION"
    echo "0"
    echo "$TIME"
    echo "MYHOST"
    เสร็จแล้วแก้ไขให้ execute ได้ด้วยคำสั่ง sudo chmod +x /etc/mrtg/get-apache-session.sh

    สร้างแฟ้ม /etc/mrtg/myhost-apache-session.cfg มีข้อมูลตัวอย่างประมาณว่า
    WorkDir: /var/www/mrtg/myhost
    Target[myhost-apache-session]:`/etc/mrtg/get-apache-session.sh`
    MaxBytes[myhost-apache-session]: 1000
    Title[myhost-apache-session]: Apache connection
    PageTop[myhost-apache-session]: <H1>Apache connection</H1>
    ShortLegend[myhost-apache-session]: conns
    YLegend[myhost-apache-session]: conns
    Legend1[myhost-apache-session]: current:
    Legend2[myhost-apache-session]:
    LegendI[myhost-apache-session]: current, number of connections
    LegendO[myhost-apache-session]:
    Options[myhost-apache-session]: gauge, nopercent, growright

    ทดสอบสร้างภาพต้นแบบด้วยคำสั่ง sudo env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-apache-session.cfg

  10. ตัวอย่างทำกราฟ Apache memory เพียงเส้นเดียว
    ไม่ได้ใช้ข้อมูลจาก snmp แต่ดึงมาจาก shell script ชื่อ /etc/mrtg/get-apache-mem.sh

    สร้างแฟ้ม /etc/mrtg/get-apache-mem.sh มีข้อมูลว่า
    #!/bin/bash
    TEMP1="/tmp/get-apache-mem-temp1.tmp.$$"
    ps ax|grep "apache2"|grep -v "grep"|awk '{print $1}' > $TEMP1
    MEMORY=0
    while read LINE ; do
      PRIVATE=$(pmap -d $LINE|tail -1|awk '{print $4}'|cut -d'K' -f1)
      MEMORY=$(expr $MEMORY + $PRIVATE)
    done < $TEMP1
    TIME=$(uptime)
    echo $MEMORY
    echo "0"
    echo "$TIME"
    echo "MYHOST"
    rm $TEMP1

    เสร็จแล้วแก้ไขให้ execute ได้ด้วยคำสั่ง sudo chmod +x /etc/mrtg/get-apache-mem.sh

    สร้างแฟ้ม /etc/mrtg/myhost-apache-mem.cfg มีข้อมูลตัวอย่างประมาณว่า
    WorkDir: /var/www/mrtg/myhost
    Target[myhost-apache-mem]: `/etc/mrtg/get-apache-mem.sh`
    MaxBytes[myhost-apache-mem]: 10000000
    Title[myhost-apache-mem]: Apache memory usage
    PageTop[myhost-apache-mem]: <H1>Apache memory usage</H1>
    kMG[myhost-apache-mem]: k,M,G,T,P,X
    ShortLegend[myhost-apache-mem]: bytes
    YLegend[myhost-apache-mem]: bytes
    Legend1[myhost-apache-mem]: private memory:
    Legend2[myhost-apache-mem]:
    LegendI[myhost-apache-mem]: private memory, in bytes
    LegendO[myhost-apache-mem]:
    Options[myhost-apache-mem]: gauge, nopercent, growright

    ทดสอบสร้างภาพต้นแบบด้วยคำสั่ง sudo env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-apache-mem.cfg

  11. ตัวอย่างทำกราฟ Mysql connection เพียงเส้นเดียว
    ไม่ได้ใช้ข้อมูลจาก snmp แต่ดึงมาจาก shell script ชื่อ /etc/mrtg/get-mysql-session.sh

    สร้างแฟ้ม /etc/mrtg/get-mysql-session.sh มีข้อมูลว่า
    #!/bin/bash
    SESSION=$(mysqladmin -uroot -pmysqlpassword extended|grep "Threads_connected"|cut -d'|' -f3)
    TIME=$(uptime)
    echo "$SESSION"
    echo "0"
    echo "$TIME"
    echo "MYHOST"
    เสร็จแล้วแก้ไขให้ execute ได้ด้วยคำสั่ง sudo chmod +x /etc/mrtg/get-mysql-session.sh

    สร้างแฟ้ม /etc/mrtg/myhost-mysql-session.cfg มีข้อมูลตัวอย่างประมาณว่า
    WorkDir: /var/www/mrtg/myhost
    Target[myhost-mysql-session]:`/etc/mrtg/get-mysql-session.sh`
    MaxBytes[myhost-mysql-session]: 1000
    Title[myhost-mysql-session]: Mysql connection
    PageTop[myhost-mysql-session]: <H1>Mysql connection</H1>
    ShortLegend[myhost-mysql-session]: conns
    YLegend[myhost-mysql-session]: conns
    Legend1[myhost-mysql-session]: current:
    Legend2[myhost-mysql-session]:
    LegendI[myhost-mysql-session]: current, number of connections
    LegendO[myhost-mysql-session]:
    Options[myhost-mysql-session]: gauge, nopercent, growright

    ทดสอบสร้างภาพต้นแบบด้วยคำสั่ง sudo env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-mysql-session.cfg

  12. ตัวอย่างทำกราฟ Mysql memory เพียงเส้นเดียว
    ไม่ได้ใช้ข้อมูลจาก snmp แต่ดึงมาจาก shell script ชื่อ /etc/mrtg/get-mysql-mem.sh

    สร้างแฟ้ม /etc/mrtg/get-mysql-mem.sh มีข้อมูลว่า
    #!/bin/bash
    MYSQL_PID=$(ps ax|grep "mysqld.pid"|grep -v "grep"|awk '{print $1}')
    MEMORY=$(pmap -d $MYSQL_PID|tail -1|awk '{print $4}'|cut -d'K' -f1)
    TIME=$(uptime)
    echo $MEMORY
    echo "0"
    echo "$TIME"
    echo "MYHOST"

    เสร็จแล้วแก้ไขให้ execute ได้ด้วยคำสั่ง sudo chmod +x /etc/mrtg/get-mysql-mem.sh

    สร้างแฟ้ม /etc/mrtg/myhost-mysql-mem.cfg มีข้อมูลตัวอย่างประมาณว่า
    WorkDir: /var/www/mrtg/myhost
    Target[myhost-mysql-mem]: `/etc/mrtg/get-mysql-mem.sh`
    MaxBytes[myhost-mysql-mem]: 10000000
    Title[myhost-mysql-mem]: Mysql memory usage
    PageTop[myhost-mysql-mem]: <H1>Mysql memory usage</H1>
    kMG[myhost-mysql-mem]: k,M,G,T,P,X
    ShortLegend[myhost-mysql-mem]: bytes
    YLegend[myhost-mysql-mem]: bytes
    Legend1[myhost-mysql-mem]: private memory:
    Legend2[myhost-mysql-mem]:
    LegendI[myhost-mysql-mem]: private memory, in bytes
    LegendO[myhost-mysql-mem]:
    Options[myhost-mysql-mem]: gauge, nopercent, growright

    ทดสอบสร้างภาพต้นแบบด้วยคำสั่ง sudo env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-mysql-mem.cfg

  13. ตัวอย่างการทำกราฟ TCP Establish connection
    ใช้ข้อมูล tcpCurrEstab.0 จาก snmp แสดงผลภาพเป็นกราฟเพียงเส้นเดียว

    สร้างแฟ้ม /etc/mrtg/myhost-tcpestab.cfg มีข้อมูลตัวอย่างประมาณว่า

    WorkDir: /var/www/mrtg/myhost
    LoadMIBs: /usr/share/snmp/mibs/TCP-MIB.txt
    Target[myhost-tcpestab]: tcpCurrEstab.0&tcpCurrEstab.0:public@localhost
    RouterUptime[myhost-tcpestab]: public@localhost
    MaxBytes[myhost-tcpestab]: 1000000
    Title[myhost-tcpestab]: TCP Current Establish
    PageTop[myhost-tcpestab]: <H1>TCP Current Establish </H1>
    ShortLegend[myhost-tcpestab]: conns
    YLegend[myhost-tcpestab]: conns
    LegendI[myhost-tcpestab]: Current:
    LegendO[myhost-tcpestab]:
    Legend1[myhost-tcpestab]: Current, numbers of connections
    Legend2[myhost-tcpestab]:
    Options[myhost-tcpestab]: nopercent, growright, gauge

    ทดสอบสร้างภาพต้นแบบด้วยคำสั่ง sudo env LANG=C /usr/bin/mrtg /etc/mrtg/myhost-tcpestab.cfg

  14. ตัวอย่างคำสั่งในการแสดง index สำหรับกราฟหลายรูปในหน้าเดียว

    sudo indexmaker --column=1 --output=/var/www/mrtg/myhost/index.html /etc/mrtg/myhost-tcpestab.cfg  /etc/mrtg/myhost-cpu.cfg  /etc/mrtg/mrtg-myhost.cfg

เครื่องมือส่วนตัว