• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            lxyfirst

            C++博客 首頁 新隨筆 聯系 聚合 管理
              33 Posts :: 3 Stories :: 27 Comments :: 0 Trackbacks
            rrdtools其實是一個基于文件的數據庫,用于數據積累,統計,生成圖片。
            1.創建數據庫
            rrdtool create usage.rrd DS:cpu:GAUGE:300:0:100 RRA:LAST
            DS指定數據源,后面以':'為分隔符接著定義DS的屬性,格式為DS:ds-name:GAUGE | COUNTER | DERIVE | ABSOLUTE:heartbeat:min:max
            ds-name:數據源的名字,a-zA-Z0-9 。
            統計方式:
            GAUGE:一般用于普通的統計,如不同時間點的人數。
            COUNTER:一般用于持續增加的計數器,計算增加速度。
            COMPUTE:一般用于需要對數據做特殊運算處理。
            RRA指定數據統計方式,主要有MIN(最小值) , MAX(最大值) , AVERAGE(平均值) , LAST(單點值)。

            2.添加數據
            rrdtool update usage.rrd [time:value]

            3.查看數據
            rrdtool fetch
            rrdtool dump

            4.生成圖片
            rrdtool graph


            監控cpu和網卡的腳本實例
            rrd_init.sh
            #!/bin/bash
            cd $(dirname $0)

            #network
            awk -F':' '{if($1~/eth[0123456]$/ && $2 > 0 ) print $1;}' /proc/net/dev | while read if_name
            do
                if_name=${if_name// }
                echo "creating ${if_name}.rrd  ..."
                /usr/local/rrdtool/bin/rrdtool create ${if_name}.rrd -s 60 DS:rx:COUNTER:120:U:U DS:tx:COUNTER:120:U:U RRA:AVERAGE:0.5:1:1440
            done

            #disk io
            awk '{if($3~/[sh]d[abcdefgh]$/ && $4 > 0 ) print $3;}' /proc/diskstats | while read disk_name
            do
                disk_name=${disk_name// }
                echo "creating ${disk_name}.rrd  ..."
                /usr/local/rrdtool/bin/rrdtool create ${disk_name}.rrd -s 60 DS:rio:COUNTER:120:U:U DS:wio:COUNTER:120:U:U RRA:AVERAGE:0.5:1:1440
            done


            #cpu
            awk '{if($1~/^cpu/) print $1;}' /proc/stat | while  read cpu_name
            do
                cpu_name=${cpu_name// }
                echo "creating ${cpu_name}.rrd  ..."
                /usr/local/rrdtool/bin/rrdtool create ${cpu_name}.rrd -s 60 DS:idle:COUNTER:120:U:U DS:user:COUNTER:120:U:U DS:iowait:COUNTER:120:U:U DS:i
            ntr:COUNTER:120:U:U DS:total:COUNTER:120:U:U RRA:AVERAGE:0.5:1:1440

            done

            #memory

            /usr/local/rrdtool/bin/rrdtool create memory.rrd -s 60 DS:TotalMemory:GAUGE:120:U:U DS:FreeMemory:GAUGE:120:U:U DS:TotalSwap:GAUGE:120:U:U D
            S:FreeSwap:GAUGE:120:U:U RRA:AVERAGE:0.5:1:1440


            rrd_stat.sh
            * * * * * /usr/local/rrdtool/scripts/cpu_rrd_stat.sh > /dev/null 2>&1
            #!/bin/bash
            cd $(dirname $0)


            #network
            awk -F':' '{if($1~/eth[0123456]$/ && $2 > 0  ) printf("%s %s\n",$1,$2);}' /proc/net/dev | awk '{printf("%s %d %d\n",$1,$2,$10);}' | while read
             if_name if_rx if_tx
            do
                    if_name=${if_name// }
                    /usr/local/rrdtool/bin/rrdtool update ${if_name}.rrd N:$if_rx:$if_tx
            done

            #disk io
            awk '{if($3~/[sh]d[abcdefgh]$/ && $4 > 0 ) printf("%s %d %d\n",$3,$6,$10); }' /proc/diskstats | while  read disk_name disk_rio disk_wio
            do
                    disk_name=${disk_name// }
                    /usr/local/rrdtool/bin/rrdtool update ${disk_name}.rrd N:$disk_rio:$disk_wio

            done

            #cpu
            awk '{if($1~/^cpu/) {user=$2+$3 ;intr=$7+$8; printf("%s %d %d %d %d %d\n",$1,$5,user,$6,intr,user+$4+$5+$6+intr);} }' /proc/stat | while  read
             cpu_name cpu_idle cpu_user cpu_iowait cpu_intr cpu_total
            do
                    cpu_name=${cpu_name// }
                    /usr/local/rrdtool/bin/rrdtool update ${cpu_name}.rrd N:$cpu_idle:$cpu_user:$cpu_iowait:$cpu_intr:$cpu_total

            done


            awk '{if($1~/^MemTotal/) mem_total=$2;else if($1~/^MemFree/) mem_free=$2;else if($1~/^SwapTotal/) swap_total=$2;else if($1~/^SwapFree/) swap_f
            ree=$2;} END{printf("%d %d %d %d\n",mem_total,mem_free,swap_total,swap_free);}' /proc/meminfo | while  read mem_total mem_free swap_total swap
            _free
            do
                /usr/local/rrdtool/bin/rrdtool update memory.rrd N:$mem_total:$mem_free:$swap_total:$swap_free
            done


            rrd_img.sh
            */5 * * * * /usr/local/rrdtool/scripts/cpu_rrd_img.sh > /dev/null 2>&1
            #!/bin/bash
            cd $(dirname $0)
            awk -F':' '{if($1~/eth[0123456]$/ && $2 > 0 ) print $1;}' /proc/net/dev | while read if_name
            do
            #        -y 10:10 -u 100 -l 0                                             \
                if_name=${if_name// }
                echo "creating [${if_name}.png]  ..."
                /usr/local/rrdtool/bin/rrdtool graph "${if_name}.png"    \
                    -s -86400                                              \
                    -w 500 -h 100                                          \
                    -x MINUTE:30:HOUR:2:HOUR:2:0:%H:%M                \
                    -Y  -t "${if_name} traffic"                      \
                    DEF:rx=${if_name}.rrd:rx:AVERAGE                       \
                    DEF:tx=${if_name}.rrd:tx:AVERAGE                       \
                    CDEF:rx_mbps=rx,1,\/                              \
                    CDEF:tx_mbps=tx,1,\/                              \
                    LINE1:rx_mbps#FF0000:"rx(mbps)"                        \
                    LINE1:tx_mbps#00FF00:"tx(mbps)"


            done

            awk '{if($3~/[sh]d[abcdefgh]$/ && $4 > 0 ) print $3;}' /proc/diskstats | while read disk_name
            do
                disk_name=${disk_name// }
                echo "creating [${disk_name}.png]  ..."
                /usr/local/rrdtool/bin/rrdtool graph "${disk_name}.png"    \
                    -s -86400                                              \
                    -w 500 -h 100                                          \
                    -x MINUTE:30:HOUR:2:HOUR:2:0:%H:%M                \
                    -Y -t "${disk_name} io"                         \
                    DEF:rio=${disk_name}.rrd:rio:AVERAGE                       \
                    DEF:wio=${disk_name}.rrd:wio:AVERAGE                       \
                    CDEF:rio_sector=rio,1,\/                              \
                    CDEF:wio_sector=wio,1,\/                              \
                    LINE1:rio_sector#00FF00:"rio(sector)"                        \
                    LINE1:wio_sector#FF0000:"wio(sector)"


            done

            awk '{if($1~/^cpu/) print $1;}' /proc/stat | while  read cpu_name
            do
                cpu_name=${cpu_name// }
                echo "creating [${cpu_name}.png]  ..."
                /usr/local/rrdtool/bin/rrdtool graph "${cpu_name}.png"      \
                    -s -86400                                               \
                    -w 500 -h 100                                           \
                    -x MINUTE:30:HOUR:2:HOUR:2:0:%H:%M                \
                    -Y  -t "${cpu_name} usage"                          \
                    DEF:idle=${cpu_name}.rrd:idle:AVERAGE                   \
                    DEF:user=${cpu_name}.rrd:user:AVERAGE                   \
                    DEF:iowait=${cpu_name}.rrd:iowait:AVERAGE                   \
                    DEF:intr=${cpu_name}.rrd:intr:AVERAGE                   \
                    DEF:total=${cpu_name}.rrd:total:AVERAGE                 \
                    CDEF:idle_persent=idle,total,\/,100,\*                         \
                    CDEF:user_persent=user,total,\/,100,\*                         \
                    CDEF:iowait_persent=iowait,total,\/,100,\*                         \
                    CDEF:intr_persent=intr,total,\/,100,\*                         \
                    LINE1:idle_persent#00FF00:"idle(%)"                        \
                    LINE1:user_persent#0000FF:"user(%)"                        \
                    LINE1:iowait_persent#FF0000:"iowait(%)"                    \
                    LINE1:intr_persent#FF00FF:"intr(%)"

            done

               rrd_name="memory"
                echo "creating [${rrd_name}.png]  ..."
                /usr/local/rrdtool/bin/rrdtool graph "${rrd_name}.png"      \
                    -s -86400                                               \
                    -w 500 -h 100                                           \
                    -x MINUTE:30:HOUR:2:HOUR:2:0:%H:%M                \
                    -Y  -t "${rrd_name} usage"                          \
                    DEF:TotalMemory=${rrd_name}.rrd:TotalMemory:AVERAGE                   \
                    DEF:FreeMemory=${rrd_name}.rrd:FreeMemory:AVERAGE                   \
                    DEF:TotalSwap=${rrd_name}.rrd:TotalSwap:AVERAGE                   \
                    DEF:FreeSwap=${rrd_name}.rrd:FreeSwap:AVERAGE                   \
                    CDEF:TotalMemoryM=TotalMemory,1024,\/                         \
                    CDEF:FreeMemoryM=FreeMemory,1024,\/                         \
                    CDEF:TotalSwapM=TotalSwap,1024,\/                         \
                    CDEF:FreeSwapM=FreeSwap,1024,\/                         \
                    LINE1:TotalMemoryM#00FF00:"TotalMemory(M)"                        \
                    LINE1:FreeMemoryM#0000FF:"FreeMemory(M)"                        \
                    LINE1:TotalSwapM#FF0000:"TotalSwap(M)"                    \
                    LINE1:FreeSwapM#FF00FF:"FreeSwap(M)"


            cp 
            *.png ${imgpath}/

            posted on 2009-01-15 12:22 star 閱讀(3360) 評論(0)  編輯 收藏 引用
            一本久久知道综合久久| 久久福利资源国产精品999| 久久久久AV综合网成人| 久久国产精品久久精品国产| 久久成人精品视频| 欧美国产成人久久精品| 久久婷婷色综合一区二区| 99久久免费国产精精品| 日产久久强奸免费的看| 日产精品久久久久久久| 久久久久亚洲AV无码专区桃色| 漂亮人妻被中出中文字幕久久| 99久久综合狠狠综合久久止| 欧美激情精品久久久久久| 国产∨亚洲V天堂无码久久久| 人人狠狠综合久久亚洲| 久久精品国内一区二区三区| 丁香色欲久久久久久综合网| 久久久99精品成人片中文字幕| 粉嫩小泬无遮挡久久久久久| 噜噜噜色噜噜噜久久| 99久久精品免费国产大片| 欧洲成人午夜精品无码区久久| 久久久久国产一区二区三区| 狠狠色丁香久久综合婷婷| 久久婷婷五月综合国产尤物app| 亚洲精品tv久久久久| 精品久久综合1区2区3区激情| 国产精品99久久精品| 欧美精品久久久久久久自慰| 亚洲国产成人精品久久久国产成人一区二区三区综 | 国产精品美女久久久久网| 香蕉久久影院| 国产精品99久久久精品无码 | 久久午夜无码鲁丝片秋霞| 久久e热在这里只有国产中文精品99 | 久久国产精品免费一区| 久久精品女人天堂AV麻| 久久青青草原精品国产软件| 国产A级毛片久久久精品毛片| 久久久91精品国产一区二区三区|