博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rrdtool的完整例子
阅读量:6036 次
发布时间:2019-06-20

本文共 2019 字,大约阅读时间需要 6 分钟。

RRDtool是一种环形数据库工具,我们可以将数据存入该数据库中,而不用担心数据太多,因为这个数据库是环形的,新的数据会覆盖最老的数据。

这与Windows上的taskman类似。RRDtool主要由Tobias Oetiker 编写,这哥们还写了MRTG。RRDtool主要是为了替代MRTG的。

网上有很多RRDtool的介绍和教程,例如:和。不过这些文章上给出的例子程序基本不能直接运行,都

存在着若干小错误,就连上给出的例子都不能直接运行。 我在学习RRDtool时被弄得很郁闷。本文给出了一个完整的用Shell写的Demol程序,

大家可以参考一下。

通常来说,一个RRDtool的程序基本可以分成两部分:

  1. 用rrdtool create命令创建一个rrdtool的数据库,并且有rrdtool update命令更新它;
  2. 用rrdtool graph命令画图。

我的Demo程序不能取得系统Load average(5分钟,10分钟,15分钟),把这个三个数据插入数据库中,然后画图。

1. 创建数据库及更新数据库:

 1 
#
!/
bin
/
bash
 2 
 3 
# create a rrd file
 4 
 5 
rrdfile
=
loadavg.rrd
 6 
STEP
=
2
 7 
HEARTBEAT
=
4
 8 
now
=
`date 
+%
s`
 9 
10 
 
if
 [ 
!
 
-
f $rrdfile ]
11 
then
12 
    rrdtool create $rrdfile 
--
start $now 
--
step $STEP \
13 
        DS:loadavg5:GAUGE:$HEARTBEAT:U:U              \
14 
        DS:loadavg10:GAUGE:$HEARTBEAT:U:U             \
15 
        DS:loadavg15:GAUGE:$HEARTBEAT:U:U             \
16 
        RRA:MAX:
0.5
:
3
:
3600
17 
 
else
18 
    echo 
"
$rrdfile already exists, remove it
"
19 
fi
20 
21 
TEMPLATE_STR
=
"
loadavg5:loadavg10:loadavg15
"
22 
23 
 
while
 :
24 
 
do
25 
    loadavg5
=
`cat 
/
proc
/
loadavg  
|
 awk 
'
{print $1}
'
`
26 
    loadavg10
=
`cat 
/
proc
/
loadavg 
|
 awk 
'
{print $2}
'
`
27 
    loadavg15
=
`cat 
/
proc
/
loadavg 
|
 awk 
'
{print $3}
'
`
28 
    rrdtool update $rrdfile                           \
29 
        
--
template $TEMPLATE_STR                      \
30 
        N:$loadavg5:$loadavg10:$loadavg15
31 
32 
    sleep $STEP
33 
done
34 

 

2. 画图

 1 
#
!/
bin
/
bash
 2 
 3 
rrdfile
=
loadavg.rrd
 4 
PIC
=
loadavg.png
 5 
 6 
rrdtool graph $PIC                    \
 7 
    
--
title 
"
System Load Average
"
     \
 8 
    
--
vertical
-
label 
"
Load Average
"
   \
 9 
    
--
color 
"
BACK#CCCCCC
"
             \
10 
    
--
color 
"
CANVAS#CCFFFF
"
           \
11 
    
--
color 
"
SHADEB#9999CC
"
           \
12 
    
--
height 
200
                      \
13 
    
--
width  
400
                      \
14 
    
--
slope
-
mode                      \
15 
    
--
alt
-
autoscale                   \
16 
    
--
lower
-
limit 
0
                   \
17 
    DEF:max_loadavg5
=
$rrdfile:loadavg5:MAX      \
18 
    DEF:max_loadavg10
=
$rrdfile:loadavg10:MAX    \
19 
    DEF:max_loadavg15
=
$rrdfile:loadavg15:MAX    \
20 
    LINE1:max_loadavg5#0000FF:loadavg5          \
21 
    LINE1:max_loadavg10#00FF00:loadavg10        \
22 
    LINE1:max_loadavg15#FF0000:loadavg15        \
23 
    COMMENT:
"
Last update\: $(date '+%Y-%m-%d %H\:%M\:%S' -r $rrdfile)
"
24 

 

图:

转载于:https://www.cnblogs.com/hqmao/p/5293835.html

你可能感兴趣的文章
消息队列服务器 memcacheq的搭建
查看>>
VMware Horizon View 7.5 虚拟桌面实施咨询与购买--软件硬件解决方案
查看>>
RabbitMQ如何保证队列里的消息99.99%被消费?
查看>>
第一周博客作业
查看>>
thinkpython2
查看>>
String、StringBuffer和StringBuilder的区别
查看>>
oracle recyclebin与flashback drop
查看>>
svmlight使用说明
查看>>
Swing 和AWT之间的关系
查看>>
Mysql设置自增长主键的初始值
查看>>
Android计时器正确应用方式解析
查看>>
获取post传输参数
查看>>
ASP生成静态页面的方法
查看>>
HDU 1325 Is It A Tree? 判断是否为一棵树
查看>>
Shell命令-文件压缩解压缩之gzip、zip
查看>>
个人总结
查看>>
uva 673 Parentheses Balance
查看>>
Bzoj 2252: [2010Beijing wc]矩阵距离 广搜
查看>>
css 禁止选中文本
查看>>
bzoj2165
查看>>