cacti不能显示图像数据故障处理办法

一、snmp和网络是否正常

通过在cacti服务器上运行snmpwalk   -c    public    -v  2c    ip,能够正常返回数据,排除snmp和网络的问题。

注意:-c    后跟共同体名   public为community名,此处可变,需根据自己环境设置进行更改!

-v    snmp版本

ip    为被监控端的IP

二、查看cacti全局参数设置

经查看cacti全局参数设置中的路径,采集器等均没有问题。

三、检查cacti服务器上rra和log的目录权限

查看rra和log目录属主均是web程序运行用户,有对rra和log目录的读写权限,没有问题。进入rra目录,发现所有图像文件的修改日期均是前几天的,也就是说最近都没有获取到数据,更新到rra文件;进入log目录,发现cacti.log文件达到2G,log不记录东西了,mv cacti.log cacti.log.old,重新生成cacti.log,故障依旧。

四、检查cacti.log

snmp能够获取到数据,rra和log权限也均没有问题,为什么还不能获取到数据呢?

开启cacti全局设置中的详细日志,tail -f cacti.log查看日志,发现有很多类似日志:

WARNING: Result from CMD not valid.  Partial Result:

这是cacti采集器没有获取到相关主机的返回数据。同时发现有如下日志:

Maximum runtime of 292 seconds exceeded. Exiting.

是说在一个循环周期内(5min),cacti没有获取完所有的数据,自动退出,执行下一循环,

应该是有太多主机了,同时有很多主机无法连接上超时,导致最终采集器时间超过292s自动退出。

决定采用cactid来代替cmd.php采集,同时清理数据库中poller_item中的无效,无法连接上,配置错误的记录(重要,可根据cacti.log中得知哪些主机或记录有问题)。

五、配置cactid

新版的叫spine。安装配置cactid:

tar -zxvf cacti-cactid-0.8.6j.tar.gz

cd cacti-cactid-0.8.6j

./configure (mysql另外安装的需要指安mysql路径)

make

mkdir /usr/local/cactid

cp cactid cactid.conf /usr/local/cactid/

vi /usr/local/cactid/cactid.conf修改为相应的数据库的用户名和密码。

全局配置中设置采集器为cactid,并设置好cactid的路径:/usr/local/cactid/cactid

能够正常获取到数据了,查看cacti.log:

02/12/2011 11:31:03 AM – CACTID: Poller[0] Time: 55.2049 s, Threads: 1, Hosts: 25

02/12/2011 11:32:04 AM – CACTID: Poller[0] Time: 113.7014 s, Threads: 1, Hosts: 25

二分钟即能获取到所有的主机数据了,效率提升不少。故障解决。

六、如以上还不能解决故障,可通过手动运行:php /var/www/html/cacti/poller.php 查看输出来找到问题所在。

=======================================

cacti安装测试过程中不能显示图形:(2011-09-13)

cd /var/www/html/cacti/log

tail -f  cacti.log

显示如下:

09/13/2011 01:10:03 PM - SYSTEM STATS: Time:1.4293 Method:cmd.php Processes:1 Threads:N/A Hosts:3 HostsPerProcess:3 DataSources:17 RRDsProcessed:11

09/13/2011 01:14:01 PM - CMDPHP: Poller[0] Host[1] DS[11] WARNING: Result from CMD not valid.  Partial Result: U

09/13/2011 01:14:01 PM - CMDPHP: Poller[0] Host[1] DS[11] WARNING: Result from CMD not valid.  Partial Result: U

处理过程如下示:

最後的解法是將 cmd.php 做 chmod a+x 就可以了。

後記:那時感覺很奇怪,poller.php已經指定用php去run,後來想想,可能poller.php內又直接呼叫cmd.php,並未只名為php script。

=================================cacti的排错经验=========================

cacti出不了数据,一般从以下几个方面入手解决问题

1。确认你的cacti主机上能否得到目标机器上的snmp数据
cacti得到目标机器上的统计数据分为两种方法,一种是远程通过snmp协议获取、一种是本地机器通过shell脚本获取。

2。确认你的crontab计划任务有在正常运作
cacti是通过crontab的定时作业每隔一段时间获取数据的,如果定时作业没有运作,肯定也是读取不到数据的

