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 看手册。你会有收获的。明天正式进入学习阶段,就这样吧!

climberlife的nginx版本升级到最新了

这两天nginx升级很快,今天把nginx最新版本BUILD的了,看看有什么不同

Changes with nginx 0.8.46                                        19 Jul 2010

    *) Change: now the "proxy_no_cache", "fastcgi_no_cache",
       "uwsgi_no_cache", and "s觛i_no_cache" directives affect on a cached
       response saving only.

    *) Feature: the "proxy_cache_bypass", "fastcgi_cache_bypass",
       "uwsgi_cache_bypass", and "s觛i_cache_bypass" directives.

    *) Bugfix: nginx did not free memory in cache keys zones if there was
       an error during working with backend: the memory was freed only
       after inactivity time or on memory low condition.

Changes with nginx 0.8.45                                        13 Jul 2010

    *) Feature: ngx_http_xslt_filter improvements.
       Thanks to Laurence Rowe.

    *) Bugfix: SSI response might be truncated after include with
       wait="yes"; the bug had appeared in 0.7.25.
       Thanks to Maxim Dounin.

    *) Bugfix: the "listen" directive did not support the "setfib=0"
       parameter.

rrdtool的利用

cacti用的久了,就会有一些便扭,其实它是基于rrdtool和snmp工具而实现的,rrdtool这个工具好久之前用过,很不错的一个工具,就是装起来费点劲,但灵活而且强大,从今天开始陆续发一些rrdtool的文章,为了自己也为了其他人日后能用到,这些文章很多部分都来源于网络,但不是完全照搬,而是有我自己的测试和理解,今天就先这么个预告吧。

最近想仿bookmooch做个项目

BookMooch:一个交换旧书的网站,09年8月初刚刚诞生。交换的程序很简单,把你不想要的书列在网上,然后如果有人需要(可以通过搜索或浏览别人列出的旧书),你就把书寄给他,然后你就可以得到一个point,当你发现中意的旧书时,就可以用这个point 去交换别人的旧书。寄书的运费是由旧书的主人承担的,基本上就是一种互惠的活动,因为别人寄书给你的时候别人也要承担邮费(你在注册时可以选择只同意国内邮寄或国际范围内都可)。呵呵,所有的书都是等价的,都只值一个point ,不过这样的设定也有它的合理之处,同一本书,在不同人的眼里价值是不一样的,交换可以使双方都得到自己喜欢的书。国内还没有这样的网站,我想这种模式是不是在中国也可以尝试一下呢?

https://bookmooch.com/

你把自己不要的书列出来。然后去找自己想要的书。自己有大于等于1点的积分才可以要求别人寄你想读的书给你

  • Type books in: enter books you own and want to give away. Each book typed in gets you 1/10th of a point.(你自己列出的不要的书,每本书0.1点)
  • Give books away: respond to a mooch request, and send your book to them. 1 point awarded, 3 points if sent to another country.(如果有人要你寄出你所列的某本书,你成功寄出了,会得到1点积分,如果寄国外,得到3点积分)
  • Acknowledge Receipt: after you receive a book, leave feedback for the sender and earn 1/10th of a point. (如果你收到书了,你给寄送者留下反馈,会得到0.1点积分)

You use up points when(使用你的积分):

  • Mooching Books: each book you receive costs you 1 point, 2 points if it was postal mailed from another country.(索要:当你像别人索要书时,会从你帐户扣除1点积分,如果是国外寄来的会扣除2点积分)
  • Charities: you can give your points to worthwhile charities we work with. (捐赠你的积分)

Some additional facts:

  • 2:1 ratio: you have to send out at least 1 book for every 2 you receive. If you don’t keep this ratio up, you won’t be able to mooch any books, even if you have the points, until you improve your ratio. Sending internationally counts as 3 books.(2:1的比例,你寄出1本才可能索到2本,如果低于这个比例,将无法进行索要。国际寄送1本相当于3本。)
  • Feedback score: if your feedback score is bad, people may refuse your mooch requests. Efficient response and well-packaged books in good condition earn good feedback points.
  • Lost in the mail: if a book is "lost in the mail" the sender gets their point anyway, and the receiver doesn’t lose a point. You’re allowed a limited number of "books lost in the mail" in order for us to limit possible fraud.(如果寄丢了:如果书寄丢了,寄出者无论如何会得到积分,收书者不会因这次不成功的索要而失去积分。但是你寄丢书的个数是有限的,以防止欺骗)