代码之家  ›  专栏  ›  技术社区  ›  Tom Smykowski

如何用CPU和MEM使用数据填充RRD数据库?

  •  0
  • Tom Smykowski  · 技术社区  · 15 年前

    我有一个lighttpd服务器(在CentOS上),想要显示4个图表:lighttpd流量、lighttpd每秒请求数、CPU使用率和mem使用率。我为lighttpd配置的rrd数据库设置了如下位置:

    rrdtool.binary = "/usr/bin/rrdtool"
    rrdtool.db-name = "/var/www/lighttpd.rrd"
    

    并放入我的www cgi bin sh文件中,该文件从lighttpd rrd文件中获取数据,并创建每秒流量和请求的图表,如下所示:

    #!/bin/sh
    
    RRDTOOL=/usr/bin/rrdtool
    OUTDIR=//var/www/graphs
    INFILE=/var/www/lighttpd.rrd
    OUTPRE=lighttpd-traffic
    WIDTH=400
    HEIGHT=100
    
    DISP="-v bytes --title TrafficWebserver \
            DEF:binraw=$INFILE:InOctets:AVERAGE \
            DEF:binmaxraw=$INFILE:InOctets:MAX \
            DEF:binminraw=$INFILE:InOctets:MIN \
            DEF:bout=$INFILE:OutOctets:AVERAGE \
            DEF:boutmax=$INFILE:OutOctets:MAX \
            DEF:boutmin=$INFILE:OutOctets:MIN \
            CDEF:bin=binraw,-1,* \
            CDEF:binmax=binmaxraw,-1,* \
            CDEF:binmin=binminraw,-1,* \
            CDEF:binminmax=binmaxraw,binminraw,- \
            CDEF:boutminmax=boutmax,boutmin,- \
            AREA:binmin#ffffff: \
            STACK:binmax#f00000: \
            LINE1:binmin#a0a0a0: \
            LINE1:binmax#a0a0a0: \
            LINE2:bin#efb71d:incoming \
            GPRINT:bin:MIN:%.2lf \
            GPRINT:bin:AVERAGE:%.2lf \
            GPRINT:bin:MAX:%.2lf \
            AREA:boutmin#ffffff: \
            STACK:boutminmax#00f000: \
            LINE1:boutmin#a0a0a0: \
            LINE1:boutmax#a0a0a0: \
            LINE2:bout#a0a735:outgoing \
            GPRINT:bout:MIN:%.2lf \
            GPRINT:bout:AVERAGE:%.2lf \
            GPRINT:bout:MAX:%.2lf \
            " 
    
    $RRDTOOL graph $OUTDIR/$OUTPRE-hour.png -a PNG --start -14400 $DISP -w $WIDTH -h $HEIGHT
    $RRDTOOL graph $OUTDIR/$OUTPRE-day.png -a PNG --start -86400 $DISP -w $WIDTH -h $HEIGHT
    $RRDTOOL graph $OUTDIR/$OUTPRE-month.png -a PNG --start -2592000 $DISP -w $WIDTH -h $HEIGHT
    
    OUTPRE=lighttpd-requests
    
    DISP="-v req --title RequestsperSecond -u 1 \
            DEF:req=$INFILE:Requests:AVERAGE \
            DEF:reqmax=$INFILE:Requests:MAX \
            DEF:reqmin=$INFILE:Requests:MIN \
            CDEF:reqminmax=reqmax,reqmin,- \
            AREA:reqmin#ffffff: \
            STACK:reqminmax#00f000: \
            LINE1:reqmin#a0a0a0: \
            LINE1:reqmax#a0a0a0: \
            LINE2:req#00a735:requests" 
    
    $RRDTOOL graph $OUTDIR/$OUTPRE-hour.png -a PNG --start -14400 $DISP -w $WIDTH -h $HEIGHT
    $RRDTOOL graph $OUTDIR/$OUTPRE-day.png -a PNG --start -86400 $DISP -w $WIDTH -h $HEIGHT
    $RRDTOOL graph $OUTDIR/$OUTPRE-month.png -a PNG --start -2592000 $DISP -w $WIDTH -h $HEIGHT
    

    基本上这不是我的剧本,我是从互联网上的某个地方得到的。 现在我想对CPU和MEM的使用做同样的事情。 我不想使用任何附加包!

    如您所见,lighttpd每秒用流量数据和请求填充lighttpd.rrd文件。现在我想让系统用CPU和MEM的使用来填充第二个RRD文件,这样我就可以添加到sh文件代码中来为这些数据生成图表。

    如何用CPU和MEM使用数据填充RRD文件? 请不要使用第三方工具!

    1 回复  |  直到 15 年前
        1
  •  1
  •   Tobi Oetiker    15 年前

    技巧是从proc文件系统中的文件读取数据,并使用sed/awk提取实际值。创建一个带有DS类型仪表的rrdfile来存储数据…查看www.rrdtool.org上的教程开始学习。