Cacti 模板(图形模板、数据模板、主机模板)与自定义监控脚本

Cacti定义了三种类型的模板,分别是

  • 主机模板
  • 数据模板
  • 图形模板

    主机模板(Host templates),它是图像模板和数据查询的一个集合,描述了监控某一类型的机器需要生成那些图像。

数据模板(Data templates),它描述了 Cacti 存储哪些数据到指定类型的 RRD 文件。该模板与 RRDTool 工具的 create 命令相关。

图形模板(Graph templates),描述了生成的一张图像应该是什么样子的。包括使用哪些数据模板、展示哪些元素、是否使用 CDEF 进行计算汇总。

同时也定义数据收集方法:

数据输入方法(Data input methods),数据模板基于数据输入方法,数据输入方法描述了 Cacti 获取监控数据的各种方法。其中最常用的就是 SNMP,但这里我们要用到一些自定义的模板。

数据查询(Data queries),它是一种特殊的获取监控数据的方式,它所获取的监控数据一般是某一方面的一系列数据,比如网络接口信息。一般包括一个 XML 文件,其中定义了要获取的数据,以及获取方法(一般是一个命令或脚本)。

在实际的工作工程中,我们可能需要监控更多的指标。此时该怎么办呢?其实cacti官方提供了许多模板,而且很多志愿者也提供了大量的模板,我们可以直接下载,解压缩,然后导入模板,直接使用。

cacti官方网站 -> forums -> Scripts and Templates, 这里的模板应有尽有,基本能够满足我们的监控需求。

下面我们就来看一看如何使用模板?



添加主机模板(Linux / Windows 类似)

首先,基本上我们使用的所有模板都可以到官方的站点上下载到:

http://forums.cacti.net/viewforum.php?f=12&sid=fe2532345bf037678cb1e9fb07b40f16

http://docs.cacti.net/templates

当我们下载某个模板的时候,请一定要仔细的阅读其 Installation(相当重要),可以避免很多不必要的错误。举个例子,比如我要下载cacti087e_linux_generic-20100519-yrg.zip, 然后,其作者给出了详细的安装说明:

Installation

  1. Unzip the download
  2. Via cacti web console, click on “Import Templates” and import the file “cacti_host_template_*.xml”
  3. Create new device using the new imported host template
  4. Check new graphs

OK, 我们演示一下,如果添加并使用模板。

1、添加模板

Import Templates -> 浏览 -> Import, 然后就OK了。

2、使用模板

添加设备:Devices -> Add , 然后主要编辑两个地方

  1. General Host Options
  2. SNMP Options

为主机创建图形

然后勾选,需要创建哪些图形:

然后,再把此设备添加到Graph Trees, 方便管理

Graph Trees -> 选择一个Tree Name -> Add -> Tree Item Type(Host) -> Create

就这么简单,那么等一会儿就会出图了。

添加图形模板

导入方式和主机模板的导入方式相同。导入后,可以在console -> templates -> Graph Templates中查看。

我们以添加cacti_graph_template_linux_server_-_processes.xml.gz 为例,演示一下,如何添加并使用图形模板。下载,并查看其Installation.

Installation

  • unzip the file
$ gzip -d cacti_graph_template_linux_server_-_processes.xml.gz
  • use Console-> Import/Export -> Import Templates to import the XML file

这里,导入的过程就不截图演示了, 和上面导入主机模板的步骤一样。

如何把添加的图形模板,应用到特定的主机上呢?

Graph Management -> Host标签选择一个主机 -> Add -> Selected Graph Template -> Create

如何把主机上添加的图形模板删除呢?

Graph Management -> 选择主机 -> 选择 -> 然后 choose an action: Delete

在下一步,我们选择第一个选项,保留数据源,只删除图形模板。



cacti之自定义监控脚本

如果在cacti官方论坛上,找不到合适的模板,这该如何是好? 此时可能就需要我们自定义了。

在前面的文章中,已经提到。cacti数据收集方法主要有两类:

  • Data Queries         主要是定义好的xml文件
  • Data Input Methods   主要是 scripts, command (最常用)

