一、前言

前面几篇记录了怎么去安装Cacti,这篇呢主要记录下如何修改Cacti绘图的精度,注意是绘图的精度而不是轮询的精度。在开始写这篇笔记的时候首先得谢谢帮助我解决PHP问题的ikodota。

Cacti绘图是使用的rrdtool所以呢先说下rrdtool,下面是刘天斯写的关于rrdtool的笔记。

二、基本概念

RRDtool是指Round Robin Database 工具(环状数据库)。Round robin是一种处理定量数据、以及当前元素指针的技术。想象一个周边标有点的圆环--这些点就是时间存储的位置。从圆心画一条到圆周的某个点的箭头--这就是指针。就像我们在一个圆环上一样,没有起点和终点,你可以一直往下走下去。过来一段时间,所有可用的位置都会被用过,该循环过程会自动重用原来的位置。这样,数据集不会增大,并且不需要维护。RRDtool处理RRD数据库。它用向RRD数据库存储数据、从RRD数据库中提取数据(来源百度问答 )。为了方便理解其工作原理,本人做了一个rrdtool存储结构图:

1、DS用于定义 Data Soure 。也就是用于存放脚本的结果的变量名(DSN)。如eth0_in ,eth0_out, lo_in , lo_out 。DSN 从 1-19 个字符,必须是 0-9,a-z,A-Z 。

2、DST的选择是十分重要的,如果选错了 DST ,即使你的脚本取的数据是对的,放入 RRDtool 后也是错误的,更不用提画出来的图是否有意义了。

DST描述:

A) COUNTER:必须是递增的,除非是计数器溢出(overflows)。在这种情况下,RRDtool 会自动修改收到的值。例如网络接口流量、收到的packets 数量都属于这一类型。

B) DERIVE:和 COUNTER 类似。但可以是递增,也可以递减,或者一会增加一会儿减少。

C) ABSOLUTE:ABSOLUTE 比较特殊,它每次都假定前一个interval的值是0,再计算平均值。

D) GAUGE:GAGUE 和上面三种不同,它没有“平均”的概念,RRDtool 收到值之后字节存入 RRA 中。

E) COMPUTE:COMPUTE 比较特殊,它并不接受输入,它的定义是一个表达式,能够引用其他DS并自动计算出某个值。

这五种类型有什么区别?不防测试一下便知。

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

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

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

6、DST就是Data Source Type的意思。有COUNTER、GUAGE、DERIVE、ABSOLUTE、COMPUTE5种。由于网卡流量属于计数器型,所以这里应该为COUNTER。

7、RRA用于指定数据如何存放。我们可以把一个RRA看成一个表,各保存不同interval的统计结果

8、resolution就是每个RRA中两个CDP相隔的时间

9、什么是 CF?

以第2个RRA和4,2,1,3这4个PDP为例

AVERAGE:则结果为(4+2+1+3)/4=2.5

MAX:结果为4个数中的最大值4

MIN:结果为4个数中的最小值1

LAST:结果为4个数中的最后一个3

三、出自刘天斯的个人理解

1、CF(N个PDP为一个刻度单位)=CDP

*只限COUNTER、DERIVE、ABSOLUTE、COMPUTE

2、N个PDP为一个刻度单位=CDP

*只限GUAGE

3、xff字段如何计算?

PDP/(PDP UNKNOWN数)

4、PDP数据如何得出?

COUNTER(接收Value)=PDP

DERIVE(接收Value)=PDP

ABSOLUTE(接收Value)=PDP

COMPUTE(接收Value)=PDP

*GUAGE除外

5、常用时间截计算(shell)

A)时间截=>日期

date -d '1970-1-1 1276059000 sec utc'

B)日期=>时间截

date -d '2010-09-11 23:20' +%s

四、rrdtool createrrdtool create Flow.rrd \

--start $(date -d "1 year ago" +%s) \

--step 300 \

DS:eth0_in:GAUGE:600:0:5000 \

DS:eth0_out:GAUGE:600:0:5000 \

RRA:AVERAGE:0.5:1:600 \

