总体来说,自定义graph template需要如下几个大的步骤

新建Data Input Method

新建Data Template

新建Graph Template

应用Graph Template


1. 新建Data Input Method

Console->Collection Methods->Data Input Method->Add

如下图所示,注意右上角的Add


Cacti的配置步骤!_如何

会弹出如下页面

Cacti的配置步骤!_Create_02

这里Name是这个数据源的名称,Input Type选择Script/Command, Input String里填写一个shell命令

比如echo $RANDOM或者sh /tmp/test.sh

点击Create之后出现如下页面

Cacti的配置步骤!_Create_03

接下来Input Fields和Out Fields是对这个命令的一些输入和输出的定义。

对于Input Fields来说,必须在最上面的Input String里有参数名定义,比如sh test.sh <host> <path>就是定义了两个Input Fields,一个是host,一个是path

接下来我们就来说说如何创建这两个参数,点击Input Fields边上的Add,弹出如下页面


Cacti的配置步骤!_如何_04

注意这里的Field是下拉框进行选择的,因为我们上面只定义了path和host两个,因此这里只有这两个可选

Friendly Name是一个对这个输入的说明,可以随便填

Regular Expression Match是对输入的一个检查,一般可以不填,因为我们能够人肉保证不出错

Allow Empty Input 就是字面的意思

Special Type Code 这里需要注意一下,cacti自定义了注释里列出来的一些变量,对我们比较有用的是hostname,后面我们会看到一个template必须被应用到

某个Device,也就是服务器,因此这个hostname就是被监控的机器的ip;如果我们这个参数需要在应用到模板里再指定,那这里就可以为空,直接点create


同样的,对于Output Fields也有一个Add链接,点击后出如下页面:

Cacti的配置步骤!_如何_05

这里Field就是输出变量的名字,如果输出只有一个的话,这里填什么无所谓,但是如果输出有多个的话,那这里就有讲究了,比如输出变量有两个分别叫abc和def

那你的脚本的输出格式一定得是"abc:数量 def数量",这是一个约定。而且你这里的名字必须是abc和def


同样的,点击Create之后,就把这两个也创建了,我们就会回到Data Input Method的页面,点击Save即可。


到这里我们已经创建了一个Data Input Method,也即数据源。接下来需要创建一个Data Template


2. 创建Data Template

点击Console->Templates->Data Templates,出现如下图

Cacti的配置步骤!_新建_06

与Data Input Method一样,点击右上角的Add按钮,出现创建Data Template的界面如下

Cacti的配置步骤!_数据源_07

Name 即这个模板的名字

Data Source里的Name是指这个数据源的名字,这里一般会采用“|host_description| - 名称”的格式,在应用模板时,host_description会被替换为监控机器的名字

Data Input Method这里选我们刚才创建的Data Input Method即可

Data Source Item是输出域的定义,Internal Data Source Name是一个输出名称,最好与Data Input Method的输出保持一致。

如果有多个的话,保存了以后,右上角会出一个New的链接,点击可以继续创建

并且,如果有多个输入的话,下面会出现Custom Data 区域,这里是指输入参数区域,你可以在这里给输入的参数给一个值,也可以让它在应用模板时输入

至此,Data Input Method和Data Template联系起来了。


3. 创建Graph Template

点击Console->Templates->Graph Template->Add如下图所示

Cacti的配置步骤!_数据源_08

出现如下界面

Cacti的配置步骤!_数据源_09


这里参数众多,但是一般我们需要填的只有如下几个

Template Name 这个是模板名,当我们将模板应用于某个机器时使用这个

Title 图的标题

Vertical Label 就是图左侧的说明

点击Create之后,本页面上部会多出来一部分如下图所示

Cacti的配置步骤!_新建_10

这里用于指定如何将Data Input Method的输出进行显示的,也即将Data Template与Graph Template进行绑定

点击Graph Template Items右侧的Add,出现如下界面

Cacti的配置步骤!_新建_11

这里第一个是Data Source选择我们之前创建的Data Template,因为可能有多个输出,因此它也可能有多个,我们一一创建即可,注意这里Color是用于显示的颜色,Graph Item Type是显示的类型,比如Area就是显示成块即可,Text Format就是给这个输出一个名字

创建后,如果你还想为这个输出创建一个Legend,那就是再Add选择Graph Item Type->Legend即可。

注意上面的Graph Item Inputs是自动创建的,一般不用处理。

到此,Graph Templates已经完成,接下来就是应用了。


4、应用Graph Templates

选择Console->Management->Devices创建你要应用到的机器

Cacti的配置步骤!_数据源_12


这里Add Graph Template选择我们刚才创建的Template即可。


接下来创建New Graph,在那里激活即可。


其实Data Input Method相当于你写了一段程序,定义了输入输出是啥

Data Template相当于让这段程序运行起来,给了它输入

Graph Template是把这段程序的输出用图形表现出来


当然这三步都是模板,模板的意思就是一些共性的东西,只有实例化才会有真正的输出,因此还需要将模板应用到机器


需要额外注意的是,你的脚本里涉及到的命令最好使用全路径,因为shell是程序去执行的,有些环境变量可能没有