RRDtool的基础教学

RRDtool的基础教学
RRDtool提供的文档对于一些朋友来说太专业了,本文来温习一下RRDtool的基础,顺便给个经典的例子,冒充“Hello World”吧:-)。基础很重要,否则后边的例子对于你不会很有意义。 RRDtool是指Round Robin Database tool,Round robin是这样一种技术:基于固定的容量,具有指向当前元素的指针。(简单说和环形队列差不多,不具体解释了)。这种数据库比较适合时间序列这类的数据,你需要每隔一定时间提供一些值给数据库,它就可以工作了:-)。RRDtool 源于MRTG (Multi Router Traffic Grapher),后者最初是一个绘制大学流量图的脚本,后来被用到绘制诸如温度、速度、容量......你需要一个元件来测量数据,把数据提供给 RRDtool,RRDtool能帮你完成建数据库、存储数据、取数据、绘图以及显示到web浏览器上等工作。开始吧,来个Hello World!......

        你在开车,12:05你看到计程器显示12345KM,12:10是12357KM,5分钟你开了12KM,这一段的速度是12000M/300S (40M/S),当然也可以用KM/H表示速度(144KM/H)。记住这仅仅是平均数据,希望看过这个例子,你可以举一反三,流量(bps—bits per second)应该不是问题。开始建个数据库:
