cacti相关笔记



一、各主机数据合并在一个图里

 

比如你所有服务器都在监控网口流量,但是对于所有主机网口流量总和却没有一个数据,那么,这个试试下面这个方法

 

它的意思就是添加一个图像,这个图像可以合并现有的数据源,具体如下:


写道
You have to create you own graph, but to get multiple hosts, you do not select a host when creating a new graph.

Click on Console ->; Graph Management, then click on Add in the upper right hand corner.

Select None and None for Selected Graph Template and Host. Click create.

Then set your max value and graph title... Click create.

Now you can start adding graph items.

You should see all data sources for all hosts. Then you can add any of them you like.

特别注意事项:汇总数据的话,会将数据源添加到该图里,但是千万不要删除这个图,因为你把汇总数据的图删掉的话,对应的数据源也会被删掉。

解决方法:要么将需要汇总的数据源都复制一个,要么就对汇总的数据源进行解散,总之不能删除


 

 

二、利用SNMP OID采集脚本数据

第一个方法是使用snmp oid来采集的

 

很多人都找不到一个可用的OID来采集数据,这个我非常同情,因为我也曾经这么悲催过

 

其实OID不用去网上搜,snmp的配置文件里面就有了,vim一下配置文件,一般目录是/etc/snmp/snmpd.conf

 

找到如下一部分注释代码

 

写道
###############################################################################
# Extensible sections.
#

# This alleviates the multiple line output problem found in the
# previous executable mib by placing each mib in its own mib table:

# Run a shell script containing:
#
# #!/bin/sh
# echo hello world
# echo hi there
# exit 35
#
# Note: this has been specifically commented out to prevent
# accidental security holes due to someone else on your system writing
# a /tmp/shtest before you do. Uncomment to use it.
# % snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.50
# enterprises.ucdavis.50.1.1 = 1
# enterprises.ucdavis.50.2.1 = "shelltest"
# enterprises.ucdavis.50.3.1 = "/bin/sh /tmp/shtest"
# enterprises.ucdavis.50.100.1 = 35
# enterprises.ucdavis.50.101.1 = "hello world."
# enterprises.ucdavis.50.101.2 = "hi there."
# enterprises.ucdavis.50.102.1 = 0

 

OK,OID就是上述里的.1.3.6.1.4.1.2021.50,这个就可以拿来给你采集数据了

 

我举个例子来说明怎么利用OID来采集数据

 

第一步:vim /etc/snmp/snmpd.conf

 

加上一行

 

写道
exec .1.3.6.1.4.1.2021.50 shelltest /bin/sh /root/test.sh

 

其中test.sh脚本如下:

 

#!/bin/sh

echo "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
Breached
Down

但是,又在某次重新装下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开源社区啊

 

后期持续更新。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值