鸿 网 互 联 www.68idc.cn

使用cacti自定义graph template进行监控

来源:互联网 作者:佚名 时间:2012-09-21 18:38
最近为了监控线上服务搭建了cacti,它的标准服务已经能够满足我们的大多数需求,但是还是有一些特定的需求需要对cacti进行扩展, 于是就研究了一下如何进行扩展,这里我主要是通过script进行扩展的,因为对这个东西比较熟悉。 总体来说,自定义graph templat

最近为了监控线上服务搭建了cacti,它的标准服务已经能够满足我们的大多数需求,但是还是有一些特定的需求需要对cacti进行扩展,

于是就研究了一下如何进行扩展,这里我主要是通过script进行扩展的,因为对这个东西比较熟悉。




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

新建Data Input Method

新建Data Template

新建Graph Template

应用Graph Template




1. 新建Data Input Method
Console->Collection Methods->Data Input Method->Add

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





会弹出如下页面




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

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

点击Create之后出现如下页面





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

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

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




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

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

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

Allow Empty Input 就是字面的意思

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

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




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




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

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




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




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




2. 创建Data Template
点击Console->Templates->Data Templates,出现如下图




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




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如下图所示




出现如下界面







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

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

Title 图的标题

Vertical Label 就是图左侧的说明

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




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

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




这里第一个是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创建你要应用到的机器







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




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




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

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

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




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




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

 

网友评论
<