cacti自定义监控脚本进行监控的具体流程如下:

  1. 自定义数据收集方法,脚本(xml, scripts, command)
  2. 数据收集了如何保存呢?数据模板。数据模板定义了:怎么通过数据收集方法获取数据,获取的数据如何保存,以及保存在什么地方。(也就是调用rrdtool create , rrdtool update)
  3. 把数据模板应用到特定的device上,就会创建数据源。
  4. 有了数据源,那么就可以绘图了。图形模板或者自定义,应用到相应的数据源上。(rrdtool graph)

以下是cacti官方文档:

http://docs.cacti.net/manual:087:3a_advanced_topics.1_data_input_methods

任何可以通过脚本来获取数据的设备都可以使用cacti来监控。

下面就来演示一下,进行自定义监控的整个流程。

1、创建数据收集脚本

[[email protected] ~]# 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上添加数据收集方法

接下来,填入相应的信息。

怎么执行我们的脚本呢? /bin/bash。 脚本的具体路径呢?可以引用<path_cacti>。我们的脚本需要传递参数,该如何传递呢?

  • <path_cacti>是一个宏,引用cacti的安装目录
  • 如果脚本需要接受参数,请用<>括起来

然后点击"Create",下面的Input Fields, Output Fields,分别对应参数输入以及脚本的输出。

有几个Input Fields就需要Add几次,同样有多少个Output Fields也需要Add多少次。

添加Input Fields

我们看到,cacti已经定义了许多Speial Type Code。它们类似于宏,我们能够继承它并能够取得相应device相关的信息。我们知道图形和数据收集方法都必须关联到特定的device上,在定义device时,就会指定其hostname等相关信息。如果我们没有提供输入的参数,就让它自动去继承device的那些宏。如果使用hostname,那么此脚本应用到哪个设备上,就会获得那个设备的hostname。如果snmp_community,那么就会自动引用我们在添加设备时,指定的那个community。

比如,我在定义device时,填入的信息如下

那么,此时的Special Type Code: hostname==127.0.0.1, snmp_community==public

添加Output Fields

注意,当我们接收到一个数据之后,就需要更新RRD文件,所以"Update RRD File"这里必须勾选。

3、定义数据模板

上一步中,我们定义了数据收集方法,那么收集到的数据如何保存呢?保存在什么地方?如何创建rrd文件? 这些都是数据模板完成的,所以接下来我们要定义数据模板。

然后,下面的定义,我们可以参考其他的数据模板进行填写,如果不知道该怎么填,不妨先看看其他的数据模板是如何定义的。

我们看到Name这里比较特殊 "|host_description|", 这样能自动获取device的Description。 以及"Internal Data Source Name",数据源的名称,注意其命名规则,a_zA_Z0-9_,并且不超过19个字符。

4、当我们把数据模板应用到某个device上时,就创建数据源(Data Sources)

注意,数据源一定是关联到某个device上的。我们必须指定Host,然后再Add

然后选择对应的数据模板(刚才我们添加的)和需要关联的主机。

此步骤完成后,就会创建相应的rrd文件了。

当然,这里的"Data Source Path"可以根据自己需要命名。然后稍等片刻,就会在/web/cacti/rra目录下创建rrd文件。

5、添加图形模板

图形模板,也可以参考其他的模板进行填写

填写一些关于图形的基本信息(name, title),其他保持默认或者根据自己需要填写。点击"创建"之后,我们还需要更详细的设置。

"Graph Item"是什么? 图形项,相当于图形上的线条、区域块、注释等等元素。每一个Item表示一个元素。

然后Add "Graph Item Inputs"

6、把图形模板关联到device

console -> Graph Management -> 指定Host -> Add

好了,终于搞定了。

如果想要显示下面这种效果,该怎么做?

重新编辑我们的graph templates, 点击我们需要更改的模板名称:

在下面的设置中,"Graph Item Type"选择 GPRINT。

OK,就先说到这里,更多更高级的功能,还希望大家去挖掘。

我们在操作的过程中,其实思路是比较清晰的,但是面对众多的选项,却不知道如何是好,如果你了解rrdtool,这些都不是事儿,如果不了解,可能看起来就相当痛苦,因为你不知道具体在做什么?万丈高楼平地起,所以我还是建议各位去看看rrdtool是如何工作的。

时间: 2024-10-03 20:20:37