RRA:AVERAGE:0.5:6:700 \

RRA:AVERAGE:0.5:24:775 \

RRA:AVERAGE:0.5:288:797 \

RRA:MAX:0.5:1:600 \

RRA:MAX:0.5:6:700 \

RRA:MAX:0.5:24:775 \

RRA:MAX:0.5:444:797 \

RRA:MIN:0.5:1:600 \

RRA:MIN:0.5:6:700 \

RRA:MIN:0.5:24:775 \

RRA:MIN:0.5:444:797

RRA存储周期计算:

1、RRA:AVERAGE:0.5:1:600

(300s=5m)*1=5m*600=50h=(2.08天)2d

2、RRA:AVERAGE:0.5:6:700

(300s=5m)*6=30m*700=50h=(14.58天)2w

3、RRA:AVERAGE:0.5:24:750

(300m=5m)*24=2h*750=(64.5天)2M

4、RRA:AVERAGE:0.5:288:797

(300m=5m)*288=1d*797=(797天)2Y

五、rrdtool graphrrdtool graph COUNTER/day.png -w 700 -h 200 \

-n TITLE:11:'/opt/rrdtool/wdjt.ttf' \

-n UNIT:8:'/opt/rrdtool/simhei.ttf' \

-n LEGEND:8:'/opt/rrdtool/simhei.ttf' \

-c SHADEA#DDDDDD \

-c SHADEB#808080 \

-c FRAME#006600 \

-c FONT#006699 \

-c ARROW#FF0000 \

-c AXIS#000000 \

-c BACK#FFFFFF \

-Y -X 3 \

-t "服务器流量统计" -v "流量" \

--start -1d --end now \

--x-grid MINUTE:12:HOUR:1:HOUR:1:0:'%H' \

DEF:value1=COUNTER/eth0.rrd:eth0_in:AVERAGE \

DEF:value2=COUNTER/eth0.rrd:eth0_out:AVERAGE \

CDEF:value3=value1,value2,+ \

COMMENT:" \n" \

COMMENT:" \n" \

AREA:value1#00ff00:上传 \

GPRINT:value1:LAST:"当前\:%8.0lf"  \

GPRINT:value1:AVERAGE:"平均\:%8.0lf"  \

GPRINT:value1:MAX:"最大\:%8.0lf"  \

GPRINT:value1:MIN:"最小\:%8.0lf"  \

COMMENT:" \n" \

LINE2:value2#4433ff:下载 \

GPRINT:value2:LAST:"当前\:%8.0lf"  \

GPRINT:value2:AVERAGE:"平均\:%8.0lf"  \

GPRINT:value2:MAX:"最大\:%8.0lf"  \

GPRINT:value2:MIN:"最小\:%8.0lf"  \

COMMENT:" \n" \

COMMENT:"─────────────────────────────────────────────\n" \

LINE3:value3#ff8833:总流量 \

COMMENT:" \n" \

HRULE:350000#ff0000:"报警值" \

COMMENT:" \n" \

COMMENT:"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t最后更新 \:$(date '+%Y-%m-%d %H\:%M')\n" -Y \

COMMENT:"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t天涯社区系统运维部开发与维护\n"

效果图:

概念说明:

1、#分别是 LINE1|2|3,也就是线条的粗细。

2、"--x-grid MINUTE:15:HOUR:1:HOUR:1:0:'%H'"说明如下:

[-x|--x-grid GTM:GST:MTM:MST:LTM:LST:LPR:LFM]

#GTM:GST:控制次要格网线的位置。GTM 是一个时间单位,可以是 SECOND、MINUTE、HOUR、DAY 、WEEK、MONTH、YEAR 。GST 则是一个数字,控制每隔多长时间放置一根次要格线。例如我们要画一个1天的图表,决定每15分钟一根次要网格线,则格式为 MINUTE:15

#MTM:MST:控制主要网格线的位置。MTM 同样是时间单位,MST 是一个数字。接上面的例子,决定一个小时1根主要网格线。则格式为 HOUR:1

