操作
RRDtool 模块¶
模块: mod_rrdtool
描述¶
RRD 是一个用于存储和显示时间序列数据(例如网络带宽、机房温度、服务器平均负载)的系统。
警告¶
- 如果您使用多个工作进程("server.max-worker":Server.max-workerDetails),此模块将无法工作。
选项¶
rrdtool.binary¶
rrdtool 二进制文件的路径。此指令仅在全球配置范围内有效。
rrdtool.binary = "/usr/bin/rrdtool"
rrdtool.db-name¶
rrd数据库的文件名。请确保在首次运行前<rrdtool.db-name>不存在,因为 lighttpd 需要为您创建数据库。
rrdtool.db-name = "/var/www/lighttpd.rrd"
生成图表¶
生成图表需要完成四件事
替代方案:您可以使用 lightygraph.cgi 自动按需生成图表,无需执行最后三个步骤(2、3、4)——即时生成!
- 在 lighttpd.conf 中启用 mod_rrdtool(如上所示)
- 创建/编辑下面提供的脚本(因为它用于生成图表)。
我称之为 rrdtool.sh,请确保您对其具有执行权限 (chmod +x) - 创建一个 HTML 页面来输出图像(在底部提供)
- 运行脚本并添加到 cron。
0,20,40 * * * * nice -n 10 /etc/lighttpd/rrdtool.sh >& /dev/null
注意:Ubuntu Fiesty 及更高版本,需要从上面的 `>&` 中移除 `&` 以便 cron 运行。/bin/sh 链接到 /bin/dash,并且它期望的是文件描述符而不是用于发送输出的路径。(否则会出现 bad fd 错误)
rrdtool.sh¶
#!/bin/sh
RRDTOOL=/usr/bin/rrdtool
OUTDIR=/var/www/www.example.com/rrd/
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
显示图表的网页¶
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Lighttpd traffic & requests</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="content-style-type" content="text/css">
<style type="text/css">
<!--
div { text-align:center; }
img { width:693px; height:431px; }
-->
</style>
</head>
<body>
<div>
<h2>Lighttpd Traffic</h2>
<img src="lighttpd-traffic-hour.png" alt="graph1"><br>
<img src="lighttpd-traffic-day.png" alt="graph2"><br>
<img src="lighttpd-traffic-month.png" alt="graph3"><br>
</div>
<div>
<h2>Lighttpd Requests</h2>
<img src="lighttpd-requests-hour.png" alt="graph4"><br>
<img src="lighttpd-requests-day.png" alt="graph5"><br>
<img src="lighttpd-requests-month.png" alt="graph6"><br>
</div>
</body>
</html>
问题¶
- 管道一直处于打开状态
- 它不处理重启
来自 https://blog.lighttpd.ac.cn/articles/2007/04/10/about-perfection-deprecacting-mod_rrdtool