3。确认你的crontab定时作业所执行的作业能获取信息
cacti获取信息用的是poller.php定时运作,然后根据你设置的是用php脚本来执行snmp获取还是cactid来获取,所以,你必须确认你的php能支持php的snmp扩展、或者确认你有正确设置cactid。推荐使用cactid,效率比通过php高10~20倍。

4。确认你的rrdtool的版本
rrdtool1.0.x版本和1.2.x版本有着比较大的差别,在cacti里面要正确设置你的rrdtool的版本。比较容易出现的错误就是你的rrdtool是1.2.x版本,而cacti默认的rrdtool版本为1.0.x版本,如果是这样的话,你的数据收集是正常的,不过由于rrdtool的版本变化导致的命令处理格式的一点差别,cacti的缩微图会画不出来的,而具体的图片时可以画出来,这个,大家要留神一下。

5。当然了,要保证cacti收集的数据能被储藏在你的机器上,要保证收集的数据能被httpd服务读取

以上是我个人对cacti的trouble shooting的一些认识,请各位补充指正。

  将cacti安装好按例子进行配置,想到得到第一个hellow world这样的例子时,常常也会遇到不少的问题,最可能的就是无图,或者有图无数据。
  先说无图吧,主要是检查先确定你的IP地址、snmp comunite、snmp version等信息配置没有错误,如果都没有错误,那么你确定才一个采集周期(一般默认采集周期300秒)以后去检查rra目录,看是否有相应的rra文件生成,如果是新安装,本来rra目录只有一个.placeholder文件。你只要关注以rra为文件后缀的文件即可。如果没有那么一是rra文件权限,windows是ntfs和linux等下有这个问题,其它就检查snmp的设置。

解决cacti中无图或无数据的问题

snmpwalk -v 2c -c public yourIP if

 如果有数据返回,则snmp的数据没有问题。如果出现“Timeout: No Response from ...”之类的错误信息则是snmp设置的问题。

  再说有图无数据吧,一般这样的情况就是snmp采集的结果有问题。这种情况下,一般也会出现新建的device的Data Query里面的状态总是“ Success [0 Items, 0 Rows]”。通过执行snmp命令来检查:

snmpwalk -c community -v 2c hostIP if

  通过结果可以看到是否允许cacti取这些OID的数据。
eg:

snmpwalk -c public -v1 192.168.0.221 .1.3.6.1.2.1.2.2.1.16.2

当cacti 有图没有数据时,而且状态为nan错误解决办法

解决办法:

1.
[[email protected] rra]# pwd
/usr/local/apache2/htdocs/cacti/rra
[[email protected] rra]# rrdtool fetch fxd-mdl11_traffic_in_365.rrd AVERAGE
按照以上命令执行如果结果输出为:
1197990600:   nan   nan
1197990900:   nan   nan
1197991200:   nan   nan
1197991500:   nan   nan
1197991800:   nan   nan
1197992100:   nan   nan

则表示snmp获取数据有问题,经过仔细检查发现不能获取流量的主机都是64位系统,
用以下命令检查:
[[email protected] rra]# snmpwalk -c public -v 2c 192.168.1.2 IF-MIB::ifHCInOctets
输出内容如下,表明不支持64位MIB库,终于找到原因了。
IF-MIB::ifHCInOctets = No Such Object available on this agent at this OID

2,需要重新安装snmpd支持64位MIB库,不过正常用源码包安装时在make的时候会出现error,无法继续,
解决方法:
在源码包下config后,先不要make,请先修改以下两个文件。

[[email protected] net-snmp-5.3.1]# vi apps/Makefile
TRAPDWITHAGENT   = $(USETRAPLIBS) -ldl -lrpm -lrpmio -lpopt   -lz -lcrypto -lm
替换成:
TRAPDWITHAGENT   = $(USETRAPLIBS) -ldl -lrpm -lrpmio /usr/lib64/libpopt.so   -lz -lcrypto -lm

[[email protected] net-snmp-5.3.1]# vi agent/Makefile
LIBS          = ../snmplib/libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION) -ldl -lrpm -lrpmio -lpopt   -lz -lcrypto -lm   $(PERLLDOPTS)
替换成:
LIBS          = ../snmplib/libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION) -ldl -lrpm -lrpmio /usr/lib64/libpopt.so   -lz -lcrypto -lm 
然后在进行make && make install

