首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

cacti相干笔记

2012-06-27 
cacti相关笔记#!/bin/shecho 11?第二步:snmpd.conf添加完成后,一定要重启一下snmpd,重启完成后,现在自己

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: 1
UCD-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个小图标,分别是

NormalRecoveringThreshold
BreachedDown

但是,又在某次重新装下cacti后,发现Threshold Breached又不见了

?

这个是cacti-0.8.7g以上版本都有的一个小bug

?

两个插件都完成了安装的话

?

解决方法如下:

?

写道In monitor.php instead of line

if (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/sh

echo 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.sh
num1: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 - atto
10^-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开源社区啊

?

后期持续更新。。

热点排行