rrdtool学习和自定义脚本绘制图形备忘

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:

        RRDtool (Round Robin Database Tool)就是一个强大的绘图的引擎,很多工具例如MRTG都可以调用rrdtool绘图。包括现在使用很多的cacti也是基于rrdtool的基础上画图的,可以说cacti只是提供一个显示图形的web页面。

        rrdtool:所谓的round robin指的就是一种环形数据库:数据的存储方式是一个圆环形式存储的,我们可以自己去定义,数据能够存放多久,给它多大的空间。当我们的空间填满之后,后面的数据又可以覆盖前面的数据。所以rrdtool数据库是不会增大的。(但是我们也要明白一个道理。既然数据填满之后会覆盖,那么我们多给它定义就好了):建立数据库一般名称我们都定义为 .rrd的后缀文件。(如下图所示:)

wKioL1SCqYrDwzDuAABN5_fZ8No588.jpg

主要理解的概念:用一张图说明:

wKioL1SCszjThxzIAADH8erG7aw005.jpg

  • DS:DS 用于定义 Data Soure 。也就是用于存放结果的变量名。DS是用来申明数据源的,也可以理解为申明数据变量,也就是你要检测的端口对应的变量名,这个参数在画图的时候还要使用的。

  • DST:DST 就是DS的类型。有 COUNTER、GUAGE、DERIVE、ABSOLUTE、COMPUTE 5种。由于网卡流量属于计数器型,所以这里应该为 COUNTER 。

  • RRA:RRA 用于指定数据如何存放。我们可以把一个RRA 看成一个表,各保存不同 interval 的统计结果。RRA的作用就是定义更新的数据是如何记录的。比如我们每5分钟产生一条刷新的数据,那么一个小时就是12条。每天就是288条。这么庞大的 数据量,一定不可能都存下来。肯定有一个合并(consolidate)数据的方式,那么这个就是RRA的作用了。

  • PDP:Primary Data Point 。正常情况下每个 interval RRDtool 都会收到一个值;RRDtool 在收到脚本给来的值后会计算出另外一个值(例如平均值),这个 值就是 PDP ;这个值代表的一般是“xxx/秒”的含义。注意,该值不一定等于RRDtool 收到的那个值。除非是GAUGE ,可以看下面的例子就知道了

  • CF:CF 就是 Consolidation Function 的缩写。也就是合并(统计)功能。有 AVERAGE、MAX、MIN、LAST 四种分别表示对多个PDP 进行取平均、取最大值、取最小值、取当前值四种类型。具体作用等到 update 操作时再说。

  • CDP:Consolidation Data Point 。RRDtool 使用多个 PDP 合并为(计算出)一个 CDP。也就是执行上面 的CF 操作后的结果。这个值就是存入 RRA的数据,绘图时使用的也是这些数据

绘图思路:

1、建立数据库:

2、抓取数据流量

3、更新rrdtool数据库

4、绘制图形

定义一个监控mysql访问量,绘制图形:

1、定义数据库:

[root@node1 ~] # rrdtool create mysql.rrd --step 3 DS:mysqlselect:COUNTER:5:0:U RRA:AVERAGE:0.5:1:28800 RRA:AVERAGE:0.5:10:2880 RRA:MAX:0.5:10:2880 RRA:LAST:0.5:10:2880

注释:DS:数据来源:DST类型为COUNTER:延迟5秒内收到数据有效:最小值:最大值

RRA:合并数据类型:(平均值。最大值,最小值):0.5表示unknow。失效大于0.5的概率的话不生成数据:1(表示一个PDP单元汇总。5表示5个PDP单元汇总平均):28800这里表示一天算法举例(一天86400s/3/1 第二个值:86400/3*10)

然后当前目录下就生成了:mysql.rrd文件:

wKioL1SCtzHhB0gbAABurWOTUNY386.jpg

2、定义收集数据:

(1)定义一个手机Mysql数据并发量的脚步(死循环):

wKioL1SCt7PC5eYjAADP5FD9bgU710.jpg中间的命令:

SELECT=`mysql --batch -e "show global status like 'Com_select' "| awk '/Com_select/{print $2}'`

这里命令是在shell模式下。查看Mysql并发量(数据库密码为空):

第二:rrdtool update mysql.rrd N:$SELECT (更新mysql.rrd数据库,N表示当前时间。$SELECT获取并发个数)

(2)这里为了数据更明显的现实,在写一条死循环脚步。往中间不断的插入数据(前面已经创建好了数据库testdb和表tb1。tb1定义两个字段分别为ID和NAME。ID 字段注意制定自动增长):

[root@node1 ~] # vim insert.sh

#!/bin/bash

#

for I in {1..200000}; do

     mysql -e "INSERT INTO testdb.tb1(name) VALUES ('stu$I')"

     mysql -e "SELECT * FROM testdb.tb1" &> /dev/null

