rrdtool学习系列-4

今天这讲是讲如何用rrdtool 进行绘图(接近成功)

rrdtool graph 文件名,一般文件名我们都用 *.png 格式;后面的参数比较多,咱们慢慢说
1、[-s|–start time] [-e|–end time] [-S|–step seconds]
你可以理解为你这个图做出了要显示的一个时间段,比如
–start=now-7200 \
–end=now \
意识是这个图是从2个小时前开始画起,到当前时间结束;step可省略,按rrd生成时候的step默认

2、[-t|–title string] [-v|–vertical-label string]
这个就不详细介绍了,-t 是图的标题,-v是图的Y轴注释

3、[-w|–width pixels] [-h|–height pixels] [-j|–only-graph]
图的宽度高度,-j这个参数有点意思,如果你指定-j,并设置高度<32像素,那么你会得到一个icon。

继续阅读rrdtool学习系列-4

设置DNS的BAT

有些时候找东西要翻墙,总是手动设置DNS,随着次数增多就发现太麻烦了,写个批处理执行

@echo off
@echo 开始更换DNS
@echo 正在设置主DNS信息………
netsh interface ip set dns "Local Area Connection" static 8.8.8.8 primary
@echo 正在设置辅DNS信息………
netsh interface ip add dns "Local Area Connection" 8.8.4.4
@echo DNS更换完成…
pause

红色标注的地方要换成你的网卡名

关于php的PEAR扩展库的使用

摘抄:PEAR是PHP扩展与应用库(the PHP Extension and Application Repository)的缩写。它是一个PHP扩展及应用的一个代码仓库,简单地说,PEAR就是PHP的CPAN。

