RRD 数据库学习1

1 Ubuntu 安装rrdtool

rrdtool 可以完成rrd数据库创建、输入数据、绘制图片等rrd的全部功能

apt-get install rrdtool

2 rrd适用范围

  • 适用于时序数据库
  • 常见的运维领域,使用较多
    • 如top 类似的cpu-mem-disk使用情况
    • 如路由器流量统计

3 librrd库

rrdtool 底层调用librrd库;即librrd库提供rrdtool所能提供的全部功能api。
想编写自己的rrd C程序,需要调用librrd库。
其他语言,调用其他rrd对应语言版本的库。

3.1 librrd库的安装

sudo apt-get install librrd-dev #安装librrd开发包,含rrd.h头文件
sudo apt-get install librrd #安装librrd运行包,含librrd.so

3.2 librrd库的编译使用

  • 调用的*.c包含rrd.h
  • 编译时,增加librrd库的链接,-rrd

3.3 librrd库的常用api

  • rrd_create(c, v)
  • rrd_update(c, v)
  • last_rrd_file(rrdfilename)
  • dump_rrd_file(rrdfilename, xmlfilename)
  • restore_rrd_file(rrdfilename, xmlfilename)

4 rrdtool操作示例与说明

  • DST
    • gauge 类型,适用温度这种场景,计算过程与时间非强相关,average 采样1即原始值,average 采样N即平均值
    • counter 类型,适用里程/流量这种场景,值为自增的;计算过程与时间强相关,average 采用1/N均为平均值即速率
    • derive 类型,类似counter类型,值可增可减,不是自增的
    • absolute 类型,它每次都假定前一个interval的值是0,再计算平均值
    • compute 类型,表达式,可以引用其他DS
  • CF
    • average,计算平均值
    • max,计算最大值
    • min,计算最小值
    • last,计算累计值
  • rrdtool update 重复更新相同时间戳,以最先的生效,后到的无效即error
  • rrdtool update 给rrd输入pdp
  • rrd的rra,根据pdp进行相关的计算,利用CF=average/max/min/last
    • 多个rra,在绘图时能提供最匹配绘图时间端的rra
  • rrd 支持的heatbeat & step 单位: s (seconds), m (minutes), h (hours), d (days), w (weeks), M (months), and y (years)
    • RRA:AVERAGE:0.5:1s:10d
# 创建gauge类型的数据库,源为Links,rra存储区average/max;分别说明源的规格、rra的规格
rrdtool create gauge.rrd            \
            --start 920804400       \
            -s 5                    \
            DS:links:GAUGE:10:U:U   \
            RRA:AVERAGE:0.5:1:200   \
            RRA:AVERAGE:0.5:120:300 \
            RRA:MAX:0.5:120:300

# 查看rrd数据库的结构,源与rra
rrdtool info gauge.rrd

# 模拟给rrd输入原始数据:即pdp,timestamp:value1:...:valueN;根据数据库定义的源数目,value数目要1:1对应
rrdtool update gauge.rrd 920804700:12345 920804705:12357 920804710:12363
rrdtool update gauge.rrd 920804715:12363 920804720:12363 920804725:12373
rrdtool update gauge.rrd 920804730:12383 920804735:12393 920804740:12399
rrdtool update gauge.rrd 920804745:12405 920804750:12411 920804755:12415
rrdtool update gauge.rrd 920804760:12420 920804765:12422 920804770:12423

# 获取rrd的rra数据,指明起止时间
rrdtool fetch gauge.rrd AVERAGE --start 920804700 --end 920804770
# 更好指定粒度:
rrdtool fetch xxx.rrd AVERAGE -s $t1 -e $t2 -r 5s
rrdtool fetch xxx.rrd AVERAGE -s $t1 -e $t2 -a

# 根据rrd的rra数据,绘制图片:使用average/max 2个rra数据
rrdtool graph link.png                                 \
         --start 920804700 --end 920804770             \
         --vertical-label links                        \
         DEF:mylinks=gauge.rrd:links:AVERAGE           \
         DEF:linksmax=gauge.rrd:links:MAX \
         LINE2:mylinks#FF0000                \
         LINE2:linksmax#00FF00   

# 将rrd数据库内容,写入可读的xml文件: 依次展示数据源、rra数据存储区
rrdtool dump gauge.rrd gauge.xml

# 获取rrd数据库最后更新的unix时间戳:sec
rrdtool last gauge.rrd

# 从xml文件恢复rrd数据库内容
rrdtool restore gauge.xml gauge.rrd

5 画图

参考 *php rrdtool,初识rrdtool

6 参考资料

7 源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值