对于Cacti是通过snmpget来获取数据,使用 RRDtool绘画图形,用snmp服务获取数据,然后用rrdtool储存和更新数据,那么就可以简单理解为Cacti就是RRDTool的一个web图形界面管理工具,不用记住RRDTool那繁杂的参数选项,在Cacti界面直接填入或者选择值,即可用snmp服务获取数据,然后用rrdtool储存和更新数据。

0x01  前言

安装好cacti,登陆进入首先可以看到提示,说明了如何开始监控。

You are now logged into Cacti. You can follow these basic steps to get started.

  • Create devices for network
  • Create graphs for your new devices
  • View your new graphs

比较难明白的是Cacti里面所谓的图形模板,数据模板,主机模板这些,但是既然Cacti是rrdtool的友好使用界面那肯定是脱离不了rrdtool的,所以需要用rrdtool如何生成图像的思维来理解如何使用Cacti

监控设备一般步骤:

1、在“Data Input Methods”把写好的脚本路径添加进去

2、在“Data Templates”定义如何生成rrd文件(定义DS和RRA,相当于rrdtool create),这里只是模板,并不生成实际rrd文件

3、在“Graph Templates”定义如何生成图片(相当于rrdtool graph),当然作为模板也不真实生成图片。

4、新增监控目标,模板有了肯定需要套用到具体设备上,在“Devices”增加设备基本信息如:IP、存活检测方式等

5、新增“Data Sources”结合数据模板生成实际的rrd文件,这里实际上也是rrdtool create的实现

6、最后就是绘图了“Graph Management”中新增内容,实际上也是rrdtool graph的实现

7、有了多个图像之后为了方便查看,在“Graph Trees”新增分支

其中在Cacti主界面左侧中每一个选项所关联涉及的内容大概如下:

按照上面在Cacti设置监控的步骤,对照rrdtool生成图像的过程应该好理解。

0x02  添加监控

对照上面描述的步骤添加,随便写了个生成随机数的脚本

#/bin/bash
j=`echo $RANDOM`
echo -n "myvalue:$j"

1、添加Data Input Methods

2、添加Data Templates

3、添加Graph Templates

在这里定义图形元素,比如画多少线条,颜色粗细等

4、按照以上步骤添加好模板之后就是设置关联了,添加设备,把图形模板和数据模板关联上去,最后在Graph Management中生成最终的图像,关于添加被监控主机的过程网上有很多资料,这里就不再写重复的东西了,要了解RRDTools是如何采集数,据保存数据和生成图像的,理解cacti就容易了

0x03  故障处理

有了rrdtool的知识后,对cacti不出图无数据的故障排查更加方便了,直接查看rra目录下面对应的rra文件,看其中是否含有数据,按照上面的方法添加了主机之后,无论是默认安装后的四个图还是新增的图都出现空白图的情况。

使用rrdtool fetch查看rra发现其中没有任何数据,显示皆为-nan-,艰辛的解决过程如下:

1、时间不一致

出现问题看日志是基本的处理流程,这里我不够细心,导致折腾很久才发现问题,如图,这个是早上截取的图,可是日志里显示的为PM,和当前时间相差了十二个小时,这也是日志十二小时制的显示一眼看上去和当前时间一样,而绘图的时间却是当前时间,这显示空白图也是合理的。date查看当前系统时间显示是DST时间

cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime          //将时间改成CST时间后,日志的记录时间和当前系统时间一致了

2、rrd插入数据的时间戳

调整时间后还是显示空白图,查看rra还是没有数据,于是打算测试下,通过rrdtool update自行插入数据。

[root@localhost22 cacti]# rrdtool update rra/myhost_mydsname_8 N:`echo $RANDOM`
ERROR: rra/localhost_mydsname_8.rrd: illegal attempt to update using time 1459320311 when last update time is 1459363502 (minimum one second step)

上面两个时间戳的时间分别是

[root@localhost cacti]# date -d @1459320311
Wed Mar 30 14:45:11 CST 2016
[root@localhost cacti]# date -d @1459363502
Thu Mar 31 02:45:02 CST 2016

发现问题了,修改时间之后时间提前了十二个小时,rrd文件update的时间必须比最后一次更新的时间晚,所以按照这个理论,cacti无法更新rrd,自然也是空白图了。那要等到过了最后一次更新的时间戳才能插入数据。

3、硬件时钟