#LTM:LST :控制每隔多长时间输出一个label 。决定为1小时1个 label 。则格式为 HOUR:1:0(不清楚0做什么用) ,如10 11 12 13

#LPR:LFM:LTM:LST只是决定了label的显示位置了,没有指定要显示什么内容。LPR指的是如何放置label。如果LPR为0,则数字对齐格线(适用于显示时间)。如果不为0,则会做一些偏移(适用于显示星期几、月份等)。至于LFM则需要熟悉一下date命令的参数,常用的有%a(星期几)、%b(月份)、%d(天)、%H(小时)、%M(分)、%Y(年)。我们决定显示小时和分,所以用%H%M,最好将'%H:%M'括起来,哪只显示小时就'%H'。

3、"-Y -X 0 "说明如下:

a)Y轴还有一个很方便的选项就是–Y,它可以最大限度的优化Y轴的刻度,建议每次绘图都加上去。

b)Y轴另外一个有用的选项就是–X(虽然选项名是-X,但确实是用来设置Y轴刻度值的)。在上面的图我们看到RRDtool自动对Y轴的值进行调整,以k为单位显示。但如果你不想以k显示,而是想固定以某个单位来显示(M,b)该怎么办呢?这就要用到–X选项了。-X后面跟一个参数,参数值范围是-18、-15、-12、-9、-6、-3、0、3、6、9、12、15、18。0表示以原值显示,3表示数值除以1000,也就是以k为单位显示,6就是以M显示,9就是以G显示,12则T。如果你给出1或者2,则RRDtool也可以接受,但会被“静悄悄”的改为0。下面就是一个以原值(-X0)显示原始数据,100k显示 为100000。

4、字体参数说明

-n TITLE:12: simhei.ttf    #修改top标题字体

-n  AXIS:8: simhei.ttf    #修改X轴数据字体,如01 02 03 04...

-n  LEGEND:10: simhei.ttf  #修改数字报表字体,如最大、最小、平均值及其它

-n  UNIT:8: simhei.ttf    #修改Y轴标题字符,如"流量"

-n  WATERMARK:8: simhei.ttf    #数据区右则字体,如"RRDTOOL-TOBIOETIKER"

5、HRULE:100000#ff0000:"报警值"

绘制一根水平线,在 100k 处画一根水平线,并指出这是报警值

6、COLOR参数说明

-c SHADEA#CCCCCC  #左上边框color

-c SHADEB#000000  #右下边框color

-c FRAME#EEEEEE  #数据标志说明边框color,如"上传"左边的小正方形。

-c FONT#006699    #图形所有字体color

-c ARROW#FF0000  #两个箭头color

-c AXIS#FF0099    #两条箭头线color

-c BACK#FFFFFF    #图形背景(不含数据区)color

-c CANVAS#000000   #图形数据区背景color

-c MGRID#ee2359  #主网格线color

-c GRID#FF0000    #次网格线color

六、修改Cacti的rrd.php以使绘图变的更加精细

[root@radius ~]# vim /usr/local/nginx/html/cacti/lib/rrd.php

在/* basic graph options */段增加圈出来的部分

在/* basic graph options */之前增加如下部分

把/* override: graph width (in pixels) */段修改成如下

解释:

如果你所选的绘图时间在1小时之内,Cacti出图的宽度就会变成2000(由于还没有找到如何使X轴上的文字竖排显示所以就只能改一下宽度了,如果有谁能知道怎么修改请联系我吧)

先看一下不修改rrd.php的效果

修改了rrd.php的效果

筛选时间如下:

看下出图效果:

修改rrdtool右侧水印