rrdtool create test.rrd /
    --start 920804400 /
    DS:speed:COUNTER:600:U:U /
    RRA:AVERAGE:0.5:1:24 /
    RRA:AVERAGE:0.5:6:10

        建了什么?一个名为test.rrd的RRD数据库,起始时间是1999/03/07 12:00:00 转化成距1970/01/01的秒数为920804400(诸多系统的计时方式,date -d "1999/03/07 12:00:00"+%s 中国时间,有时差),数据库里保存了名为speed的数据源(变量),它代表一个计数器,每300秒被读取一次(默认值可以用--step设置),数据库中建了两个RRA档案:第一个每读到的一个数据(5分钟)取平均(:-()存档,保留24笔(2小时,再来数据就用环形队列的算法覆盖了);第二个每读6个数据(半小时)取平均存档,保留10笔(5小时)。

下边往数据库填入如下数据:
12:05 12345 KM
12:10 12357 KM
12:15 12363 KM
12:20 12363 KM
12:25 12363 KM
12:30 12373 KM
12:35 12383 KM
12:40 12393 KM
12:45 12399 KM
12:50 12405 KM
12:55 12411 KM
13:00 12415 KM
13:05 12420 KM
13:10 12422 KM
13:15 12423 KM


代码如下:
rrdtool update test.rrd 920804700:12345 920805000:12357 920805300:12363
rrdtool update test.rrd 920805600:12363 920805900:12363 920806200:12373
rrdtool update test.rrd 920806500:12383 920806800:12393 920807100:12399
rrdtool update test.rrd 920807400:12405 920807700:12411 920808000:12415
rrdtool update test.rrd 920808300:12420 920808600:12422 920808900:12423


看看我们的成果:
rrdtool fetch test.rrd AVERAGE --start 920804400 --end 920809200
                          speed
920804700: nan
920805000: 4.0000000000e-02
920805300: 2.0000000000e-02
920805600: 0.0000000000e+00
920805900: 0.0000000000e+00
920806200: 3.3333333333e-02
920806500: 3.3333333333e-02
920806800: 3.3333333333e-02
920807100: 2.0000000000e-02
920807400: 2.0000000000e-02
920807700: 2.0000000000e-02
920808000: 1.3333333333e-02
920808300: 1.6666666667e-02
920808600: 6.6666666667e-03
920808900: 3.3333333333e-03
920809200: nan


开始画图speed.png:
rrdtool graph speed.png /
        --start 920804400 --end 920808000 /
        DEF:myspeed=test.rrd:speed:AVERAGE /
        LINE2:myspeed#FF0000

        图片名——speed.png;开始时间——12:00;结束时间——13:00。后边的复杂点:定义变量myspeed(从test.rrd数据库的speed档案取数据),用2象素的红线绘制myspeed,出图:

                                   图1 speed.png

再来一个speed2.png(加了数学计算):
rrdtool graph speed2.png /
     --start 920804400 --end 920808000 /
     --vertical-label m/s /
     DEF:myspeed=test.rrd:speed:AVERAGE /
     CDEF:realspeed=myspeed,1000,/* /
     LINE2:realspeed#FF0000

        有疑问的估计就在“myspeed,1000,/*”,这里是逆波兰式“myspeed,1000,*”,就是“myspeed*1000”,学过编译的都知道,不懂google一下吧,那个“/”是为了防止系统赋予“*”新的意义。不解释了,出图:


                               图2 speed2.png

第三个speed3.png(本质还是逆波兰,把逻辑判断和IF加进来了):
rrdtool graph speed3.png /
     --start 920804400 --end 920808000 /
     --vertical-label km/h /
     DEF:myspeed=test.rrd:speed:AVERAGE /
     "CDEF:kmh=myspeed,3600,*" /
     CDEF:fast=kmh,100,GT,kmh,0,IF /
     CDEF:good=kmh,100,GT,0,kmh,IF /
     HRULE:100#0000FF:"Maximum allowed" /
     AREA:good#00FF00:"Good speed" /
     AREA:fast#FF0000:"Too fast"

        防止*被转移的另一种方式:在命令中用双引号——“*”,解释一个“kmh,100,GT,kmh,0,IF”:
Check if kmh is greater than 100    ( kmh,100 ) GT
If so, return kmh, else return 0    ((( kmh,100) GT ), kmh, 0) IF

出图:


                                   图3 speed3.png

最后一个speed4.png(有了数据,RRDtool什么都能做):
rrdtool graph speed4.png /
     --start 920804400 --end 920808000 /
     --vertical-label km/h /
     DEF:myspeed=test.rrd:speed:AVERAGE /
     "CDEF:kmh=myspeed,3600,*" /
     CDEF:fast=kmh,100,GT,100,0,IF /
     CDEF:over=kmh,100,GT,kmh,100,-,0,IF /
     CDEF:good=kmh,100,GT,0,kmh,IF /
     HRULE:100#0000FF:"Maximum allowed" /
     AREA:good#00FF00:"Good speed" /
     AREA:fast#550000:"Too fast" /
     STACK:over#FF0000:"Over speed"

出图:

                                   图4 speed4.png

ps:文章主要借鉴
RRDtutorial。
转自
内容概要:《2024年中国城市低空经济发展指数报告》由36氪研究院发布,指出低空经济作为新质生产力的代表,已成为中国经济新的增长点。报告从发展环境、资金投入、创新能力、基础支撑和发展成效五个维度构建了综合指数评价体系,评估了全国重点城市的低空经济发展状况。北京和深圳在总指数中名列前茅,分别以91.26和84.53的得分领先,展现出强大的资金投入、创新能力和基础支撑。低空经济主要涉及无人机、eVTOL(电动垂直起降飞行器)和直升机等产品,广泛应用于农业、物流、交通、应急救援等领域。政策支持、市场需求和技术进步共同推动了低空经济的快速发展,预计到2026年市场规模将突破万亿元。 适用人群:对低空经济发展感兴趣的政策制定者、投资者、企业和研究人员。 使用场景及目标:①了解低空经济的定义、分类和发展驱动力;②掌握低空经济的主要应用场景和市场规模预测;③评估各城市在低空经济发展中的表现和潜力;④为政策制定、投资决策和企业发展提供参考依据。 其他说明:报告强调了政策监管、产业生态建设和区域融合错位的重要性,提出了加强法律法规建设、人才储备和基础设施建设等建议。低空经济正加速向网络化、智能化、规模化和集聚化方向发展,各地应找准自身比较优势,实现差异化发展。
数据集一个高质量的医学图像数据集,专门用于脑肿瘤的检测和分类研究以下是关于这个数据集的详细介绍:该数据集包含5249张脑部MRI图像,分为训练集和验证集。每张图像都标注了边界框(Bounding Boxes),并按照脑肿瘤的类型分为四个类别:胶质瘤(Glioma)、脑膜瘤(Meningioma)、无肿瘤(No Tumor)和垂体瘤(Pituitary)。这些图像涵盖了不同的MRI扫描角度,包括矢状面、轴面和冠状面,能够全面覆盖脑部解剖结构,为模型训练提供了丰富多样的数据基础。高质量标注:边界框是通过LabelImg工具手动标注的,标注过程严谨,确保了标注的准确性和可靠性。多角度覆盖:图像从不同的MRI扫描角度拍摄,包括矢状面、轴面和冠状面,能够全面覆盖脑部解剖结构。数据清洗与筛选:数据集在创建过程中经过了彻底的清洗,去除了噪声、错误标注和质量不佳的图像,保证了数据的高质量。该数据集非常适合用于训练和验证深度学习模型,以实现脑肿瘤的检测和分类。它为开发医学图像处理中的计算机视觉应用提供了坚实的基础,能够帮助研究人员和开发人员构建更准确、更可靠的脑肿瘤诊断系统。这个数据集为脑肿瘤检测和分类的研究提供了宝贵的资源,能够帮助研究人员开发出更准确、更高效的诊断工具,从而为脑肿瘤患者的早期诊断和治疗规划提供支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值