Zabbix与RRDtool绘图篇(3)_定时向rrd文件添加监控数据
记录下怎样将ZabbixAPI取得的监控数据放入到rrd文件中。
取数据和向rrd追加数据的脚本一分钟执行一次,在向rrd文件追加数据时先检查该图像的rrd文件是否存在,存在则添加,不存在则创建rrd文件下次再开始添加(反正不差这一分钟的数据,也不想把脚本弄的太复杂)。
具体的添加函数如下:
1def rrd_update(rrdfile, data):
2 subtmp = data.pop()
3 ds = ''
4 vl = 'N:'
5 for sub in data:
6 ds = ds + sub['itemid'] + ":"
7 vl = vl + sub['lastvalue'] + ":"
8 ds = ds + subtmp['itemid']
9 vl = vl + subtmp['lastvalue']
10 rrdfile = str(rrdfile)
11 ds = str(ds)
12 vl = str(vl)
13 rrdtool.update(rrdfile, '--template', ds, vl)
我发现在用rrdtool.updatev()追加数据的时候奇慢无比,可能是系统还是什么原因(rrdtool、rrdtool-python都是系统镜像自带的版本1.3.8)。后来不得不用rrdtool.update()追加数据。
‘–template’, ds 一般使用不需要这段,我是防止万一追加的数据与DS的顺序不一致才特意添加的,平时使用过程中大可不必,还可以降低脚本的复杂度增强鲁棒性。我验证过了通 过ZabbbixAPI取得的每张图的itemid顺序每次都是一直的,所以可以将’–template’, ds相关的代码省略掉。
rrd文件追加第一个值的时候消耗的时间比较长,之后就比每次都比较迅速了。我的第一次追加值的时候共用了6分钟的样子,后来再每次追加的时候也就12秒左右(前提是采用了多线程编程)。
下面是某个rrd文件CF值的截图(开头的是追加数据时间戳,后面分别是两个DS对应的CF值):
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/zabbix-rrdtool-3/4111.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.