设为首页 收藏本站
查看: 2098|回复: 0

[经验分享] Cacti 模板(图形模板、数据模板、主机模板)与自定义监控脚本

[复制链接]

尚未签到

发表于 2015-9-8 08:04:33 | 显示全部楼层 |阅读模式
2014-08-31 09:41:58

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://skypegnu1.blog.iyunv.com/8991766/1547029

  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, 这里的模板应有尽有,基本能够满足我们的监控需求。
DSC0000.jpg
  下面我们就来看一看如何使用模板?

  添加主机模板(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


  •   Unzip the download

  •   Via cacti web console, click on “Import Templates” and import the file “cacti_host_template_*.xml”

  •   Create new device using the new imported host template

  •   Check new graphs

  OK, 我们演示一下,如果添加并使用模板。
  1、添加模板
  Import Templates -> 浏览 -> Import, 然后就OK了。
DSC0001.jpg
  2、使用模板
  添加设备:Devices -> Add , 然后主要编辑两个地方


  •   General Host Options

  •   SNMP Options

DSC0002.jpg
  为主机创建图形
DSC0003.jpg
  然后勾选,需要创建哪些图形:
DSC0004.jpg
  然后,再把此设备添加到Graph Trees, 方便管理
  Graph Trees -> 选择一个Tree Name -> Add -> Tree Item Type(Host) -> Create
DSC0005.jpg
  就这么简单,那么等一会儿就会出图了。
  
  添加图形模板
  导入方式和主机模板的导入方式相同。导入后,可以在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
DSC0006.jpg
  如何把主机上添加的图形模板删除呢?
  Graph Management -> 选择主机 -> 选择 -> 然后 choose an action: Delete
DSC0007.jpg
  在下一步,我们选择第一个选项,保留数据源,只删除图形模板。
DSC0008.jpg
  

  cacti之自定义监控脚本
  如果在cacti官方论坛上,找不到合适的模板,这该如何是好? 此时可能就需要我们自定义了。   
  在前面的文章中,已经提到。cacti数据收集方法主要有两类:


  •   Data Queries         主要是定义好的xml文件

  •   Data Input Methods   主要是 scripts, command (最常用)

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


  •   自定义数据收集方法,脚本(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、创建数据收集脚本







1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21




[iyunv@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:







1




<fieldname_1>:<value_1>  <fieldname_2>:<value_2>  ...  <fieldname_n>:<value_n>
  2、cacti上添加数据收集方法
DSC0009.jpg
  接下来,填入相应的信息。
DSC00010.jpg
  怎么执行我们的脚本呢? /bin/bash。 脚本的具体路径呢?可以引用<path_cacti>。我们的脚本需要传递参数,该如何传递呢?


  •   <path_cacti>是一个宏,引用cacti的安装目录

  •   如果脚本需要接受参数,请用<>括起来

  然后点击"Create",下面的Input Fields, Output Fields,分别对应参数输入以及脚本的输出。
DSC00011.jpg
  有几个Input Fields就需要Add几次,同样有多少个Output Fields也需要Add多少次。
  添加Input Fields
DSC00012.jpg
  我们看到,cacti已经定义了许多Speial Type Code。它们类似于宏,我们能够继承它并能够取得相应device相关的信息。我们知道图形和数据收集方法都必须关联到特定的device上,在定义device时,就会指定其hostname等相关信息。如果我们没有提供输入的参数,就让它自动去继承device的那些宏。如果使用hostname,那么此脚本应用到哪个设备上,就会获得那个设备的hostname。如果snmp_community,那么就会自动引用我们在添加设备时,指定的那个community。
  比如,我在定义device时,填入的信息如下
DSC00013.jpg
  那么,此时的Special Type Code: hostname==127.0.0.1, snmp_community==public
  添加Output Fields
DSC00014.jpg
  注意,当我们接收到一个数据之后,就需要更新RRD文件,所以"Update RRD File"这里必须勾选。
  3、定义数据模板
  上一步中,我们定义了数据收集方法,那么收集到的数据如何保存呢?保存在什么地方?如何创建rrd文件? 这些都是数据模板完成的,所以接下来我们要定义数据模板。
DSC00015.jpg
  然后,下面的定义,我们可以参考其他的数据模板进行填写,如果不知道该怎么填,不妨先看看其他的数据模板是如何定义的。
  我们看到Name这里比较特殊 "|host_description|", 这样能自动获取device的Description。 以及"Internal Data Source Name",数据源的名称,注意其命名规则,a_zA_Z0-9_,并且不超过19个字符。
DSC00016.jpg
  4、当我们把数据模板应用到某个device上时,就创建数据源(Data Sources)
  注意,数据源一定是关联到某个device上的。我们必须指定Host,然后再Add
DSC00017.jpg
  然后选择对应的数据模板(刚才我们添加的)和需要关联的主机。
DSC00018.jpg
  此步骤完成后,就会创建相应的rrd文件了。
DSC00019.jpg
  当然,这里的"Data Source Path"可以根据自己需要命名。然后稍等片刻,就会在/web/cacti/rra目录下创建rrd文件。
  5、添加图形模板
  图形模板,也可以参考其他的模板进行填写
DSC00020.jpg
  填写一些关于图形的基本信息(name, title),其他保持默认或者根据自己需要填写。点击"创建"之后,我们还需要更详细的设置。
DSC00021.jpg
  "Graph Item"是什么? 图形项,相当于图形上的线条、区域块、注释等等元素。每一个Item表示一个元素。
DSC00022.jpg
  然后Add "Graph Item Inputs"
DSC00023.jpg
  6、把图形模板关联到device
  console -> Graph Management -> 指定Host -> Add
DSC00024.jpg
  好了,终于搞定了。
  如果想要显示下面这种效果,该怎么做?
DSC00025.jpg
  重新编辑我们的graph templates, 点击我们需要更改的模板名称:
DSC00026.jpg
  在下面的设置中,"Graph Item Type"选择 GPRINT。
DSC00027.jpg
  OK,就先说到这里,更多更高级的功能,还希望大家去挖掘。
  
  我们在操作的过程中,其实思路是比较清晰的,但是面对众多的选项,却不知道如何是好,如果你了解rrdtool,这些都不是事儿,如果不了解,可能看起来就相当痛苦,因为你不知道具体在做什么?万丈高楼平地起,所以我还是建议各位去看看rrdtool是如何工作的。
  
  本文出自 “Share your knowledge” 博客,请务必保留此出处http://skypegnu1.blog.iyunv.com/8991766/1547029

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-110754-1-1.html 上篇帖子: cacti 与 nagios 一些总结 【八】 下篇帖子: 安装、配置文件-配置 CACTI 监控 MySQL 数据库状态-by小雨
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表