3,停止当前linux自带的snmpd,通过daemoonls启动新安装的snmpd就能了。
   这时在用snmpwalk检测,支持64位MIB库了,过一会流量监视的图片也出来了!
[[email protected] rra]# snmpwalk -c public -v 2c 192.168.1.2 IF-MIB::ifHCInOctets
IF-MIB::ifHCInOctets.1 = Counter64: 2400309170
IF-MIB::ifHCInOctets.2 = Counter64: 256326257624
IF-MIB::ifHCInOctets.3 = Counter64: 0
IF-MIB::ifHCInOctets.4 = Counter64: 624808037429
IF-MIB::ifHCInOctets.5 = Counter64: 0
IF-MIB::ifHCInOctets.6 = Counter64: 0
IF-MIB::ifHCInOctets.7 = Counter64: 0
IF-MIB::ifHCInOctets.8 = Counter64: 0

Cacti监控远程服务器问题解决

使用模板ucd/net - Memory Usage,检测局域网内别的机器发现有图,但是无数据,都是nan,
cacti log有如下错误 
04/22/2009 02:10:08 AM - CMDPHP: Poller[0] Host[7] DS[44] WARNING: Result from SNMP not valid.   Partial Result: U
04/22/2009 02:10:08 AM - CMDPHP: Poller[0] Host[7] DS[43] WARNING: Result from SNMP not valid.   Partial Result: U
04/22/2009 02:10:08 AM - CMDPHP: Poller[0] Host[7] DS[42] WARNING: Result from SNMP not valid.   Partial Result: U
04/22/2009 02:10:08 AM - CMDPHP: Poller[0] Host[7] DS[41] WARNING: Result from SNMP not valid.   Partial Result: U
04/22/2009 02:10:08 AM - CMDPHP: Poller[0] Host[7] DS[40] WARNING: Result from SNMP not valid.   Partial Result: U
04/22/2009 02:10:08 AM - CMDPHP: Poller[0] Host[7] DS[39] WARNING: Result from SNMP not valid.   Partial Result: U

于是
wget ftp://mirror.switch.ch/pool/1/mirror/scientificlinux/5rolling/i386/SL/net-snmp-utils-5.3.1-24.el5_2.1.i386.rpm
安装获得snmpget snmpwalk snmpbulkwakl snmpgetnext

snmpwalk -v 2c -c public your_remote_ip if 
错误: 
Timeout: No Response from your_remote_ip

于是修改snmpd配置 并启动snmpd
com2sec notConfigUser   default   public--->com2sec notConfigUser   your_snmpd_server_ip public 
#view all     included   .1   80---->view all     included   .1   80

snmpwalk -v 2c -c public your_remote_ip system ok
但 
snmpwalk -v 2c -c public your_remote_ip if 
错误: 
IF-MIB::ifTable = No Such Object available on this agent at this OID

于是再次修改snmpd.conf,并重启snmpd
access   notConfigGroup ""       any       noauth     exact   systemview none none-->
access   notConfigGroup ""       any       noauth     exact   all     none none

再次snmpwalk -v 2c -c public your_remote_ip if
ok

再访问页面终于图和数据出来了

时间: 2024-10-10 15:09:47

cacti不能显示图像数据故障处理办法的相关文章

thinkphp 的save()不能更新数据解决办法

用save()方法始终更新不了数据,又不显示明确的错误信息,找了好久才在手册里看到一句至关重要的话: 为了保证数据库的安全,避免出错更新整个数据表,如果没有任何更新条件,数据对象本身也不包含主键字段的话,save方法不会更新任何数据库的记录. 因此在使用create自动更新数据时,要在表单添加一个隐藏域,其值为数据表的id值! thinkphp 的save()不能更新数据解决办法,布布扣,bubuko.com

ViewPage+frament不预加载下一个Frament数据解决办法