上面明明发现rra最后次更新时间是Thu Mar 31 02:45:02 CST 2016,可是后面无意中查看rra文件的最后更新,发现居然推后了,这样系统时间岂不是一直到达不了这个时间戳。

[root@localhost22 cacti]# rrdtool last rra/myhost_mydsname_8.rrd
1459371001
[root@localhost22 cacti]# date -d @1459371001
Thu Mar 31 04:50:01 CST 2016                     
此时便好奇cacti对rrd更新数据的时间戳是根据什么为标准了,查看本机时间,发现问题了,硬件时钟和系统时钟不一致,根据两个不同时间可以判断出cacti根据hwclock显示的时间来运行。同步本机的两个时间,这时候过了rra最后一次更新的时间戳应该就可以了。

[root@localhost22 cacti]# date
Wed Mar 30 16:51:50 CST 2016
[root@localhost22 cacti]# hwclock
Thu 31 Mar 2016 04:51:54 AM CST  -0.788025 seconds

4、Internal Data Source Name

第二天早上一看,还是没有图/(ㄒoㄒ)/~~

可是这次就可以手动插入数据了,高兴的是直接更新rrd数据,可以显示图像了,那就可以判断出问题就出现在cacti采集数据或者更新数据的过程。

[xxx@localhost cacti]$ while(true);do rrdtool update rra/myhost_mydsname_8.rrd N:`echo $RANDOM`;sleep 60;done

最后终于找到了问题所在了,因为自行写的脚本,在定义数据模板的时候有个”Internal Data Source Name”这个并不是随便自定义的名称,要根据脚本输出的标识来确定

比如脚本中echo -n "myvalue:$value",就要根据”myvalue”来命名

还需要把原本的rrd文件删除之后,让其自动新建才能生效。(rra目录下删除或者删除数据源)

5、Heartbeat

[root@localhost cacti]# rrdtool fetch rra/myhost_mydsname_8.rrd -s 1459405920 AVERAGE
                        myvalue

1459405980: 2.7779000000e+04
1459406040: 1.8693000000e+04
1459406100: -nan
1459406160: 7.4240000000e+03
1459406220: 3.0414333333e+04
1459406280: -nan
1459406340: 2.0620000000e+04
1459406400: -nan
1459406460: 2.1035000000e+04
1459406520: 2.6959583333e+04
1459406580: -nan
1459406640: 1.5934000000e+04
1459406700: 3.0761683333e+04
1459406760: -nan
1459406820: 2.4725000000e+04
1459406880: -nan
1459406940: 2.7797000000e+04
1459407000: 1.6526033333e+04
1459407060: -nan
1459407120: 2.5301000000e+04
1459407180: 2.9005216667e+04
1459407240: -nan
1459407300: –nan

绘图一段时间过后,发现图像断续,查看rrd文件的内容如上,查看到Data Templates的Heartbeat设置和step相同,延长Heartbeat即可

[root@localhost cacti]# rrdtool fetch rra/myhost_mydsname_9.rrd -s 1459407780 AVERAGE
                        myvalue

1459407840: 3.1443649773e+04
1459407900: 1.3106983333e+04
1459407960: 2.6746500000e+04
1459408020: 1.9850050000e+04
1459408080: 2.0599833333e+04
1459408200: 1.3683100000e+04
1459408260: 1.5904333333e+03
1459408320: -nan

0x04  其他采集脚本

通过以上,基本熟悉了如何写脚本获取数据并生成图片的过程,也就是只要写出一个有数据输出的脚本就可以被cacti采集绘图。只要保证输出格式正确。

比如通过snmp获取,以下代码源于互联网。

#!/bin/bash
#
# $1:hostname or IP
# $2:snmp community
SNMPNETSTAT=/usr/bin/snmpnetstat
TEMPFILE=`mktemp /tmp/$1_tcp_conns.XXXXXX`
$SNMPNETSTAT -v 2c -c $2 -Can -Cp tcp $1 > $TEMPFILE
ESTABLISHED=`grep -i "established" $TEMPFILE | wc -l`
TIMEWAIT=`grep -i "TIMEWAIT" $TEMPFILE | wc -l`
SYNRECEIVED=`grep -i "SYNRECEIVED" $TEMPFILE | wc -l`
echo -n "ESTABLISHED_NUM:$ESTABLISHED TIMEWAIT:$TIMEWAIT SYN_received:$SYNRECEIVED"