php修改时区MST,4、修改Cacti绘图的时间精度相关推荐

  1. Linux修改时区(tzselect) 【例子:修改时区 为 中国 东8区 的时间】

    文章连接:https://blog.csdn.net/sxzlc/article/details/115792270 ======= 扩展: 使用Linux的tzselect功能,查看各个洲都有哪些国 ...

  2. linux修改时区配置文件,如何修改 Linux 默认时区

    在上一篇笔记中,我们知道了如何在Linux 中查看系统默认时区,这篇笔记来学习以下如何修改默认时区. 在Linux 服务器或系统上保持正确的时间始终是一个好习惯,它可能具有以下优点:由于Linux 中 ...

  3. linux操作系统怎么修改时区,Linux操作系统修改时区的方法

    首先重要的问题是你使用utc还是local time. UTC(Universal Time Coordinated)=GMT(Greenwich Mean Time) Local time 是你手表 ...

  4. ubuntu 修改时区、时间、同步网络时间、将时间写入硬件

    查看系统当前的时间状态 $ timedatectl statusLocal time: 六 2021-10-30 09:33:37 CSTUniversal time: 六 2021-10-30 01 ...

  5. Linux 修改时区和时间

    时区文件 CentOS 和 Ubuntu 的时区文件是 /etc/localtime , 但是在 CentOS7 以后 localtime 以及变成了一个链接文件 : # ll /etc/localt ...

  6. linux时区文件命令,修改Linux时间和时区

    修改Linux系统时间: 步骤一:修改Linux系统时间: linux系统时钟有两个,一个是硬件时钟,即BIOS时间,就是我们进行CMOS设置时看到的时间,另一个是系统时钟,是linux系统Kerne ...

  7. ubuntu下更改时区_怎么修改Ubuntu系统的时区时间日期

    linux系统修改系统时间与时区的方法一: 修改系统时间. linux系统时钟有两个,一个是硬件时钟,即BIOS时间,就是我们进行CMOS设置时看到的时间,另一个是系统时钟,是linux系统Kerne ...

  8. linux(ubuntu)查看/修改时区时间

    查看当前时间状态 在新版的ubuntu中,使用timedatectl 替换了ntpdate来进行时间管理. timedatectl status RTC time就是硬件时钟时间. 设置时区 dpkg ...

  9. Linux切换运行级别、关闭防火墙、禁用selinux、关闭sshd、时间同步、修改时区、拍摄快照、克隆操作

    文章目录 1. Linux运行级别及切换 2. 关闭防火墙并禁止开机启动 3. 禁用selinux 4. 关闭sshd服务 5. 时间同步 6. 修改时区 7. 删除70-persistent-net ...

最新文章

  1. 搭建服务器环境 安装jdk、mysql、Tomcat 以及配置https 记录
  2. 美国动物园小鹿“撞脸”韩国艺人 粉丝众筹为其取名
  3. Apache配置代理服务器的方法(1)
  4. 天体摇摆仪的工作原理
  5. perl 的mail严格正则表达式到底要怎么写?
  6. oracle 云 BI,[Oracle]见习BI工程师之函数
  7. 【Java】浅谈关键词transient的使用
  8. java 界面输出控制台信息,java 怎么获取控制台的数据并且输出到GUI上
  9. [HTTP] HTTP消息
  10. html 滚动条,菜鸟,ionic 滚动条
  11. 5. 在Windows上安装Git
  12. MySQL之数据库编程(了解语言结构)
  13. linux sound usb声卡,openwrt上用usb声卡听音乐
  14. 3d工口医Android,3d口工医完整版
  15. ACM的奇计淫巧_bitset优化
  16. 【IOS】iphone逻辑分辨率
  17. Oreilly的历史和公司概况
  18. python 去掉标点、数字、特殊符号_python中怎么去掉标点符号
  19. 《结网》@互联网产品经理改变世界 读后感
  20. vm文件,.vm后缀的文件

热门文章

  1. 检测硬盘使用时长_如何检测硬盘问题
  2. 【亲测可用】用Electron和electron-builder打包Vue项目为exe可执行文件安装包(不推荐,个人觉得没有VNISEdit和NW好用,而且有些配置文件还挺脑残!)
  3. Ubuntu 常用操作
  4. tensorflow学习笔记————分类MNIST数据集
  5. 2018.3.15校内互测总结-点分治-线段树
  6. 一:HDFS 用户指导
  7. 地图收敛心得170405
  8. 关于刘冬大侠Spring.NET系列学习笔记3的一点勘正
  9. CSS中关于清除浮动的问题
  10. yolov3(一:模型训练)