在做一个ViewPage+Frament 滑动数效果,当滑动到每一页时加载哪一页的数据,但是ViewPage会预加载下一也数据,这个问题之前做项目是一直未解决,今天找到一个方法一下子就解决的这个问题,Frament里面有一个setUserVisibleHint方法,setUserVisibleHint每次fragment显示与隐藏都会调用,下面说一下这个方法的使用 @Override public void setUserVisibleHint(boolean isVisibleToUser)

底子数据类型,数据内部存储及数据打印办法

i1底子数据类型有:    char\short\int\unsigned\long\float\double;2数据内部存储 数据内部存储是由"0101二进制构成,当次序员输入一个值 时,内部会转换成补码存储,只是单纯地存储数据,也不知道 将来输出是什么姿势. 例如:inta=-1;unsignintb=0xFFFFFFFF; 这两个数在内部存储是一样的3数据打印办法: 数据打印办法便是抉择内部存储的数据将来输出是什么姿势的上 述中 a和b值在内部存储是一样的所以只要它打印办法一样 效果必定一

cacti监控服务器的数据迁移

应客户需求并且与王同事商讨,在BJD环境缺少一台备用cacti监控服务器,需要将原cacti监控服务器的数据迁移到新的监控主机上去,实现监控数据同步. 迁移思路:cacti数据主机是由mysql数据和rra数据,只需要将这两部分数据备份再恢复到新部署的cacti. 具体操作步骤: 原cacti主机IP:192.168.0.2 备用cacti主机IP:192.168.122.3 1.备份原cacti监控主机上的mysql和rrd数据 ssh 192.168.0.2 备份数据库:#mysqldump

Solr4.6删除数据的办法

Solr4.6的管理界面上,假设不配置数据导入的功能,将看不到清除数据的button.我表示非常遗憾,正好我们线上没有配置数据导入的功能. 网上搜到的各种清理solr数据的HTTP请求,拿到我的solr4.6上測试,报service not found.看了这些请求都是在solr4之前的版本号上执行的.找到了个Solr4.2的Http请求,改了改參数,才干够用. http://solr1.chat.com/staff/update/?stream.body=<delete><query&

显示图像数据的高级接口 UIImage

详解 UIKit:显示图像数据的高级接口 UIImage 转载自:http://www.cocoachina.com/ios/20151207/14376.html 分类:iOS开发 来源:南峰子的技术博客 本系列主要基于Apple官方文档,更多的是对参考文档重点内容的翻译与补充.该系列中的每篇文章会持续更新与补充.如有问题,欢迎通过微博告诉我,我将及时进行更正,谢谢!!! UIImage对象是iOS中用来显示图像数据的高级接口.我们可以从文件,NSData,Quartz图片对象中创建UIIma

Sql server 大数据量插入速度慢或丢失数据解决办法

问题描述:我的设备每秒2000条数据插入数据库,2个设备总共4000条,当在程序里面直接用insert语句插入时,两个设备同时插入大概总共能插入约2800条左右,数据丢失约1200条左右,找了好多解决方法,整理了两种效果比较明显的解决办法: 第一种:使用Sql Server函数: 1.将数据组合成字串,使用函数将数据插入内存表,后将内存表数据复制到要插入的表. 2.组合成的字符换格式:'111|222|333|456,7894,7458|0|1|2014-01-01 12:15:16;1111|

想要隐藏掉gridview中的某一列,但是还想要使用该列数据解决办法。

试过visable=“false”  只能隐藏掉数据,但是访问的时候变成“”了.即无法使用.后来改变使用了模版列可以达到想要的效果.可以隐藏,可以访问. aspx页面: <asp:TemplateField Visible="false">                    <ItemTemplate>                        <asp:label ID="lbdefault" runat="serv

多用户同时处理同一条数据解决办法

在c/s或多层中,如果两个用户同时打开一条记录,修改后提交会产生更新冲突: 据说办法有二:1.打开同时锁定表的记录 2.浦获错误,撤消其中一个用户的修改,但是很少见到具体实现的代码:请大家告诉具体的代码怎么写: 1.打开时如何锁定一条记录? 2.如何扑获更新错误?在delphi中调试时会报"该记录读出后已经被再次修改",而在运行时如何判定错误为更新冲突?因为更新时其他的错误如输入不合法等也可能报错,如何把更新冲突和其他的分开? =============================