Cacti 模板(图形模板、数据模板、主机模板)与自定义监控脚本的相关文章

各种JS模板引擎对比数据(高性能JavaScript模板引擎)

最近做了JS模板引擎测试,拿各个JS模板引擎在不同浏览器上去运行同一程序,下面是模板引擎测试数据:通过测试artTemplate.juicer与doT引擎模板整体性能要有绝对优势: js模板引擎 JavaScript 模板引擎作为数据与界面分离工作中最重要一环,越来越受开发者关注,从而出现在各大型网站 Twitter.淘宝网.新浪浪微博.腾讯QQ空间.腾讯微博等.那么他们各自性能怎么样?请看下面. 通常模板引擎 baiduTemplate(百度)\artTemplate(腾讯)\juicer(淘

Cacti主机模板之定制版

安装了cactiEZ,对主机进行监控,发现自带的模板与自己想要监控的有所差别,有的监控项目没有,反而还多了很多无用项.于是自己定制了一套,啥也不说了,上图,附件为模板. 1.CPU使用率 2.负载平均值 3.运行时间 4.TCP记数器 5.TCP连接数 6.内存使用率 7.eth流量(可监控多个网卡) 8.磁盘IO 9.可用磁盘空间-/ 10.swap剩余空间 11.已登陆用户 以上是我在用的cacti监控项目,没用加mysql的,mysql主机有单独的监控,后面会奉上.

GridView等表格模板列绑定数据的方法

//绑定GridView每一行中的CheckBoxList protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { CheckBoxList cbl = (CheckBoxList)e.Row.FindControl("ckbCheckBox"); if (cbl != null) {

分类数据到文章模板

public function flcx(){ header("Content-type:text/html;charset=utf-8");//utf8编码 $id = $_GET['id'];//接收id $Dao = M();//用原生sql查询 $sql = "SELECT xp_wztj.bt,xp_wztj.time,xp_wztj.gjz,xp_wztj.wz,xp_wzfl.name FROM xp_wztj, xp_wzfl WHERE xp_wztj.ui

C++学习笔记之由文本文件读取数据到vector模板建立的二维数组 并存储为新的文本文件

阅读本文可首先参考: C++学习笔记之输入.输出和文件 测试数据: 1 /*读取txt文件到二维数组*/ 2 #include <iostream> 3 #include <fstream> 4 #include <vector> 5 #include <string> 6 7 using namespace std; 8 9 typedef vector< vector<int> > D2array; //二维数组 10 typed

C#导出数据至excel模板

开源分享最近一个客户要做一个将数据直接输出到指定格式的Excel模板中,略施小计,搞定 其中包含了对Excel的增行和删行,打印预览,表头,表体,表尾的控制 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; using System.Reflection; using System

移动端基于HTML模板和JSON数据的JavaScript交互

写本文之前,我正在做一个基于Tab页的订单中心: 每点击一个TAB标签,会请求对应状态的订单列表.之前的项目,我会在js里使用 +  连接符连接多个html内容: var html = ''; html += '<div class="empty-list">' + '<div class="icon icon-box"></div>'+ '<div>还没有订单</div>'+ '</div>'

java之数据填充PDF模板

声明:由于业务场景需要,所以根据一个网友的完成的. 1.既然要使用PDF模板填充,那么就需要制作PDF模板,可以使用Adobe Acrobat DC,下载地址:https://carrot.ctfile.com/dir/11269771-27158812-194d66/29433907/ (使用特别破解版),安装步骤就省略了. 2.开始制作模板 a)使用wps制作一个表格,并转为PDF文件保存 b)使用Adobe Acrobat DC打开保存的PDF文件,然后搜索 "准备表单" ,点击

zabbix服务器添加监控主机,使用监控模板及自定义监控项

上一篇博文记录了<Ubuntu系统LNMP环境下安装配置zabbix3.04>,这里我记录了添加监控主机,添加监控模板和自定义监控CPU 添加监控主机 1.监控主机安装zabbix-agent $ sudo apt-get install zabbix-agent 2.修改zabbix_agent.conf配置文件 $ sudo vi /etc/zabbix/zabbix_agentd.conf - Server=120.40.*.* #zabbix-server端IP - ServerAct