最近有童鞋提问说怎么用Cacti监控磁盘的百分比使用率,我看了下Cacti的磁盘监控模版里也没有一个关于百分比的监控,这当然得结合Thresholds插件来实现该功能。这也涉及到了一个RPN表达式的的简单应用,一起来看下它的简单应用。

什么是 RPN

RPN 代表逆波兰式(Reverse Polish Notation)。
A)RPN 是 Reverse Polish Notation 的缩写,是用于表示算术运算和逻辑运算的一种语法格式。
B)RRDtool 的 CDEF 语句中就经常使用 RPN 来对 DEF 取出来的数据进行运算。
C)RPN 的特点是操作数和操作符出现的顺序和运算的顺序一致,这样就不需要使
用括号了
D)RPN 的格式是 <value1>,<value2>,<operator>,[<value1>,<value2>,<operator>]…

可以看出是操作数在前,操作符在后的格式

最神奇的地方是用它来表示数学表达式,完全不需要括号。而且 RPN 不像普通的数学表达式那样,操作符在操作数的中间,而是在操作数的右边。

例如

3+2  用 RPN 表示就是 3,2,+

3+2x5  用 RPN 表示就是 3,2,5,x,+

最后运算的部分(加法部分)的操作符放在最后,乘号放在前面,表示先执行 2 x 5 ,在把结果和3相加。

再来看看(3+2)x5怎么表示呢:

3,2,+,5,*

或者  3,2,5,+,*   也行

复杂的表达式就不说了,RPN也比较深奥,来看看在Cacti中的实体应用。

在这里以监控Linux的磁盘使用为例。在Cacti中,监控磁盘有两种模版:

Host MIB - Available Disk Space

ucd/net - Available Disk Space

第一种在Linux里还可以监控到内存呀,虚拟内存的使用,如果监控硬盘的使用百分比会出现意外的数据(即同时会监控到内存的使用率,有时候会影响到报警效果,一般内存的使用率可能都比磁盘使用率高很多,这不用多解释了)。

第二种就只会监控到根分区,可能有时候需要在snmp.conf配置文件中添加"disk /",才会获取到磁盘数据。

说说RPN的应用吧。原理很简单,都是已用空间除以总容量就得出使用率了。

Host MIB - Available Disk Space

图片来源 陆小K网络工作室 http://cto.luxiaok.com

代码:

 
  
  1. |ds:hdd_used|,|ds:hdd_total|,/ 

在Thresholds模版里按上面的设置即可(我这里的Cacti版本0.8.8a官方英文原版)

ucd/net - Available Disk Space

Cacti监控Linux磁盘百分比使用率

代码:

 
  
  1. |ds:hdd_used|,100,*,|ds:hdd_free|,|ds:hdd_used|,+,/ 

这里稍微复杂了点,因为在ucd/net - Available Disk Space的模版里只提供了free和used两个数据源,所以求总容量先要相加。这里其实也进行了下转换,把百分比数乘了个100,就不是小数了,也可以去掉。

学会了吗,就这么简单。