cacti自定义脚本
2015-11-16 16:37
239 查看
自定义数据收集方法,脚本(xml, scripts, command)
数据收集了如何保存呢?数据模板。数据模板定义了:怎么通过数据收集方法获取数据,获取的数据如何保存,以及保存在什么地方。(也就是调用rrdtool create , rrdtool update)
把数据模板应用到特定的device上,就会创建数据源。
有了数据源,那么就可以绘图了。图形模板或者自定义,应用到相应的数据源上。(rrdtool graph)
以下是cacti官方文档:
http://docs.cacti.net/manual:087:3a_advanced_topics.1_data_input_methods
任何可以通过脚本来获取数据的设备都可以使用cacti来监控。
下面就来演示一下,进行自定义监控的整个流程。
1、创建数据收集脚本
[root@bogon ~]# vi tcpconn.sh #!/bin/bash # $1: hostname or ip # $2: snmp community if [[ $# -ne 2 ]];then echo "Usage: $0 [hostname | IP] snmp_community" exit fi SNMPNETSTAT=/usr/bin/snmpnetstat ESTABLISHED=$(${SNMPNETSTAT} -v2c -c $2 -Can -Cp tcp $1 | grep -i ‘established‘ | wc -l) echo -n "established:$ESTABLISHED" ## 为脚本添加可执行权限 # chmod +x tcpconn.sh ## 把脚本复制到cacti安装目录的scripts目录下(重要) # cp tcpconn.sh /web/cacti/scripts/
注意:数据收集方法的输出格式比较特殊,而且规定必须是这样才行。
官方文档这样描述: Data inputmethods with more than one output field are handled a bit differently whenwriting scripts. Scripts that output more than one value should be formattedlike the following:
<fieldname_1>:<value_1> <fieldname_2>:<value_2> ... <fieldname_n>:<value_n>
2、cacti上添加数据收集方法
![](http://s3.51cto.com/wyfs02/M02/47/DE/wKiom1QB6dLTBWrmAAJMty4RhVo786.jpg)
接下来,填入相应的信息。
![](http://s3.51cto.com/wyfs02/M01/47/E0/wKioL1QB7BOBCLhgAAHsJ8MTOqo977.jpg)
怎么执行我们的脚本呢? /bin/bash。 脚本的具体路径呢?可以引用<path_cacti>。我们的脚本需要传递参数,该如何传递呢?
<path_cacti>是一个宏,引用cacti的安装目录
如果脚本需要接受参数,请用<>括起来
然后点击"Create",下面的Input Fields, Output Fields,分别对应参数输入以及脚本的输出。
![](http://s3.51cto.com/wyfs02/M00/47/DE/wKiom1QB6-_SI2HAAAF10ydCyBg347.jpg)
有几个Input Fields就需要Add几次,同样有多少个Output Fields也需要Add多少次。
添加Input Fields
![](http://s3.51cto.com/wyfs02/M01/47/DE/wKiom1QB7S-T2VQ7AAIiwllJqbM909.jpg)
我们看到,cacti已经定义了许多Speial Type Code。它们类似于宏,我们能够继承它并能够取得相应device相关的信息。我们知道图形和数据收集方法都必须关联到特定的device上,在定义device时,就会指定其hostname等相关信息。如果我们没有提供输入的参数,就让它自动去继承device的那些宏<
4000
/span>。如果使用hostname,那么此脚本应用到哪个设备上,就会获得那个设备的hostname。如果snmp_community,那么就会自动引用我们在添加设备时,指定的那个community。
比如,我在定义device时,填入的信息如下
![](http://s3.51cto.com/wyfs02/M01/47/E0/wKioL1QB7zfxIrPbAAMfgwfxB4c401.jpg)
那么,此时的Special Type Code: hostname==127.0.0.1, snmp_community==public
添加Output Fields
![](http://s3.51cto.com/wyfs02/M01/47/DE/wKiom1QB7_qBIF69AAElXDOw4O4625.jpg)
注意,当我们接收到一个数据之后,就需要更新RRD文件,所以"Update RRD File"这里必须勾选。
3、定义数据模板
上一步中,我们定义了数据收集方法,那么收集到的数据如何保存呢?保存在什么地方?如何创建rrd文件?这些都是数据模板完成的,所以接下来我们要定义数据模板。
![](http://s3.51cto.com/wyfs02/M02/47/DE/wKiom1QB8SOhnL6QAAJ8IFRhG3w135.jpg)
然后,下面的定义,我们可以参考其他的数据模板进行填写,如果不知道该怎么填,不妨先看看其他的数据模板是如何定义的。
我们看到Name这里比较特殊 "|host_description|", 这样能自动获取device的Description。 以及"Internal Data Source Name",数据源的名称,注意其命名规则,a_zA_Z0-9_,并且不超过19个字符。
![](http://s3.51cto.com/wyfs02/M00/47/DE/wKiom1QB84aRigOyAALmJWMMXCk685.jpg)
4、当我们把数据模板应用到某个device上时,就创建数据源(Data Sources)
注意,数据源一定是关联到某个device上的。我们必须指定Host,然后再Add
![](http://s3.51cto.com/wyfs02/M00/47/E0/wKioL1QB9bPj6eKEAAC3EzLljxM886.jpg)
然后选择对应的数据模板(刚才我们添加的)和需要关联的主机。
![](http://s3.51cto.com/wyfs02/M02/47/DE/wKiom1QB9RSir8YMAADPoIlSKi8202.jpg)
此步骤完成后,就会创建相应的rrd文件了。
![](http://s3.51cto.com/wyfs02/M01/47/E0/wKioL1QCeIvD_OiOAAFZ4GZFYYA553.jpg)
当然,这里的"Data Source Path"可以根据自己需要命名。然后稍等片刻,就会在/web/cacti/rra目录下创建rrd文件。
5、添加图形模板
图形模板,也可以参考其他的模板进行填写
![](http://s3.51cto.com/wyfs02/M01/47/DE/wKiom1QB9djC_u97AAGkDzAx3rM304.jpg)
填写一些关于图形的基本信息(name, title),其他保持默认或者根据自己需要填写。点击"创建"之后,我们还需要更详细的设置。
![](http://s3.51cto.com/wyfs02/M02/47/E0/wKioL1QCev7h4eUAAAE-dwuxvq0546.jpg)
"Graph Item"是什么? 图形项,相当于图形上的线条、区域块、注释等等元素。每一个Item表示一个元素。
![](http://s3.51cto.com/wyfs02/M02/47/E0/wKioL1QCfDHDGi0OAAMKuvLMQQs779.jpg)
然后Add "Graph Item Inputs"
![](http://s3.51cto.com/wyfs02/M01/47/E1/wKioL1QCgaOi2H-HAABHQJdGdFY852.jpg)
6、把图形模板关联到device
console -> Graph Management -> 指定Host -> Add
![](http://s3.51cto.com/wyfs02/M01/47/DE/wKiom1QCfUPCvSwBAANP1bdYGow360.jpg)
好了,终于搞定了。
如果想要显示下面这种效果,该怎么做?
![](http://s3.51cto.com/wyfs02/M02/47/DF/wKiom1QCf8rTl1hkAACMQxN2hls395.jpg)
重新编辑我们的graph templates, 点击我们需要更改的模板名称:
![](http://s3.51cto.com/wyfs02/M01/47/E1/wKioL1QCgcDj41o5AAC6g9FsQYw412.jpg)
在下面的设置中,"Graph Item Type"选择 GPRINT。
![](http://s3.51cto.com/wyfs02/M00/47/DF/wKiom1QCgTCjnfNvAAJCncjSyao550.jpg)
相关文章推荐
- 数据结构实践——二叉树算法验证(二叉树构造算法的验证)
- tomcat源码分析
- 建餐饮O2O战略新招
- Xcode不显示工程文件,配置文件
- ORACLE 字符转义的问题
- Python新手容易遇到的问题
- jquery
- 第十二周项目1-图基本算法库
- 欢迎使用CSDN-markdown编辑器
- listview上拉加载,和显示地图mark
- 小马哥----高仿三星note3 n9002 9006主板型号A202 刷机后修复返回键失灵实例说明
- 时间复杂度和空间复杂度3 – 数据结构和算法05
- ionic 上拉加载问题(分页)
- Redis【笔记】Redis need tcl 8.5 or newer
- 第十二周 项目1 图基本算法库
- 第11周 项目1-验证算法(1)层次遍历算法的验证
- Swift学习,常量与变量(二)
- 【第9周 项目2 - 对称矩阵压缩存储的实现与应用(1)】
- MQ、JMS以及ActiveMQ 关系的理解
- 图的遍历1