今天安装phpbt做测试(https://phpbt.sourceforge.net/),就要用到PEAR,发现原来编译的php5.2.13用了without-pear,赶紧重新编译,加上了PEAR支持,安装phpbt,报告还是没有PEAR:DB,DB.php没有找到,仔细看了看安装完成后的PHP信息,原来要加一行到php.ini里的include_path里,如下
include_path = "/usr/local/php/lib/php"

加上后原以为会正常执行,还是报没有DB.php,到PEAR目录/usr/local/php/lib/php里发现的确没有DB.php怎么办?找了一些都是windows的例子,仔细分析,发现要用 pear install XX来安装,find发现pear已经被安装到php的bin目录了,那就好办了,去pear网站下载DB包(https://pear.php.net/package/DB),最后一版的名字叫db-1.7.14rc1,放在PEAR目录下,然后执行
/usr/local/php/bin/pear install db-1.7.14rc1
安装,等一会就会出现安装成功的提示,在看一下目录里是不是多了DB.php了?

需要说明的是,目前DB已经被MDB2 代替了,如果是较新的程序,装MDB2吧,支持的数据库更多。安装完后会在PEAR目录里生成一个MDB2.php的文件,但是DB.php和MDB2.php这两个程序无法互换。

我把这个过程写下来,希望会对以后用PEAR的朋友有个帮助!再废个话,phpbt界面太小气,舍弃!

rrdtool学习系列-3

今天这讲非常简单,就是如何更新(图)库文件!!虽然功能很简单,但这是出图很重要的一步,这步有问题,图根本就出不来。

rrdtool update demo1.rrd N:3.44:3.15:U:23
Update the database file demo1.rrd with 3 known and one UNKNOWN value. Use the current time as the update time.

rrdtool update demo2.rrd 887457267:U 887457521:22 887457903:2.7
Update the database file demo2.rrd which expects data from a single data-source, three times. First with an UNKNOWN value then with two regular readings. The update interval seems to be around 300 seconds

就这四句话,第1、3句是例子,2,4句是解释

N代表当前时间,U代表unknown数据;在第二个例子中,你要知道
887457267:U 887457521:22 887457903:2.7
标记为红色字体的这些数值都是时间,后面是插入的数据,就够了,很简单,而我们一般写shell的时候都用N来更新数据源,方便。大家消化消化,有什么问题可以在评论上写。

rrdtool学习系列-2

今天去机房,利用早上头脑清楚的时候发吧,今天这讲是如何建立一个(图)库文件test.rrd,很简单,就是

rrdtool create test.rrd

不过这个test.rrd没有属性,我们需要给它加属性,属性有如下几种

1、–start  从1970年1月1日12点到你创建这个(图)库文件的时间,value的单位是秒,如果你对date命令不清楚的话,建议看看date man,否则就成了Outman了,这里给个linux下的执行命令,你能看到你执行命令的时候离1970年1月1日12点有多少秒

date -d "1999/01/01 12:00:00" +%s 

我执行这个命令得出的值是915163200

2、–step value的单位也是秒,有默认值,是300秒(5分钟)表明你设定的这个(图)库文件里的数据每隔5分钟应更新一回数据,这里就引出了一个问题,循环的问题,这个问题推荐用crontab来解决,因为你创建的这个(图)库文件本身是不会根据这个value来进行更新的,它只是个“静态文件”,就像windows桌面的txt一样,txt能自动更新吗?显然不行,需要你添加文字内容后再保存,它才会更新。这个rrd(图)库文件也一样,虽然你这里设置了5分钟,但如果你不给它数据,50分钟它还是那个空白的源文件,所以我们应该用crontab设置每5分钟更新一下这个rrd文件并给它新的数据用于运算。

3、DS 顾名思义,就是定义数据源(Data Source),格式如下
DS:variable_name:DST:heartbeat:min:max
(1)variable_name:数据源的名字,你自己可以按自己的实例随便起,当然原则是自己能看明白
(2)DST:这个你可以理解成Mysql中的data type,你已经很幸运了,rrdtool只提供四种data type ——COUNTER, DERIVE, ABSOLUTE 和 GAUGE。Mysql提供了23种,如果你对Mysql 的 data type 感兴趣,可以参考这里
https://www.htmlite.com/mysql003.php,下面说说rrdtool这四种data type有什么区别
COUNTER:将会每隔间隔时间(step值)保存数值的变化率,只有变量的数值一直增加才能使用,流经路由器的流量很适合使用COUNTER类型;
DERIVE与COUNTER一样,但它允许负值(就是不一定是一直增加),如果你想查看你的服务器可用空间的变化率,你可能会用到DERIVE;
ABSOLUTE也是保存变化率,但它假设前边的数据被置为0,当前数据与前一数据的差异与当前的值是一样的,这样它仅仅存储了当前值与时间间隔的商;
GAUGE并不是保存变化率,它存储了数值本身,并没有任何分割计算,服务器的内存消耗是gauge的一个典型例子。
GAUGE和COUNTER类型将是我们以后用到最多的。引用一个大多数人都看到过的例子(本人并不觉得这个例子最贴切)
Insert data    = 300, 600, 900, 1200  (step=300)
COUNTER 类型保存的数据   =    1,  1,   1,    1
DERIVE   类型保存的数据  =    1,  1,   1,    1
ABSOLUTE 类型保存的数据   =    1,  2,   3,    4
GAUGE 类型保存的数据     = 300, 600, 900, 1200

(3)heartbeat 如果step是300,那么我们一般设置heartbeat为600,意思就是如果(图)库文件在300秒内没有得到新的数值,它将把Unkown值保存到数据库中,Unkown是rrdtool的一个特殊值,它比假设丢失的值是0或是其他的可能数值要好的多,比如路由器的流计数器一直在增长,如果一个值丢失了,0而不是Unkown被存储了,这样当下一个值到来的时候,它将会计算当前值与前一值(也就是0)的差值来生成数据,这显然不合适,可见插入Unkown是很重要的。
(4)min:max 这两个一起说,最大最小值,有数据插数据,没数据插Unkown

4、RRA,就是round robin archive,可以理解为循环存档方法,格式如下
RRA:CF:xff:step:rows
(1)CF 你可以理解为计算方法,它有四个可选项——AVERAGE, MINIMUM, MAXIMUM, 和LAST,平均,最大,最小和最终
(2)xff 只能取值[0,1),这个说白点呢,你可以理解为是个百分比,而且这个百分比只能取小数点后1位数,也就是0,0.1,0.2…一直到0.9,
xff = 0    表示一次循环中不能有未知数据插入 xff = 0.9  表示可以允许 10% 的 未知数据,超过了这个10%的未知数据将被记录为Unkown。
(3)step和rows,举个例子
12:24如果是这样,代表经过12个step时间所得数据运用CF运算后构造成一个数值,24个这样的数值将被存档,如果step是5分钟,那么12个step就是1小时,在这1小时之内的数据都经过CF运算构造成一个值,24个这样的值就是1天(24小时)的值,那么1天的数据量是24笔,同理,你可以知道288:31代表了什么——288个5分钟(step)的数值经过CF运算变成一个数值,这个数值是24小时(1天)的数据值,31个这样的数据值将被存储,这就是1个月的数据量,举一反三,我们可以按小时,按天,按月,按年将数据存储在RRD中,应该这么写
1:12
12:24
288:31
8928:12

到此,第一讲完成,大家消化消化!!

Mysql的data type (转)

Once you have your table data organized, the next step is to figure out the data type. There are three main types : text, numbers, and Dates/Times. Choosing the column types specifies what information can or can’t be stored in a table cell. Using the most correct option for each column is important as it may affect the database’s overall performance.

TEXT TYPES

CHAR( ) A fixed section from 0 to 255 characters long.
VARCHAR( ) A variable section from 0 to 255 characters long.
TINYTEXT A string with a maximum length of 255 characters.
TEXT A string with a maximum length of 65535 characters.
BLOB A string with a maximum length of 65535 characters.
MEDIUMTEXT A string with a maximum length of 16777215 characters.
MEDIUMBLOB A string with a maximum length of 16777215 characters.
LONGTEXT A string with a maximum length of 4294967295 characters.
LONGBLOB A string with a maximum length of 4294967295 characters.

继续阅读Mysql的data type (转)

rrdtool学习系列-1

https://oss.oetiker.ch/rrdtool/pub/?M=D 下载最新版本
rrdtool-1.4.4.tar.gz             05-Jul-2010 23:52  1.3M

文件信息很详细了,估计刚接触的同学们安装费点劲,好在Tobias Oetiker已经把相关的lib库放在专门的地方了
https://oss.oetiker.ch/rrdtool/pub/libs/

安装就甭讲了,网上很多,或者你找找我们cacti中文论坛的文档(网络上到处都是,谁都没和我打过招呼  :—( )

今天快下班了,先起个头,这个东西你可以看成是数据库程序,确切的说是循环数据库程序;如果你不喜欢数据库,你可以把它看成是一个绘图工具(这样就不反胃了吧??)

这里我不讲CDP,PDP,术语创造出来都是为人服务的,我也不会讲循环语句,为什么呢?crontab 能帮我们实现循环,很多人为了SHOW代码,做循环语句,while–do–done,for 哈哈,其实根本没必要,人家本身就是循环数据库,嘿嘿!

先琢磨琢磨我说的这些话,然后你再去网上看教程,或者去 https://oss.oetiker.ch/rrdtool/tut/index.en.html 看手册。你会有收获的。明天正式进入学习阶段,就这样吧!