Cacti的基本使用的更多相关文章

  1. cacti汇总流量图-将数据合并后作图

    在使用Cacti方便快捷的建立监控图时,往往根据实际应用必须监控几台甚至上百台服务器的汇总流量图来观察该应用服务器组的总流量等指标. 这里我们就来介绍如何用cacit快速的建立汇总流量图,其他汇总图建 ...

  2. cacti 安装

    cacti:是常用的一个监控软件(开源,免费) 特点:重图形,有数据历史,需要用到数据库的支持,支持web配置,默认不支持告警,可以加插件 cacti安装 1.安装扩展源epel (nagios 和z ...

  3. CentOS7 cacti 安装

    首先centos7 web环境的安装这里就不说了.安装cacti,首先得web环境配置好 其次添加两个用户,一个是cacti用于操作mysql的 cactimysql  一个是cacti操作Linux ...

  4. Cacti -- Advance Ping

    一.搭建Cacti 1. 安装epel扩展源:yum install -y epel-release 2. 安装lamp环境:yum install -y httpd php php-mysql my ...

  5. cacti添加主机监控

    登入cacti后 主机-->添加-->填入信息.如下图所示 填好后点击右下角添加 添加完.左上角出现如下信息.说明被监控的服务器snmp工作正常. 然后咱们给这个主机添加图形. 当前主机模 ...

  6. centos6.6 安装cacti监控服务器

    整理一份cacti的安装步骤.留作笔记和以后参考用. 环境: centos 6.6 -x64 cacti-0.8.8b-cn.tar.gz mysql yum安装即可 yum服务使用centos自带的 ...

  7. Ubantu16.04一键部署Cacti监控服务器

    Ubantu16.04一键部署Cacti监控服务器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 欢迎加入高级运维工程师之路:598432640 一.查看系统环境(关于该系统的安装 ...

  8. CentOS安装cacti

    1.安装软件包 yum install -y httpd php php-mysql \ php-snmp mysql mysql-server \ perl-DBD-MySQL php-pdo ne ...

  9. cacti web页面访问 settings出错

    查看apache错误日志: 错误信息Mon Dec 26 11:00:48.241653 2016] [:error] [pid 32607] [client 192.168.10.79:65009] ...

  10. cacti结合nagios

    使用系统ubuntu12.0.45 监控软件,cacti 使用的是源码安装系统自带的版本过低需要添加插件 nagios采用的系统自带版本 安装nagios apt-get install nagios ...

随机推荐

  1. 【转】maven核心,pom.xml详解

    感谢如下博主: http://www.cnblogs.com/qq78292959/p/3711501.html maven核心,pom.xml详解 什么是pom?    pom作为项目对象模型.通过 ...

  2. Junit4常用注解

    Junit4注解 JUnit4的测试类不用再继承TestCase类了.使用注解会方便很多. @Before:初始化方法@After:释放资源@Test:测试方法,在这里可以测试期望异常和超时时间@Ig ...

  3. Android接收系统广播

    Android内置了很多系统级别的广播,我们可以在应用程序中通过监听这些广播来得到各种系统的状态信息.比如手机开机完成后会发出一条广播,电池的电量发生变化会发出一条广播,时间或时区发生改变也会发出一条 ...

  4. Discuz 模板目录

    -------------------------------------------------------------------------------------------------- t ...

  5. Codeforces 721D [贪心]

    /* 不要低头,不要放弃,不要气馁,不要慌张. 题意: 给一列数a,可以进行k次操作,每次操作可以选取任意一个数加x或者减x,x是固定的数.求如何才能使得这个数列所有数乘积最小. 思路: 贪心...讨 ...

  6. AS3下如何来判断XML属性的是否存在

    在as3中判断xml节点是否存在可用XMLList中的方法:hasOwnProperty(p:String):Boolean. 但是判断xml节点是否存在某一属性,对象中好像没有该方法,只能用unde ...

  7. 41. Unique Binary Search Trees && Unique Binary Search Trees II

    Unique Binary Search Trees Given n, how many structurally unique BST's (binary search trees) that st ...

  8. ztree

    http://www.s u c h s o.com/projecteactual/ztree-jiaocheng-mvc-checkbox-quanxuan-demo-down.html http: ...

  9. POS管理系统之供应商查询

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  10. hive查询

    查询语句可以直接使用非分析函数的变量的别名 select t1.* from ( select account_id, sum(recharge_money) recharge_money_total ...