cacti相关笔记
#!/bin/shecho "11"?
第二步:snmpd.conf添加完成后,一定要重启一下snmpd,重启完成后,现在自己主机上测试一下
?
写道snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.50?
这时候应该可以看到类似下列的输出
写道UCD-SNMP-MIB::ucdavis.50.1.1 = INTEGER: 1UCD-SNMP-MIB::ucdavis.50.2.1 = STRING: "shelltest"
UCD-SNMP-MIB::ucdavis.50.3.1 = STRING: "/bin/sh /root/test.sh"
UCD-SNMP-MIB::ucdavis.50.100.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.50.101.1 = STRING: "11"
UCD-SNMP-MIB::ucdavis.50.102.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.50.103.1 = ""
?
其中,UCD-SNMP-MIB::ucdavis.50.101.1 = STRING: "11"
就是你要的数据
再进一步细化,执行snmpwalk -c public -v2c localhost .1.3.6.1.4.1.2021.50.101.1
?
会看到类似下列的输出
写道UCD-SNMP-MIB::ucdavis.50.101.1 = STRING: "11"?
那么,你要采集的数据“11”,所对应的,能够写到cacti数据模板里去的OID就是.1.3.6.1.4.1.2021.50.101.1
?
第三步:进入cacti的web界面,cacti本身就带了一个数据模板,名字叫“SNMP - Generic OID Template”
?
把它复制一个出来,名字随便改成test之类的,其他一些选项怎么填网上搜一下,一大堆带图片的,记得把你对应的OID填到数据模板的OID里去就可以了
?
第四步:创建一个图形模板,这个也不说了,能采集到数据,都很简单了
?
第五步:注意看图,结合cacti log,没图没数据记得turn on debug调调
?
?
?
三、如何让图像每分钟更新一次数据?
对于设置用spine来进行数据采集的话,数据确实是每分钟采集一次,但是,应该有人注意看了,图像可不是每分钟更新一次,而是5分钟更新一次,而且根据设置,一般都是5分钟的平均值,这个多少有些不方便了
?
怎么更改呢,一个设置就OK了
?
写道第一步:选择要修改的数据模板第二步:将“Associated RRA's” ==》 “Hourly(1 Minute Average)”选上
第三步:将数据模板里对应的“Data Source” ==》 “Step” ,由之前的300改成60即可
这故名思议了,就是将图像数据更新由300秒变成60秒
第四步:也是最最关键的一步,那就是点击页面最下方的“Save”?
对于这种做法,cacti官方论坛有人讨论过,连接如下,大家可以看看,貌似老外们还比较推崇这种做法
http://forums.cacti.net/about3971.html
?
四、Monitor插件对应的页面里,没有Threshold Breached图标?
相信装过cacti两次以上的人绝对碰到过这个问题,即某次装完monitor跟thold之后,monitor对应点页面,图标解释那块,有4个小图标,分别是
NormalRecoveringThresholdBreachedDown
但是,又在某次重新装下cacti后,发现Threshold Breached又不见了
?
这个是cacti-0.8.7g以上版本都有的一个小bug
?
两个插件都完成了安装的话
?
解决方法如下:
?
写道In monitor.php instead of lineif (in_array('thold',$plugins)) {
change to
if (true) {
and instead of line
$thold = (in_array('thold',$plugins) ? true : false);
change to
$thold = true;?
这是cacti官方论坛提供的方法
http://forums.cacti.net/viewtopic.php?f=17&t=39972
?
?
五、利用shell脚本采集多个数据
对于这个方法,cacti官网也有how to的文档可以看
http://www.cacti.net/downloads/docs/html/making_scripts_work_with_cacti.html
?
老子不得不说cacti社区真是什么答案都有,google cacti相关的全英文关键字搜索的话,基本上都是cacti官网的页面在最前,以后大家碰到什么问题直接搜英文好了,不管你碰到cacti任何问题,只要你关键字搜的准确,cacti官网里绝对有答案
?
这个文档大概的意思是说,如果你用scripts/cmd这种方法来采集数据的话,如果采集的数据是一个,那么你的shell输出就直接是答案即可,例如
写道#!/bin/shecho 7
? 这个脚本输出就是一个“7”,那么在重新写采集方法的时候,对应“Output Fields”就可以随便取名字勒
?
但是,如果你要取多个数据的话,就要根据显示出来的参数来决定“Output Fields”的名字勒
?
例如
写道#!/bin/sh#
# Just for? test used by cacti
#
#
num1=11
num2=21
num3=33
num4=47
num5=53
num6=62
num7=71
echo "num1:$num1 num2:$num2 num3:$num3 num4:$num4 num5:$num5 num6:$num6 num7:$num7"
?
这个脚本的输出是
写道[root@localhost scripts]# ./test.shnum1:11 num2:21 num3:33 num4:47 num5:53 num6:62 num7:71
?
此时,你要采集num1对应的数据的话,那么“Output Fields”的名字就必须num1
?
同理,任何你要采集的shell数据,它的输出格式必须是
<Var1>:<number1> <Var2>:<number2>
?
中间以空格区分,其中“Output Fields”的名字一定必须写“Var1”,不需要把冒号“:”加进去,冒号记得用英文的
?
OK,简要描述一下cacti添加shell脚本采集数据的完整过程
?
第一步:添加数据输入方法 写道“Console” ==》 “Data Input Methods” ==》 “Add”第一个: Name 随便取
第二个: Input Type ==》 Scripts/Command
第三个: Input String ==》 /bin/sh <path_cacti>/scripts/test.sh
这个地方注意了,如果你需要添加命令行参数的话,可以在脚本名字后面添加
例如
/bin/sh <path_cacti>/scripts/test.sh <hostname> <ip_add>
如果没有添加命令行参数的话,对应的Input Fields保持无内容就可以了
如果有添加命令行参数的话,在“Input Fields”模块里,需要修改一下
第一个: Field [Input] 选择对应的那个
第二个: Friendly Name 随便取一个
第三个: Regular Expression Match 空着就可以
第四个: Allow Empty Input 根据实际选择
第五个: Special Type Code 随便啦
接下来是无论有没有命令行参数都要修改的“Output Fields”
第一个: Field [Output] 这个就是最关键的一个参数了,你shell脚本对应的Var1是什么名字,这里就必须写什么名字,不需要冒号,然后有几个参数,就一一添加进去,名字记得跟shell脚本输出对应起来
第二个: Friendly Name 随便取
第三个: Update RRD File 勾上?第二步:添加数据模板 写道“Console” ==》 “Data Templates” ==》 “Add”
第一个: Name 随便取
第二个 : Name 基本也是随便取,但是格式是这样
|host_description| - yourname
第三个: Data Input Method 这个就是选择你上一步数据输入方法中的名字
第四个: Associated RRA's 默认也可以,把每分钟加上去也可以
第五个: Step 默认也可以,但是第四个如果把每分钟加上去的话,这个值必须从300变成60
第六个: Data Source Active 把它勾上
下面就是添加数据源了
“Data Source Item” ==》 “New”
第一个: Internal Data Source Name 这个名字也很重要,填Var1的名字,就是第一步中提到的很关键的那个栏的名字
第二个: Minimum Value Maximum Value Data Source Type Heartbeat 这几个根据情况随便来
第三个: Output Field 这个地方是选择的,就是选择第一步里Var1对应的friendly name
这里也是所有参数对应一一添加上去
还有一栏就是Custom Data,这个不用做任何添加或修改
?
第三步、添加图像模板这个就不说了,如果这个你还不会的话,整个用shell脚本提取数据你也别弄了,有问题找google
?
第四步、添加设备对应图形在localhost添加对应图形后,如果过了几个轮询间隔之后还不出图的话,在“Graph Management”找到对应图形模板,turn on debug model,看看最下面的报错,如果是报错
?
ERROR: the RRD does not contain an RRA matching the chosen CF
?
这个又是一个cacti的小bug了,我在官网没找到根本解决方法,只有一个替代方法
?
那就是把第三步添加的对应图像模板,将要在图像里显示出来的item的CF Type改成“Average”,而不是“Last”,改完之后图像就可以显示了
?
?
不过这样用shell脚本提取数据有个短板,那就是只能提取运行cacti的服务器数据,如果你要抓取被监控设备的相关数据化,查查snmp系列的命令,例如snmpnetstat就可以通过snmp采集netstat相关数据,或者编写网络通信脚本,将数据直接传送过来,需要一定的脚本能力
?
?
?
?
六、cacti图里出现的单位,比如“u”、“m”分别代表什么数量级??
来自cacti官网
http://forums.cacti.net/viewtopic.php?f=6&t=8168
?
写道10^-18 a - atto10^-15 f - femto
10^-12 p - pico
10^-9 n - nano
10^-6 u - micro
10^-3 m - milli
0 (no unit)
10^3 k - kilo
10^6 M - mega
10^9 G - giga
10^12 T - tera
10^15 P - peta?
?
?
?
?
?
强大的cacti开源社区啊
?
后期持续更新。。