done

注释:脚步不断的里面插入数据,和查询,这样并发就高了。

(3)分别执行脚本: bash -x getselect.sh  和bash -x insert.sh (观察是否有报错,有的话检查脚本,脚本运行不能中断,分别开三个窗口执行。到这一步数据的更新已经完成了,接下来就是绘制图形了:

3、绘制图形:

rrdtool fetch -r 3 mysql.rrd AVERAGE  #查看是否手机到数据:

wKiom1SCutHQJg4gAAE8AZ3O9-Q371.jpg:

可以看到已经收集到了数据: -nan表示没有数据:有数值的表示收到了数据:

接下来就可以绘制图形:我们就从有数据的时间开始收集数据。比如:1417853451

开始绘图:

[root@localhost rrd]# rrdtool graph mysql1.png -s 1417853451  -t "mysql select" -v "selects/3" DEF:select3=mysql.rrd:mysqlselect:AVERAGE:step=3 LINE1:select3#FF0000:"select"

497x174

[root@localhost rrd]# 

注释:-s表示绘制开始时间。默认是10s之前.也可以-N指定当前时间。 -t 表示图片的抬头: -v 表示X轴的名称: DEF(绘制图形的方法):select3变量=mysql.rrd:mysqlselect:AVERAGE(绘制类型也可以表示MAX和LAST当前值):step=3(解析度,表示每3s手机汇总图像) LINE1(制定图像绘制类型):select3#ff0000(线条颜色)

可以看到当前目录下面生成了。myslq1.png的图片。把图片拉到windows电脑上,现实如下所示:

wKioL1SCvbWS9ieVAAEAdEkPuc8739.jpg

出图已经完成,要是定期手机数据,可以用snmpd协议手机客户端的数据。然后生成,最后用一个简单的web静态网页生成图形;

1、生成库:

[root@node1 ~] # rrdtool create nginx.rrd --step 3 DS:mysqlselect:COUNTER:5:0:U RRA:AVERAGE:0.5:1:28800 RRA:AVERAGE:0.5:10:2880 RRA:MAX:0.5:10:2880 RRA:LAST:0.5:10:2880

扩展:平时我们经常要绘制一些像nginx并发量连接的数据:我们可以这样写一条脚本:

2、#!/bin/bash

#

while true ; do 

   EST=`netstat -anp | grep EST | grep php-fpm | wc -l`

   rrdtool update nginx.rrd N:$EST

3、绘制图形:

rrdtool graph nginx.png -s 1417853451  -t "nginx select" -v "selects/3" DEF:select3=nginx.rrd:mysqlselect:AVERAGE:step=3 LINE1:select3#FF0000:"select"

到这里监控并发量已经完成,这里我就不做测试结果,写这个遇到问题的朋友可以交流一下。










本文转自 小罗ge11 51CTO博客,原文链接:http://blog.51cto.com/xiaoluoge/1587075,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
9月前
|
NoSQL Linux API
linux环境安装可操作图库语言Gremlin的图框架HugeGraph
linux环境安装可操作图库语言Gremlin的图框架HugeGraph
133 0
|
5月前
|
Python
ArcGIS中ArcMap通过Python程序脚本新建工具箱与自定义工具的方法
ArcGIS中ArcMap通过Python程序脚本新建工具箱与自定义工具的方法
|
5月前
|
数据可视化 定位技术 数据格式
看完这篇文章,我才知道 Python 制作动态图表的正确方式
看完这篇文章,我才知道 Python 制作动态图表的正确方式
|
10月前
|
安全 Shell 程序员
shell 脚本风格参考
shell 脚本风格参考
40 0
|
10月前
|
Python
Python:简单的制作一个动态更新日志
Python:简单的制作一个动态更新日志
159 0
520|用Python绘制自定义照片墙
如何用Python绘制自定义文字照片墙。
520|用Python绘制自定义照片墙
|
Python
ArcGIS将Python代码脚本创建为工具箱、自定义工具
本文介绍在ArcMap软件中,通过已有的Python脚本程序,建立新的工具箱并在其中设置自定义工具的方法~
291 1
ArcGIS将Python代码脚本创建为工具箱、自定义工具
|
索引 Python
Python mplfinance库绘图① 基本参数介绍(简单秒懂)
Python mplfinance库绘图① 基本参数介绍(简单秒懂)
2615 0
Python mplfinance库绘图① 基本参数介绍(简单秒懂)
QML学习笔记(七)-如何查看帮助手册中的控件例子
在QtCreator中,帮助里搜索早已写好的控件例子。 1.点击 帮助 2.在搜索栏里搜索 cuostomiz   选择QtQuick Control ,就可以打开文档的自定义控件例子进行参考使用     一一点开就可以看见完整代码  
1366 0